前言

我是用的artalk搭建的评论系统,部署在我自己的服务器上,在本地部署成功后,由于GitHubPages的页面使用https访问,而服务器数据访问使用的是http,导致在GitHubPages界面上加载失败。

我的解决方案:由于使用https需要ssl证书,获取ssl证书又需要域名,所以在阿里云上购买了一个便宜的域名。由于云服务提供商的ssl证书太贵了(我记得前几年还免费来着,晕),所以选择从Let’s Encrypt 上获取ssl证书(有效期为90天,需要定期更新,但是免费)。这时候又遇到问题了,由于我使用的是京东云的服务器,由于没有备案,https请求全被拦截了,现在又恰逢过年,没时间备案(同时我也不太想去搞,问东问西的,时间跨度也挺长)。评论系统搭建暂时搁置,后续可能会选择备案,或者选择购买国外的服务器搭建,或者看能否不用https,或者暂时就不搭建了,等以后再说,反正也没人看不是。

总结:如果你有已备案的国内的服务器,并且有域名和ssl证书,那么下面可以看,否则就不用看了。更好的推荐是使用第三方提供的评论系统了。

安装环境

  • Ubuntu22.04
  • 京东云2h4g服务器

参考文献

artalk安装

我选择docker安装,简单易用(刚好之后要学习go,用go安装过,但是存在问题,老实了)

首先你需要在服务器上安装一个 Docker(这我就不详细介绍了,没有得小伙伴可以去网上搜搜)。

然后新建一个文件夹用于存放 Artalk 文件(/root/artalk),然后执行下面的命令,只需要修改中文提示的地方:

# 安装artalk
cd artalk
docker run -d \
    --name artalk \
    -p 服务器端口:23366 \
    -v $(pwd)/data:/data \
    -e "TZ=Asia/Shanghai" \
    -e "ATK_LOCALE=zh-CN" \
    -e "ATK_SITE_DEFAULT=站点名" \
    -e "ATK_SITE_URL=站点URL" \
    --network artalk \
    artalk/artalk-go

# 创建管理员账户
docker exec -it artalk artalk admin

浏览器输入 http://站点URL 进入 Artalk 后台登录界面,剩下的看着需要修改就行。

数据库安装

同样选用docker安装数据库,我选择使用mysql5.7的docker镜像来部署服务,将数据库和artalk部署在同一个docker网络下(因为artalk会访问数据库,artalk会自动初始化数据库,但是貌似需要自己手动创建数据库)

# 创建mysql容器,和artalk部署在同一个网络下
docker run -d \
  --name mysql \
  -e MYSQL_ROOT_PASSWORD=YourPassword \
  -p 3306:3306   \
  -v $(pwd)/mysql:/mysql \
  --network artalk  mysql:5.7

# 进入mysql中创建artalk数据库,注意创建数据库时字符,需要和artalk中相同
docker exec -it mysql mysql -uroot -p

最后在artalk的管理界面填写数据库信息就行,数据库地址就写数据库容器名称

到现在已经可以使用了,但是仍未开启https,在https界面是加载不出使用http的评论系统的

开启https

这是我当前选择的方案

  1. 首先就是购买域名,ssl证书是和域名绑定的,没有域名就拿不到ssl证书
  2. 买了域名之后就是添加DNS解析(国内服务器可能还需要备案,真羡慕国外的服务器)
  3. DNS解析配置完毕就是获取ssl证书,云服务器提供商ssl证书太贵了,我选择使用Let’s Encrypt 提供的ssl证书

以下是ssl证书获取,我是通过DNS解析TXT通过的验证,并没有使用nginx(因为服务器没备案,通过域名的http请求都被拦截了,哭)

# 安装certbot
sudo apt update
sudo apt install certbot

# 使用DNS验证申请
sudo certbot certonly --manual --preferred-challenges dns -d 你的域名

# 按照提示在域名解析中添加TXT记录,确认添加成功后再按确认

构建之余

也是用过docker-compose搭建,这个确实简单点,这是我当时写的配置文件,后续使用这个创建过。由于mysql的docker已经创建了,所以没有添加,仅供参考。

services:
  artalk:
    container_name: artalk
    image: artalk/artalk-go
    restart: unless-stopped
    ports:
      - 8080:23366
    volumes:
      - ./data:/data
    networks:
      - artalk
    environment:
      - TZ=Asia/Shanghai
      - ATK_LOCALE=zh-CN
      - ATK_SITE_DEFAULT=网站名称
      - ATK_SITE_URL=网站URL
      - ATK_ADMIN_USERS_0_NAME=管理员名称
      - ATK_ADMIN_USERS_0_EMAIL=邮箱地址
      - ATK_ADMIN_USERS_0_PASSWORD=(bcrypt)$2y$10$HnxBjnRnYF4Teg7jqedNL.MBtRcmNkk.ZmRU1SecB.afXIz.uVd6q
      - ATK_ADMIN_USERS_0_BADGE_NAME=管理员
      - ATK_ADMIN_USERS_0_BADGE_COLOR=#0083FF
networks:
  artalk:
    external: true