一、迁移前的准备工作
tar命令打包Web根目录(如/var/www/html),例如sudo tar -czvf php_files_backup.tar.gz /var/www/html;/etc/php目录(包含php.ini及各扩展配置)至备份路径;mysqldump(MySQL)或pg_dumpall(PostgreSQL)导出所有数据库,例如sudo mysqldump -u root -p --all-databases > all_databases.sql。二、目标服务器环境搭建
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)或源码编译安装。/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。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。三、迁移核心数据
scp或rsync将源服务器备份的网站文件复制到目标服务器的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目录需单独设置
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),确保用户名、密码、数据库名与目标服务器一致。四、测试与验证
/var/log/nginx/error.log;Apache:/var/log/apache2/error.log)和PHP-FPM日志(/var/log/php8.1-fpm.log),定位并修复问题(如权限不足、配置错误)。五、收尾工作
php_files_backup.tar.gz、all_databases.sql),释放存储空间。php.ini:opcache.enable=1);