前言
当你的项目需要迁移到其它服务器上部署时,就需要对项目的代码与数据库进行相应的操作,并需要更改配置,方能在迁移后,正常开启服务应用
迁移部署流程
补充
本文作者原部署php项目采用的是docker-compose方式部署php项目,迁移后也是采用此方式部署,特此先提醒阅读者
把原服务器网站根目录迁移至目标服务器
在目标服务器上创建网站根目录
mkdir /data/web
在原服务器上迁移原网站根目录
scp -r /data/web root@xxx.xxx.xxx.xxx:/data/web # 请自行输入密码
在目标服务器上授权网站根目录
chown -R 100:101 /data/web
chmod 777 /data/web
修改目标服务器连接数据库文件
如下为参考,请根据自己的项目进行调整
cat /data/web/data/common.inc.php
<?php
//数据库连接信息
$cfg_dbtype = 'mysql';
$cfg_dbhost = 'xxx.xxx.xxx.xxx'; # 此行为修改内容,为ip地址
$cfg_dbname = 'xxx';
$cfg_dbuser = 'xxx';
$cfg_dbpwd = 'xxx';
$cfg_dbprefix = 'xxx';
$cfg_db_language = 'utf8';
?>
目标服务器部署
cat > docker-compose.yml <<-EOF
version: "3.5"
services:
mysql:
image: mysql:5.7
container_name: mysql5.7
hostname: mysql5.7
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=nature
- MYSQL_USER=nature
- MYSQL_PASSWORD=root@1234
- MYSQL_ROOT_PASSWORD=nature@1234
- SET_CONTAINER_TIMEZONE=true
- CONTAINER_TIMEZONE=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro
- /home/mysql:/var/lib/mysql:Z
command: ["--character-set-server=utf8mb4","--collation-server=utf8mb4_unicode_ci","--lower-case-table-names=1"]
restart: always
tty: true
nginx_php-fpm:
image: richarvey/nginx-php-fpm
container_name: nginx_php-fpm
hostname: nginx_php-fpm
ports:
- 80:80
environment:
- SET_CONTAINER_TIMEZONE=true
- CONTAINER_TIMEZONE=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro
- /data/web:/var/www/html:Z
restart: always
tty: true
EOF
docker-compose up -d
把原服务器网站的数据库迁移至目标服务器上的数据库
在原服务器上备份数据库
docker exec -i mysql5.7 mysqldump -uroot -pnature@1234 nature > nature.sql
把原服务器备份的数据库文件传至目标服务器
scp -r nature.sql root@xxx.xxx.xxx.xxx:/root/nature.sql # 请自行输入密码
在目标服务器上把数据库文件放置mysql5.7容器内
docker cp nature.sql msyql5.7:/
在目标服务器的mysql5.7容器内还原数据库
docker exec -it mysql5.7 /bin/bash
mysql -uroot -pnature@1234
mysql> source /nature.sql
mysql> exit;
访问目标服务器web服务
ip:port或者域名访问,请自行处理
结语
… …