安装Docker
使用终端命令安装Docker
更新yum
卸载旧版本:
列出安装过的 Docker 包:
yum list installed | grep docker
|
旧版名称是 Docker,最新社区版 docker-engine, 目前已改名为docker-ce
yum -y remove docker docker-common docker-selinux docker-engine
|
设置yum源:
本文以 yum 安装为例子进行安装安装 yum-utils,使用 yum-config-manager 工具设置 yum 源,后面两个是 devicemapper 驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
|
使用阿里源访问
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
安装Docker
安装成功
启动Docker,并加入开启自启
systemctl start docker 启动 systemctl restart docker 重启 systemctl enable docker 开机启动
|
执行 docker version 查看 Docker 版本号。
并且最新的docker 已经集成了 docker compose
安装halo
创建 halo 目录
mkdir ~/halo && cd ~/halo
|
创建 docker-compose.yaml
此处我们使用 mysql 作为数据库
docker-compose.yaml 的内容如下
version: "3"
services: halo: image: halohub/halo:2.16 restart: on-failure:3 depends_on: halodb: condition: service_healthy networks: halo_network: volumes: - ./halo2:/root/.halo2 ports: - "8090:8090" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"] interval: 30s timeout: 5s retries: 5 start_period: 30s command: - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo - --spring.r2dbc.username=root # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。 - --spring.r2dbc.password=o#DwN&JSa56 - --spring.sql.init.platform=mysql # 外部访问地址,请根据实际需要修改 - --halo.external-url=http://localhost:8090/
halodb: image: mysql:8.1.0 restart: on-failure:3 networks: halo_network: command: - --default-authentication-plugin=caching_sha2_password - --character-set-server=utf8mb4 - --collation-server=utf8mb4_general_ci - --explicit_defaults_for_timestamp=true volumes: - ./mysql:/var/lib/mysql - ./mysqlBackup:/data/mysqlBackup healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"] interval: 3s retries: 5 start_period: 30s environment: # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值 - MYSQL_ROOT_PASSWORD=o#DwN&JSa56 - MYSQL_DATABASE=halo
networks: halo_network:
|
启动 Halo
用浏览器访问 /console 即可进入 Halo 管理页面,首次启动会进入初始化页面。
后续如果需要修改 halo 的配置,直接更新 docker-compose.yaml 后重新启动容器即可
如果遇到DockerHub被DNS污染的情况,会拉取不到镜像,那就取ghcr.io上拉取halo的镜像
nginx 反向代理
安装nginx
sudo yum install nginx #安装 sudo systemctl start nginx #启动 sudo systemctl enable nginx #开机自启
|
配置反向代理
upstream halo { server 127.0.0.1:8090; } server { listen 80; listen [::]:80; server_name www.yourdomain.com; client_max_body_size 1024m; location / { proxy_pass http://halo; proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
|
另外,halo2是用java写的,相比于带后端的其他博客系统,比如typecho,wordpress来说,还是比较吃内存的,一个mysql容器,一个halo容器,一个nginx,占用了1G多内存,没办法,java应用是这样的