迁移Nginx+Nps+Halo的核心,不在于简单的文件搬运,而在于重新理顺穿透、代理与应用之间的逻辑链条。在这个架构中Nginx是对外的门面,Nps是连接内外的桥梁,而Halo则是承载Joe主题博客内容的核心。本次恢复过程通过对配置的精确复刻与环境适配,确保了这条链路在新环境下能够无缝衔接迁移恢复网站
备份迁移服务器
#在旧服务器执行直接将压缩流传给新服务器并在对应位置解压(极速迁移)
sudo tar -czvp /home/nps /home/web /home/docker/halo /etc/nginx /etc/nps | ssh root@新服务器IP "tar -xzvph -C /"
恢复数据
- 安装Docker
#以Ubuntu/Debian为例
sudo apt update
sudo apt install -y docker.io docker-compose
#启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
- 安装Nginx
#安装nginx
sudo apt install -y nginx
#确认安装位置(通常在 /etc/nginx)
nginx -v
#启动并设置自启
sudo systemctl start nginx
sudo systemctl enable nginx
- 安装Nps
#切换目录
sudo mkdir -p /home/nps
cd /home/nps
#请根据实际版本号替换下载链接
sudo wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
sudo tar -zxvf linux_amd64_server.tar.gz
#执行安装命令,它会将配置文件放到 /etc/nps
sudo ./nps install
sudo nps start
启动容器
- 切换到/home/docker/halo
#执行docker-compose up -d
version: "3"
services:
halo_server:
image: halohub/halo:1.5.4
container_name: halo_server
restart: on-failure:3
depends_on:
- halo_mysql
- halo_redis
networks:
halo_network:
volumes:
- ./:/root/.halo
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "8090:8090"
environment:
- SERVER_PORT=8090
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
- SPRING_DATASOURCE_URL=jdbc:mysql://halo_mysql:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=“填写密码”
- HALO_ADMIN_PATH=admin
- HALO_CACHE=redis
- SPRING_REDIS_PORT=6379
- SPRING_REDIS_DATABASE=0
- SPRING_REDIS_HOST=halo_redis
- SPRING_REDIS_PASSWORD=“填写密码”
halo_mysql:
image: mysql:8.0.27
container_name: halo_mysql
restart: on-failure:3
networks:
halo_network:
command: --default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
volumes:
- /etc/localtime:/etc/localtime:ro
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports:
- "3306:3306"
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_DATASOURCE_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=“填写密码”
- MYSQL_DATABASE=halodb
halo_redis:
image: redis
container_name: halo_redis
restart: on-failure:3
networks:
halo_network:
volumes:
- ./redis/data:/data
- ./redis/logs:/logs
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_REDIS_PASSWORD 变量值
command: redis-server --requirepass “填写密码”
ports:
- "6379:6379"
networks:
halo_network:
重点答疑
-
二进制的安装已经使用了旧服务器打包传输的 nps nginx配置文件在启动后直接生效,halo博客因为是docker安装在执行命令后也是使用备份的数据即可生效
-
Nginx+Nps+Halo配置文件都是使用备份的,更详细的调整可以进去编辑实际项目调整


评论区