使用docker部署属于自己的Halo
1. 安装docker
以下方式来自菜鸟教程
1.1 使用 Docker 仓库进行安装,清华大学镜像
sudo dnf -y install dnf-plugins-core
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
1.2 安装docker
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
1.3 设置自启动并运行docker
sudo systemctl start docker
sudo systemctl enable docker
docker官方参考文档:https://docs.docker.com/engine/install/
2. 通过docker部署Halo
下载并创建容器
docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 -e JVM_OPTS="-Xmx256m -Xms256m" registry.fit2cloud.com/halo/halo:2.21
此命令默认使用自带的 H2 Database 数据库
3. 部署nginx,配置反向代理
下载并创建nginx容器
# 创建挂载用的文件夹
mkdir -p /data/docker/nginx/{conf,conf.d,html,logs}
#获取镜像
docker pull nginx:latest
# 创建临时容器获取Nginx默认配置
docker run -d --name nginx nginx
# 存放 Nginx 主配置文件
mkdir -p /data/docker/nginx/conf
# 存放虚拟主机配置
mkdir -p /data/docker/nginx/conf/conf.d
# 存放 Nginx 日志
mkdir -p /data/docker/nginx/log
# 存放网站静态文件
mkdir -p /data/docker/nginx/html
# 拷贝默认配置文件
docker cp nginx:/etc/nginx/nginx.conf /data/docker/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /data/docker/nginx/conf/
docker cp nginx:/usr/share/nginx/html /data/docker/nginx/
docker stop nginx
docker rm nginx
# 部署docker容器
docker run --restart=always -d --name nginx \
-p 80:80 \
-p 443:443 \
-v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/docker/nginx/log:/var/log/nginx \
-v /data/docker/nginx/html:/usr/share/nginx/html \
-v /mnt/volumn:/mnt/volumn \
nginx:latest
修改ngixn.conf配置文件,使网站可以通过域名访问
server {
listen 80;
server_name demo.fun www.demo.fun;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name demo.fun www.demo.fun;
ssl_certificate SLL证书.pem的存放位置;
ssl_certificate_key SSL证书.key的存放位置;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass docker创建的虚拟网桥docker0的IP:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
4. 测试能否访问
# 此时应该可以ping通域名
ping demo.fun
ping www.demo.fun
# 浏览器直接访问域名
https://www.demo.fun
5. 可能遇到的问题
80、443、8090端口没有放行,云服务的控制台里检查安全组里查看是否添加规则,终端里检查防火墙
# 检查防火墙状态
systemctl status firewalld
# 检查防火墙端口规则
firewall-cmd --list-all
# 永久开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重载配置生效
firewall-cmd --reload