linux

PHP在Linux如何迁移

小樊
50
2025-10-01 12:04:04
栏目: 编程语言

一、迁移前的准备工作

  1. 备份现有环境
    对源服务器上的所有关键数据进行完整备份,包括:
    • 网站文件:使用tar命令打包Web根目录(如/var/www/html),例如sudo tar -czvf php_files_backup.tar.gz /var/www/html
    • PHP配置文件:复制/etc/php目录(包含php.ini及各扩展配置)至备份路径;
    • 数据库:通过mysqldump(MySQL)或pg_dumpall(PostgreSQL)导出所有数据库,例如sudo mysqldump -u root -p --all-databases > all_databases.sql
  2. 检查目标服务器环境
    • 确认目标Linux服务器(如CentOS、Debian)已安装与源服务器兼容的操作系统版本;
    • 安装必要的基础软件(如Web服务器Nginx/Apache、数据库MySQL、PHP核心及扩展),确保PHP版本与源环境一致(如PHP 7.4/8.0)。

二、目标服务器环境搭建

  1. 安装PHP及相关组件
    根据目标服务器的包管理器安装PHP及常用扩展(以Debian为例):
    sudo apt update
    sudo apt install php php-cli php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
    
    若需特定版本(如PHP 8.1),可通过添加第三方仓库(如Remi repo)或源码编译安装。
  2. 配置Web服务器
    • Nginx:创建站点配置文件(如/etc/nginx/sites-available/yourproject),添加以下内容并启用:
      server {
          listen 80;
          server_name yourdomain.com;
          root /var/www/yourproject/public;
          index index.php index.html;
          location / { try_files $uri $uri/ /index.php?$query_string; }
          location ~ \.php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 根据PHP版本调整
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          }
          location ~ /\.ht { deny all; }
      }
      
      执行sudo ln -s /etc/nginx/sites-available/yourproject /etc/nginx/sites-enabled/启用配置,重启Nginx:sudo systemctl restart nginx
    • Apache:启用PHP模块(sudo a2enmod proxy_fcgi setenvif),修改虚拟主机配置,添加PHP处理指令:
      <FilesMatch \.php$>
          SetHandler "proxy:fcgi://unix:/var/run/php/php8.1-fpm.sock"
      </FilesMatch>
      
      重启Apache:sudo systemctl restart apache2

三、迁移核心数据

  1. 迁移网站文件
    使用scprsync将源服务器备份的网站文件复制到目标服务器的Web根目录(如/var/www/yourproject):
    scp -r user@source_server:/var/www/html/* /var/www/yourproject/
    
    调整文件权限,确保Web服务器用户(如www-data)有读写权限:
    sudo chown -R www-data:www-data /var/www/yourproject
    sudo chmod -R 755 /var/www/yourproject/storage  # 若项目有storage目录需单独设置
    
  2. 迁移数据库
    将备份的SQL文件复制到目标服务器,导入数据库:
    scp all_databases.sql user@target_server:/tmp/
    mysql -u root -p < /tmp/all_databases.sql  # MySQL导入
    psql -U postgres -f /tmp/all_databases.sql  # PostgreSQL导入
    
    检查数据库连接配置(如config/database.php),确保用户名、密码、数据库名与目标服务器一致。

四、测试与验证

  1. 功能测试
    通过浏览器访问目标服务器的域名/IP,检查网站首页及核心功能(如表单提交、数据库交互、文件上传)是否正常;查看页面源码,确认PHP代码已正确解析(无原始代码暴露)。
  2. 日志排查
    若出现错误,查看Web服务器错误日志(Nginx:/var/log/nginx/error.log;Apache:/var/log/apache2/error.log)和PHP-FPM日志(/var/log/php8.1-fpm.log),定位并修复问题(如权限不足、配置错误)。

五、收尾工作

  1. 更新DNS解析
    登录域名管理后台,将域名的A记录或CNAME记录指向目标服务器的IP地址,等待DNS生效(通常需几分钟至24小时)。
  2. 清理旧环境
    确认新环境运行稳定后,可删除源服务器上的备份数据(如php_files_backup.tar.gzall_databases.sql),释放存储空间。
  3. 优化与监控
    • 开启PHP OPcache加速代码执行(修改php.iniopcache.enable=1);
    • 配置防火墙允许HTTP(80)/HTTPS(443)端口;
    • 定期备份新环境的数据,设置监控告警(如服务器负载、磁盘空间)。

0
看了该问题的人还看了