centos lamp网站迁移步骤
小樊
40
2025-12-27 12:04:39
CentOS LAMP 网站迁移步骤
一 迁移前准备
- 明确迁移窗口并通知业务方,尽量在低峰时段进行,避免写入冲突。
- 梳理并记录源站关键信息:
- Apache 虚拟主机配置(如:/etc/httpd/conf.d/your_site.conf)、DocumentRoot、日志路径。
- PHP 版本与扩展(如:gd、mbstring、xml、mysqlnd)、php.ini 关键参数。
- MariaDB/MySQL 版本、字符集(建议 utf8mb4)、数据库名、用户及权限。
- 应用配置文件中涉及的绝对路径、URL 重写规则(.htaccess)、计划任务(crontab)、文件上传目录等。
- 版本与兼容性评估:尽量保持源端与目标端 Linux、Apache、MariaDB/MySQL、PHP 版本一致;如存在差异,先在测试环境验证兼容性。
- 网络与防火墙:确保目标机开放 80/443,数据库端口(默认 3306)按需放通;云环境注意安全组策略。
- 目标机初始化:更新系统(如:sudo yum update -y),安装基础工具(如:wget、vim、lsof),并准备 Web 目录(如:/var/www/html)。
二 搭建目标环境
- 安装与启动 Apache:
- 安装:sudo yum install -y httpd
- 启动与开机自启:sudo systemctl start httpd && sudo systemctl enable httpd
- 安装与初始化 MariaDB(或 MySQL):
- 安装:sudo yum install -y mariadb-server mariadb
- 启动与开机自启:sudo systemctl start mariadb && sudo systemctl enable mariadb
- 安全初始化:sudo mysql_secure_installation
- 安装 PHP 及常用扩展(以 EPEL 为例):
- 安装:sudo yum install -y epel-release
- 安装扩展:sudo yum install -y php php-mysqlnd php-gd php-mbstring php-xml
- 重启 Apache:sudo systemctl restart httpd
- 防火墙放行(示例):
- sudo firewall-cmd --permanent --zone=public --add-service=http
- sudo firewall-cmd --permanent --zone=public --add-service=https
- sudo firewall-cmd --reload
- 如源站使用 HTTPS/自定义端口,同步准备证书与端口策略。
三 迁移网站文件与数据库
- 文件迁移(保持权限与时间戳,推荐 rsync):
- 示例:rsync -avz --delete -e ssh /var/www/html/ user@target_ip:/var/www/html/
- 或:scp -r /path/to/source_project/ user@target_ip:/var/www/html/
- 目录权限与属主(Apache 运行用户通常为 apache):
- sudo chown -R apache:apache /var/www/html/your_project
- sudo chmod -R 755 /var/www/html/your_project
- 可写目录(如上传):sudo chmod -R 775 /var/www/html/your_project/uploads
- 数据库迁移:
- 源端导出(建议压缩):
- mysqldump -u root -p your_database > your_database.sql
- gzip your_database.sql
- 传输与导入:
- scp your_database.sql.gz user@target_ip:/tmp/
- 目标端:gunzip /tmp/your_database.sql.gz
- 创建库:mysql -u root -p -e “CREATE DATABASE your_database;”
- 导入数据:mysql -u root -p your_database < /tmp/your_database.sql
- 跨服务器授权(如数据库在源端):
- GRANT ALL PRIVILEGES ON your_database. TO ‘your_user’@‘target_ip’ IDENTIFIED BY ‘your_password’;*
- FLUSH PRIVILEGES;
- 同机部署时,PHP 连接主机用 localhost。
- 配置调整:
- 更新 wp-config.php/config.php 等中的数据库主机、库名、用户、密码。
- 替换代码与配置中的绝对路径为新的 DocumentRoot。
- 校验 .htaccess 与 虚拟主机 配置是否匹配新环境。
四 切换与验证
- 配置语法与生效:
- 语法检查:sudo apachectl configtest
- 重启服务:sudo systemctl restart httpd
- 基础连通性:
- 临时文件测试:echo “” > /var/www/html/info.php,访问 http://target_ip/info.php 验证 PHP 版本与扩展 加载正常。
- 功能回归:
- 访问站点首页与前台功能,登录后台(如 /wp-admin),验证数据库连接、上传、表单提交等核心流程。
- 切换流量:
- 灰度或一次性切换 DNS 记录至新服务器;如使用 CDN/反向代理,同步更新源站地址与回源策略。
- 回滚预案:保留源站运行与最近一次备份,出现异常可快速切回。
五 常见问题与加固
- 权限与 SELinux:
- 排查:getenforce、ls -lZ;必要时临时 sudo setenforce 0 定位是否为 SELinux 引起,生产环境建议配置正确的 SELinux 策略 而非长期关闭。
- 数据库连接失败:
- 检查 MariaDB/MySQL 运行状态(sudo systemctl status mariadb)、用户权限、主机名/端口、以及 PHP 扩展(mysqlnd 等) 是否启用。
- PHP 扩展缺失:
- 安装对应扩展(如:sudo yum install -y php-gd),重启 httpd。
- 防火墙与安全组:
- 确认 80/443(及数据库端口)已放行,云上检查安全组规则。
- 备份与自动化(迁移后建议建立):
- 数据库定时备份脚本(示例保留 30 天):
- 示例脚本要点:
- mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME-$(date +%F_%H%M%S).sql.gz
- find $BACKUP_DIR -name “*.sql.gz” -mtime +30 -delete
- 定时任务:0 2 * * * /path/to/backup_mysql.sh
- 网站文件与配置亦可纳入定时备份与异地/云端存储。