{"id":13710318,"url":"https://github.com/wangsongyan/wblog","last_synced_at":"2025-05-14T19:04:53.061Z","repository":{"id":22181538,"uuid":"95522849","full_name":"wangsongyan/wblog","owner":"wangsongyan","description":"基于gin+gorm开发的个人博客项目","archived":false,"fork":false,"pushed_at":"2025-03-13T01:20:38.000Z","size":10579,"stargazers_count":1113,"open_issues_count":3,"forks_count":288,"subscribers_count":40,"default_branch":"master","last_synced_at":"2025-04-06T08:09:42.736Z","etag":null,"topics":["adminlte","blog","gin","go","golang","gorm"],"latest_commit_sha":null,"homepage":"http://blog.wangsy.me/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wangsongyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-27T05:59:44.000Z","updated_at":"2025-04-03T01:28:44.000Z","dependencies_parsed_at":"2024-11-21T02:03:31.345Z","dependency_job_id":null,"html_url":"https://github.com/wangsongyan/wblog","commit_stats":{"total_commits":115,"total_committers":2,"mean_commits":57.5,"dds":0.02608695652173909,"last_synced_commit":"9f9746cd39521b354dbb56239881181688b9e05a"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangsongyan%2Fwblog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangsongyan%2Fwblog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangsongyan%2Fwblog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangsongyan%2Fwblog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wangsongyan","download_url":"https://codeload.github.com/wangsongyan/wblog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248710405,"owners_count":21149185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adminlte","blog","gin","go","golang","gorm"],"created_at":"2024-08-02T23:00:54.437Z","updated_at":"2025-04-13T11:45:55.327Z","avatar_url":"https://github.com/wangsongyan.png","language":"Go","funding_links":[],"categories":["Gin project in real world","Repositories"],"sub_categories":[],"readme":"# wblog \n[示例地址](http://blog.wangsy.me/)\n\n## 一、初衷\n作为一名web开发程序员居然没有自己的博客，都不好意思对外宣称自己的开发web的。\n以前也有写博客的习惯，但是都是用的现有的博客网站。\n\n## 二、技术选型\n1. web:[gin](https://github.com/gin-gonic/gin)\n2. orm:[gorm](https://github.com/go-gorm/gorm)\n3. database:[SQLite](github.com/glebarez/sqlite)/[MySQL](https://gorm.io/driver/mysql)\n4. 文件存储:[smms图床](https://sm.ms)/[七牛云存储](https://www.qiniu.com/)\n5. 配置文件 [go-toml](https://github.com/pelletier/go-toml)\n\n## 三、项目结构\n```\n-wblog\n    |-conf 配置文件目录\n    |-controllers 控制器目录\n    |-helpders 公共方法目录\n    |-models 数据库访问目录\n    |-static 静态资源目录\n        |-css css文件目录\n        |-images 图片目录\n        |-js js文件目录\n        |-libs js类库\n    |-system 系统配置文件加载目录\n    |-tests 测试目录\n    |-views 模板文件目录\n    |-main.go 程序执行入口\n```\n## 四、TODO\n- [x] 文章、页面访问统计\n- [x] Github登录发表评论\n- [x] RSS\n- [x] 定时备份系统数据\n- [x] 邮箱订阅功能\n- [x] 云存储切换\n- [x] 支持MySQL数据库\n- [x] 导航栏配置\n- [ ] 系统日志\n- [ ] 网站统计\n\n## 五、运行项目\n```\ngit clone https://github.com/wangsongyan/wblog\ncd wblog\ngo mod tidy\ngo run main.go\n```\n\n## 六、项目发布\n1. 本地发布\n   - 下载安装[goreleaser](https://github.com/goreleaser/goreleaser/releases)\n   - 执行命令`goreleaser release --snapshot --clean`\n2. Github Actions\n   ```bash\n   git tag \"v0.0.2\"\n   git push origin v0.0.2\n   ```\n3. 部署文件清单\n   - conf #配置文件目录\n   - static #静态资源目录\n   - views #模板目录\n   - wblog #可执行文件\n\n## 七、使用方法\n### 使用说明\n1. 执行`go run main.go -g`或编译后执行`wblog -g`生成示例配置文件`conf/conf.sample.toml` (示例配置文件均为系统默认配置，可全部删除仅保留自己所需配置)\n2. 修改conf.toml，设置signup_enabled = true\n3. 访问http://xxx.xxx/signup 注册管理员账号 \n4. 修改conf.toml，设置signup_enabled = false\n\n### 注意事项\n1. 图床切换（**需开启对应图床配置**）\n   ```toml\n   file_server = \"smms\"\n   #file_server = \"qiniu\"\n   ```\n2. 如果需要保存图片到七牛云，请自行申请[七牛云存储空间](https://www.qiniu.com/)，并修改配置文件填写\n    ```toml\n   [qiniu]\n   enabled = true\n   accesskey = 'AK'\n   secretkey = 'SK'\n   fileserver = '自定义域名，例如https://example.com'\n   bucket = 'wblog'\n   ```\n3. 如果需要保存图片到[sm.ms图床](https://sm.ms)，请自行注册账号并获取APIKey，并修改配置文件\n   ```toml\n   [smms]\n   enabled = true\n   apikey = '' \n   ```\n4. 如果需要github登录评论功能请自行注册[github oauthapp](https://github.com/settings/developers)，并修改配置文件填写\n    ```toml\n   [github]\n   enabled = true\n   clientid = ''\n   clientsecret = ''\n   redirecturl = 'https://example.com/oauth2callback'\n   ```\n5. 如果需要使用邮件订阅功能，请自行填写\n   ```toml\n   [smtp]\n   enabled = true\n   username = '用户名'\n   password = '密码'\n   host = 'smtp.163.com:25'\n   ```\n6. GoLand运行时，修改`Run/Debug Configurations` \u003e `Output Directory`选择到项目根目录，否则报模板目录找不到\n7. 数据库切换，使用MySQL数据库时，请先创建`wblog`数据库(数据库名自便，与配置文件一致即可)\n   ```toml\n   [database]\n   dialect = 'sqlite'\n   dsn = 'wblog.db?_loc=Asia/Shanghai'\n   #dialect = 'mysql'\n   #dsn = 'root:mysql@/wblog?charset=utf8\u0026parseTime=True\u0026loc=Asia%2FShanghai'\n   ```\n\n## 八、效果图\n\n![file](screenshots/index.png)\n\n![file](screenshots/blog.png)\n\n![file](screenshots/admin.png)\n\n## 九、捐赠\n如果项目对您有帮助，打赏个鸡腿吃呗！  \n\u003cimg src=\"https://raw.githubusercontent.com/wangsongyan/wblog/master/screenshots/alipay.png\" width = 40% height = 40% /\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/wangsongyan/wblog/master/screenshots/weixin.png\" width = 40% height = 40% /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangsongyan%2Fwblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwangsongyan%2Fwblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangsongyan%2Fwblog/lists"}