Ubuntu使用docker部署gitee上个人博客solo项目
使用云服务器 Ubuntu20.04 LTS
1.安装docker
# 输入docker提示docker安装语句
apt install docker.io
# 从Docker Hub中拉取最新项目镜像
docker pull b3log/solo
2.安装mysql
# 使用以下命令将安装mysql及mysql依赖包
apt install mysql-server
3.创建数据库
// 登陆数据库 密码为空
mysql -uroot -p
// 创建solo数据库
create database solo default character set utf8mb4 collate utf8mb4_general_ci;
// 创建用户
create user 'root'@'127.0.0.1' identified by '123456';
// 赋予新创建的用户权限
grant all privileges on *.* to 'root'@'127.0.0.1';
// 刷新
flush privileges;
4.启动容器
# 根据mysql创建的用户名和密码填入username和password中
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&allowPublicKeyRetrieval=true" \
b3log/solo --listen_port=8080 --server_scheme=http --server_host=182.43.186.137 --server_port=
正常情况下在浏览器直接输入服务器地址加上端口就能访问了
天翼云服务器的80、8080、443端口需要备案才能访问,可以在启动容器时将监听端口直接换成80、8080、443端口之外的宽口,比如8081,就能通过服务器地址结合端口访问了;或者使用nginx反代将8080端口转到服务器的8081端口
5.使用nginx反代保证服务器的安全性
nginx反代就是将外界访问的80端口转到服务器的8080端口
# 安装nginx
apt install nginx
# 配置solo.conf配置文件
vim /etc/nginx/conf.d/solo.conf
将以下nginx反代内容写进配置文件
upstream backend {
server localhost:8080; # Solo 监听端口
}
server {
listen 8081; # 一般可以使用80端口实现直接访问
server_name 182.43.186.137; # 博客域名,没有就填写服务器地址
access_log off;
location / {
proxy_pass http://backend$request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
}
}
# 刷新nginx
systemctl reload nginx
到这步nginx反代就算部署完成,可以访问了
6.因为网页静态资源太多 带宽可能承受不住 在docker上使用动静分离 静态资源从cdn上加载
# 查看docker容器列表
docker ps
# 先停掉并删除这个docker 停掉docker不会影响mysql数据库中数据 使用h2database需要注意
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&allowPublicKeyRetrieval=true" \
b3log/solo --listen_port=8080 --server_scheme=http --server_host=182.43.186.137 --server_port= --static_server_scheme=https --static_server_host=cdn.jsdelivr.net --static_server_port= --static_path=/gh/88250/solo/src/main/resources
通过浏览器中f12可以看到,像一些图片的静态资源的请求网址是 https://cdn.jsdelivr.net 开头的,只是应是cdn需要FQ才能访问,从cdn上返回的状态码都是301,内容还是被重定向了
7.完成部署后需要参照博客上发布的第一遍博客进行相应的配置
博客内容如下:
对了,出于安全考虑请尽快完成如下操作:
登录链滴社区后,在个人设置 - b3 中更新 B3 Key
在 Solo 管理后台 - 工具 - 用户管理中也进行同样的 B3 Key 更新
另外,如果你需要开启评论系统,请参考 Solo 集成 Gitalk 评论系统。