服务器
-
申请云服务器(这里笔者选择腾讯云,使用学生套餐便宜)
-
选择系统(这里笔者建议使用自己熟悉的系统,如果你不熟悉 linux 可以跟随笔者选择的系统)
-
创建云服务器登录方式选择密码方式(方便上传文件)
-
配置创建好的云服务器安全组,配置如下
申请域名
- 查询域名
- 购买域名(购买完域名,需要备案才能解析和访问)
- 备案域名(备案周期在 30 天左右)
安装服务
- 登录服务器(mac 直接打开终端,Windows 系统需要安装软件 Secure CRT)
ssh -p 22 系统用户名@公网ip
# 例如
ssh -p 22 ubuntu@10.22.33.49
- 安装 docker
sudo apt-get install docker.io
- 安装 nginx
sudo apt-get install nginx
- 安装 mycli(命令行操作 mysql 的智能提示工具)
sudo apt-get install mycli
- 安装 vim
sudo apt-get install vim
- 使用 docker 安装 solo 和 mysql
# 下载mysql 镜像
sudo docker pull mysql
# 启动镜像 MYSQL_ROOT_PASSWORD=mysql的root密码
docker run -d --name mysql-5.7 --network=host -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
# 登录mysql
mycli
# 如果登录提示如下错误
# 执行如下即可
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
# 创建数据库
CREATE DATABASE solo DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci
# 退出mycli工具
quit
# 下载solo博客镜像
sudo docker pull b3log/solo
# 启动solo镜像
# JDBC_PASSWORD(mysql的密码)
# listen_port(启动端口)
# server_scheme(访问协议)
# server_host(请求的地址)
# server_port(请求的端口)
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="root" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
b3log/solo --listen_port=8080 --server_scheme=https --server_host=adongs.com --server_port=80
# 查看启动结果
sudo docker ps
# 结果如下就表示启动成功(STATUS 都为UP表示启动成功)
配置域名和代理
-
申请 SSL(笔者在腾讯云申请的免费 SSL,第三方免费 SSL)
-
下载 SSL 到本地,并解压
-
上传 SSL 到云服务器
scp -r SSL文件目录 系统用户名@公网i:/home/系统用户名
- 配置 nginx
#登录云服务器,执行如下
sudo vim /etc/nginx/sites-enabled/default
#将文本里面的内容全删除,拷贝如下文本内容
#修改server_name为自己的域名
#修改ssl_certificate和ssl_certificate_key的文件路径
#修改proxy_pass为自己的域名和solo启动端口
server {
listen 443 ssl;
server_name www.xxx.com,xxx.com;
ssl_certificate /etc/nginx/ssl/xxx.crt;
ssl_certificate_key /etc/nginx/ssl/xxx.key;
location / {
proxy_pass http://www.xxx.com:8080;
}
}
server {
listen 80;
listen [::]:80;
server_name www.xxx.com,xxx.com;
return 301 https://$host$request_uri;
}
# 保存并退出后重启nginx
nginx -s reload
调试
1.打开自己的域名如下
配置自动更新
1.创更新脚本
docker-restart-solo.sh
#
# Solo docker Update and restart scripts
#
# The script is added to the crontab
#
# 注意要修改配置
# JDBC_PASSWORD(mysql的密码)
# JDBC_URL(mysq连接地址)
# listen_port(启动端口)
# server_scheme(访问协议)
# server_host(请求的地址)
# server_port(请求的端口)
#
docker pull b3log/solo
docker stop solo
docker rm solo
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
b3log/solo --listen_port=8080 --server_scheme=https --server_host=adongs.com --server_port=80
2.修改脚本权限
#最后是你的脚本绝对路径
sudo chmod 744 /opt/docker-restart-solo.sh
3.加入 crontab
# ubuntu默认没有开启cron日志记录,需要开启
# 修改rsyslog
sudo vim /etc/rsyslog.d/50-default.conf
#将cron前面的注释符去掉
cron.* /var/log/cron.log
#编辑crontab
crontab -e
#在最后一行加入如下内容(最后是你脚本的绝对路径),每天凌晨3点执行脚本
* 3 * * * /opt/docker-restart-solo.sh
# control + X 退出,选择Y保存,查看定时任务
crontab -l
相关资料
感谢
B3log 开源社区
问题
安装有什么问题请留言
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于