搭建solo博客记录
前言:
本来我的博客是自研(vue+.net core 2.1+mysql)旧版博客,当初选择自研说白了为了过下技隐😄 (当然还为了学习巩固技术),后来觉得当时选的模板太丑啦,又不想也没有必要再去自己开发一套了,于是决定不造轮子了,后来选择了 小而美的solo博客系统
下面记录一下搭建solo博客的过程
我的服务器是阿里云最低配ECS服务器(centos) 当时活动直接买的三年
进入正题
参考文档(写得比较详细):https://hacpai.com/article/1565021959471#toc_h2_14
1.安装 docker
官方文档:https://docs.docker.com/engine/install/centos/
#卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装yum-utils软件包
yum install -y yum-utils
#设置Docker仓库(这里使用阿里云地址)
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引
yum makecache fast
#centos8没有该参数去掉fast参数,就可以了
#yum makecache
#yum安装docker
#yum -y install docker
yum install docker-ce docker-ce-cli containerd.io
#设置docker开机自启
systemctl enable docker
#启动docker
systemctl start docker
2.安装mysql
这里由于我的服务器已经安装了mysql,所以没有使用docker再次安装
下面是docker安装mysql教程:
# 安装mysql:5.6,直接docker run 他会自动去官方镜想下载
docker run --restart always --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
# MYSQL_ROOT_PASSWORD=你的数据库密码
#--restart always 设置mysql容器自启动
#-p 3306:3306 左边端口为服务器端口,右边端口为容器mysql端口,意思就是:容器内部端口3306端口映射到主机的3306端口
# docker安装的mysql默认允许远程连接,可以使用Navicat等软件连接数据库
# 进入容器mysql
docker exec -it mysql bash
# 进入数据库 p后面跟你的密码
mysql -uroot -pXXX
# 创建数据库(数据库名:solo;字符集utf8mb4;排序规则utf8mb4_general_ci)
create database solo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 出现Query OK, 1 row affected (0.00 sec)表示成功
#退出数据库
exit
#退出容器
exit
3.安装 solo
docker run --detach --restart always --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=47.240.170.145
上面的命令建议手敲,免得出错,参数说明
--restart always
设置solo容器自启动--env JDBC_PASSWORD="123456"
将 123456 换成你的密码--listen_port=8080
solo监听的端口--server_scheme=http
请求方式,我使用https,因为我下一步就使用nginx配置https--server_host=www.jinjianh.com
你的域名,如果你没有域名可以写 ip 地址--rm
容器停止会自动删除该容器(上面命令我没有使用)。
4. 安装 nginx
由于我的服务器也是安装了nginx的,也没有采用docker再次安装
具体可以看 https://hacpai.com/article/1565021959471#8--%E5%AE%89%E8%A3%85nginx
安装后就开始配置nginx
贴下我的配置:
server
{
listen 80;
listen 443 ssl http2;
server_name www.zhouli.info;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate /var/zhouli/sshnginx/www.zhouli.info.pem;
ssl_certificate_key /var/zhouli/sshnginx/file.zhouli.info.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
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;
error_page 497 https://$host$request_uri;
#SSL-END
location /
{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
proxy_pass http://47.102.105.169:8080;
}
}
下面重启nginx
如果nginx安装在服务器本身就执行 systemctl restart nginx
如果nginx运行在docker中 docker restart nginx
完毕!!!!!!!!
看一下效果: