Aries - 基于 Go + Vue 的现代化博客系统

本贴最后更新于 736 天前,其中的信息可能已经时异事殊

Aries - 基于 Go + Vue 的现代化博客系统


项目介绍

主题管理功能还在开发中!

Aries 是基于 Gin + GORM + MySQL + Vue + H5 开发的现代化博客系统,博客主要分为后台管理端展示端

Github 仓库地址:https://github.com/zhaoyangkun/aries

  • 后台管理端采用前后端分离的开发模式,通过 JSON 格式数据进行前后端交互。
  • 展示端基于传统模式开发,采用 Go Template 模板引擎来渲染页面,有利于 SEO 优化。
  • 数据库层没有设置物理外键,所有外键操作都在业务层处理。
  • 评论功能通过评论组件方式实现。

预览

预览地址:苍茫误此生博客 (cangmang.xyz)

功能特性

  1. 文章
    • 编辑器采用 vditor,提升中文 markdown 使用体验
    • 文章标签、分类管理
    • 文章置顶
    • 文章加密
    • 自定义文章链接
    • 文章排序
    • 草稿箱和回收站
    • 从文件导入文章
  2. 外观
    • 自定义菜单
    • 主题导入
    • 主题切换
    • 主题设置
    • 主题编辑
  3. 评论
    • 回收站
    • 评论审核
    • 邮件通知
  4. 图床
    • 支持 sm.ms,imgbb 和 腾讯云 cos 存储
    • 多图片上传
    • 图片管理
  5. 页面
    • 日志管理
    • 自定义页面
    • 图库管理
  6. 友情链接
    • 添加、修改友链
    • 友链分类
  7. 用户
    • 修改用户信息
    • 修改密码
  8. 设置
    • 网站设置
    • 邮件设置
    • 图床设置
    • 评论设置
    • 参数设置

部分截图

  • 后台管理端

    登录

    写文章

    图片上传

  • 博客展示端

    首页

    文章详情页

    分类列表页

    友链页

    图库页

如何在本地运行 Aries

  • 运行环境:

    请确保已安装好以下环境,配置好 go mod 代理和 npm 国内镜像源

    • Go 1.15
    • Node.js v12+
    • MySQL 5.7+

    如何配置 go mod 代理:https://goproxy.io/zh/

    如何配置 npm 国内镜像源:https://www.cnblogs.com/luckyhui28/p/12268313.html

  • 克隆项目代码到本地:

    git clone https://github.com/zhaoyangkun/aries.git
    
  • 新建名称为 aries 的数据库,注意字符集为 utf8m64,字符编码为 utf8m64_general_ci

  • 修改项目目录下 config/develop.yaml 配置文件中的数据库连接密码:

    # 服务器配置
    server:
      mode: "debug"                               # 运行模式
      port: "8088"                                # 端口
      token_expire_time: 3600                     # JWT token 过期时间(单位:秒)
      allowed_refers: ["localhost", "127.0.0.1"]  # 允许的 referer
    # 数据库配置
    db:
      host: "127.0.0.1"       # 主机地址
      user_name: "root"       # 用户名
      password: "19960331"    # 密码
      database: "aries"       # 数据库名
      port: "3306"            # 端口
      time_zone: "Local"      # 时区
      max_idle_conn: 10       # 最大空闲连接数
      max_open_conn: 20       # 最大打开连接数
    
  • 进入项目根目录,安装 gin 项目相关依赖:

    go mod download
    go get -u github.com/swaggo/swag/cmd/swag
    
  • 进入项目根目录,启动 gin 项目:

    go run main.go
    
  • 进入项目中的 d2-admin 目录,安装 npm 依赖:

    npm install
    
  • npm 依赖安装完毕后,启动 Vue 项目:

    npm run serve
    
  • ginVue 项目启动完毕后,在浏览器中访问 http://localhost:8080 即可进入后台管理。

  • 在浏览器中访问 http://127.0.0.1:8088 可进入博客展示端。

部署

仅支持 docker 部署,需要具备一定的 linux 基础。

确保服务器已配置好 docker 运行环境,并安装好 mysqlmysql 版本不低于 5.7。

  • mysql 中新建名称为 aries 的数据库,注意字符集为 utf8m64,字符编码为 utf8m64_general_ci

  • 在主目录下创建 .aries 文件夹:

    mkdir ~/.aries
    
  • 创建配置文件 aries.yaml

    touch ~/.aries/aries.yaml
    

    aries.yaml 配置条目具体可以参考:https://github.com/zhaoyangkun/aries/blob/master/config/product.yaml

    可先将 product.yaml 所有内容复制到 aries.yaml 中再做修改。

    注意

    • mode 要设置为 release,表示生产环境;
    • 注意校对数据库的主机地址帐号密码
    • 使用重置密码功能的话,需配置 smtp
  • 拉取 aries 镜像:

    docker pull zhaoyangkun/aries
    
  • 运行容器:

    docker run -p 8088:8088 --name aries --restart=always --network=host -v ~/.aries:/root/.aries -d zhaoyangkun/aries
    
  • 反向代理:
    推荐使用 nginx ,由于 aries 默认运行在 8088 端口上,需要在云服务器安全组开放 8088 端口,同时 nginx 反代 8088 端口到 80 端口,这里给出一段 nginx 配置文件的示例:

    upstream aries_server {
        server cangmangai.cn:8088; # cangmangai.cn 为域名,也可以改为公网 IP,8088 表示监听端口
    }
    
    # http 重定向到 https
    server {
        listen 80; # 80 为 http 默认端口
        server_name cangmangai.cn;
        rewrite ^(.*) https://$host$1 permanent;        
    }
    
    # https 配置
    server {
        charset  utf-8;
        listen 443 ssl; # 443 为 https 默认端口
        server_name  cangmangai.cn;
        ssl_certificate    /ssl/cn.pem; # .pem证书路径
        ssl_certificate_key  /ssl/cn.key; # .key证书路径
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        location / {
            proxy_pass http://aries_server$request_uri; # 反向代理,将 8088 端口转发到 443 端口
            proxy_set_header  Host $http_host;
            proxy_set_header  X-Real-IP  $remote_addr;
            client_max_body_size  10m;
        }
        location /bdunion.txt {
            alias   /ssl/bdunion.txt;
        }
    }
    
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    497 引用 • 1387 回帖 • 283 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    266 引用 • 665 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
4 操作
zyk 在 2022-11-16 11:52:26 更新了该帖
zyk 在 2021-03-26 16:15:55 更新了该帖
zyk 在 2021-03-26 16:13:25 更新了该帖
zyk 在 2021-03-26 15:52:27 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...