温馨提示×

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:
    • 排查:getenforcels -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
    • 网站文件与配置亦可纳入定时备份与异地/云端存储。

0