halo 博客搭建
安装 docker
#安装 Docker
yum -y install docker
#启动 Docker 后台服务
service docker start
#测试运行 hello-world
docker run hello-world
安装 halo
docker run --detach --name halo --network=host \
--rm -it -d \
ruibaby/halo --listen_port=8090:8090 --server_scheme=http --server_host=www.blon.club
--server_scheme=http
请求方式,暂时使用 http,后面我们会换成 https
--server_host=www.blon.club
你的域名,如果你没有域名可以写 ip 地址
--rm
:停止之后自动删除容器。
命令执行完成后,没有报错,使用 docker ps
查看halo是否在容器列表内,存在则表示启动成功,此时你可以通过你的域名或者是服务器ip地址进行访问
安装 nginx
安装 nginx 前,我们现在本地建立几个文件,用于存放 nginx 的配置文件等
# 切换到服务器根目录
cd /
# 创建主目录
mkdir dockerData
# 创建文件
mkdir dockerData/nginx dockerData/nginx/conf dockerData/nginx/logs dockerData/nginx/www dockerData/nginx/ssl
dockerData/nginx
用于存放 docker 下 nginx 自定义文件
dockerData/nginx/conf
存放 nginx 配置文件
dockerData/nginx/log
存放 nginx 日志文件
dockerData/nginx/www
存放 nginx 访问的资源文件
dockerData/nginx/ssl
存放 ssl 证书
启动 nginx
docker run --name nginx -p 80:80 -d --rm nginx
完事之后,通过 docker ps
查看nginx
是否在运行,确认无误后在浏览器访问你的域名加端口号,当然不加也可以。
接下来执行下面命令导出配置文件
docker cp nginx:/etc/nginx/nginx.conf /dockerData/nginx/conf/nginx.conf
导出配置文件 nginx.conf
docker cp nginx:/etc/nginx/conf.d /dockerData/nginx/conf/conf.d
导出配置为你 nginx.conf
执行docker stop nginx
,会自动删除现在的 nginx 容器,然后执行如下命令重新启动一个 nginx 容器
docker run -d -p 80:80 --name nginx \
-v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /dockerData/nginx/www:/usr/share/nginx/html \
-v /dockerData/nginx/logs:/var/log/nginx nginx
- -v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ 挂载配置文件nginx.conf
- -v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d 挂载配置文件default.conf
- -v /dockerData/nginx/www:/usr/share/nginx/html 挂载项目文件
- -v /dockerData/nginx/logs:/var/log/nginx 挂载配置文件
配置 nginx
打开配置文件
vim /dockerData/nginx/conf/conf.d/default.conf
参考如下配置
server {
listen 443;
server_name localhost;
ssl on;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
# 下面两行后面添加ssl证书的路径,
ssl_certificate /ssl/2899462_blon.club.pem;
ssl_certificate_key /ssl/2899462_blon.club.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
# …………此处省略
}
#注意在最后添加,注意缩进以及作用域
server{
listen 80;
server_name localhost;
rewrite ^(.*) https://$host$1 permanent;
}
注:ssl证书下载下来解压,将里面的两个文件放到/dockerData/mginx/ssl
下,至于如何申请ssl证书,请自行百度
监听443端口
docker stop nginx # 停止容器
docker rm nginx # 删除容器
# 启动新的
docker run -d -p 80:80 -p 443:443 --name nginx \
-v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /dockerData/nginx/ssl:/ssl/ \
-v /dockerData/nginx/www:/usr/share/nginx/html \
-v /dockerData/nginx/logs:/var/log/nginx nginx
完事之后,访问自己的域名,可以看到前面的http变成了https
将 halo 通过 nginx 反向代理实现 https 访问
docker stop halo 删除容器,然后重新启动一个halo容器
docker run --detach --name halo --network=host \
--rm -it -d \
ruibaby/halo --listen_port=8090:8090 --server_scheme=https --server_host=www.blon.club --server_port=
然后我们去配置 nginx 配置文件,实现 nginx 反向代理
打开配置文件
vim /dockerData/nginx/conf/conf.d/default.conf
按如下修改即可,其中http后面的域名替换为自己的即可
location / {
proxy_pass http://www.blon.club:8090;
#root /usr/share/nginx/html;
#index index.html index.htm;
}
最后重启 nginx,docker restart nginx
,然后浏览器访问你的域名
至此,halo搭建、部署、反向代理就全部完成了,估计玩过solo的小伙伴应该都能感到这份教程很熟悉,没错,就是这样,这份教程很大一部分是借鉴了从零开始安装solo博客,也可以说是半个转载吧。
参考:
https://halo.run/guide/
https://hacpai.com/article/1565021959471