一、遷移前的準備工作
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
);