centos

centos lamp项目迁移指南

小樊
39
2025-11-08 03:41:21
栏目: 智能运维

CentOS LAMP项目迁移指南
LAMP(Linux + Apache + MySQL + PHP)是经典的开源Web架构,迁移项目时需确保环境一致性、数据完整性和配置兼容性。以下是分步指南:

一、迁移前准备

  1. 目标环境准备

    • 确保目标CentOS系统(如CentOS 7/8)已更新至最新版本:sudo yum update -y
    • 安装基础工具:sudo yum install -y wget vim lsof
    • 关闭防火墙(开发环境临时操作)或放行HTTP/HTTPS流量:
      sudo firewall-cmd --permanent --zone=public --add-service=http
      sudo firewall-cmd --permanent --zone=public --add-service=https
      sudo firewall-cmd --reload
      
    • 关闭SELinux(避免权限问题,生产环境建议配置策略而非关闭):
      sudo setenforce 0
      sudo sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
      
  2. 源端与目标端环境一致性

    • 确认目标端LAMP组件版本与源端兼容(如PHP 7.4/8.0、MySQL 5.7/8.0)。若版本差异大,需提前调整源端或目标端版本。
    • 记录源端关键配置:Apache虚拟主机(/etc/httpd/conf.d/your_site.conf)、MySQL字符集(utf8mb4)、PHP扩展(如gdmbstring)。

二、LAMP环境搭建(目标端)

若目标端未搭建LAMP环境,需先完成基础安装:

  1. 安装Apache

    sudo yum install -y httpd
    sudo systemctl start httpd
    sudo systemctl enable httpd
    
  2. 安装MariaDB(MySQL替代)

    sudo yum install -y mariadb-server mariadb
    sudo systemctl start mariadb
    sudo systemctl enable mariadb
    # 运行安全脚本设置root密码
    sudo mysql_secure_installation
    
  3. 安装PHP及扩展

    • 使用EPEL仓库安装基础PHP:
      sudo yum install -y epel-release
      sudo yum install -y php php-mysqlnd php-gd php-mbstring php-xml
      
    • 重启Apache加载PHP:sudo systemctl restart httpd

三、项目文件迁移

  1. 传输文件至目标端
    使用scprsync将源端项目文件复制到目标端Web目录(默认/var/www/html):

    scp -r /path/to/source_project/ user@target_centos_ip:/var/www/html/
    
  2. 设置目录权限
    确保Web用户(apachewww-data)对项目目录有读写权限:

    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
    
  3. 调整配置文件

    • 若项目包含config.phpwp-config.php(WordPress)等配置文件,修改数据库连接信息(主机名、用户名、密码、数据库名)。
    • 若源端使用绝对路径(如/usr/local/apache2/htdocs),需替换为目标端路径(/var/www/html)。

四、数据库迁移

  1. 导出源端数据库
    在源端使用mysqldump导出数据库(以WordPress为例):

    mysqldump -u root -p your_database > your_database.sql
    # 压缩减少传输量
    gzip your_database.sql
    
  2. 传输并导入数据库
    将压缩文件传输至目标端,解压后导入:

    scp your_database.sql.gz user@target_centos_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
    
  3. 配置数据库权限
    若目标端与源端不在同一服务器,需授权远程访问:

    GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'target_centos_ip' IDENTIFIED BY 'your_password';
    FLUSH PRIVILEGES;
    

    若在同一服务器,确保PHP连接数据库的主机名为localhost

五、配置验证与测试

  1. Apache配置检查

    • 确认虚拟主机配置正确(如ServerNameDocumentRoot):
      sudo vim /etc/httpd/conf.d/your_site.conf
      
    • 测试配置语法:sudo apachectl configtest(无错误输出则正常)。
    • 重启Apache:sudo systemctl restart httpd
  2. PHP功能测试
    在项目根目录创建info.php

    <?php phpinfo(); ?>
    

    访问http://target_centos_ip/info.php,确认PHP版本、扩展(如mysqlndgd)加载正常。

  3. 项目功能测试

    • 访问项目URL(如http://target_centos_ip/your_project),检查前端页面显示。
    • 登录后台(如WordPress后台http://target_centos_ip/your_project/wp-admin),验证数据库连接。
    • 测试上传、表单提交等核心功能。

六、常见问题排查

  1. 权限问题
    若项目无法访问,检查目录权限(chown -R apache:apache)和SELinux状态(getenforce)。若SELinux开启,可临时设置为permissive模式排查:sudo setenforce 0

  2. 数据库连接失败

    • 确认MySQL服务运行:sudo systemctl status mariadb
    • 检查php.ini中的数据库扩展是否启用(extension=mysqlnd)。
    • 确认数据库用户权限(GRANT语句是否正确)。
  3. PHP扩展缺失
    若项目报错缺少扩展(如Call to undefined function gd_imagecreate()),安装对应扩展:

    sudo yum install -y php-gd
    sudo systemctl restart httpd
    

通过以上步骤,可完成CentOS环境下LAMP项目的迁移。迁移后需定期备份数据,并监控服务器性能(如Apache连接数、MySQL负载)。

0
看了该问题的人还看了