Ubuntu上PHP项目迁移步骤
rsync、scp或FTP工具完整备份项目文件(包括代码、静态资源、上传文件等),并导出数据库(如mysqldump -u root -p your_database > backup.sql)。php -v查看)、扩展(如php-mysql、php-curl、php-gd)与原环境一致,避免因版本差异导致功能异常。sudo apt update && sudo apt upgrade -y,确保系统包为最新版本。sudo apt install apache2 libapache2-mod-php,启用mod_rewrite模块(sudo a2enmod rewrite)以支持URL重写。sudo apt install nginx php-fpm,配置PHP-FPM监听(默认通过Unix socket通信,路径如/var/run/php/php8.1-fpm.sock)。sudo apt install mysql-server,并通过sudo mysql_secure_installation设置root密码及安全选项。curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer。scp(scp -r /local/project/path user@remote_ip:/var/www/html/new_project)或rsync(rsync -avz /local/project/path user@remote_ip:/var/www/html/new_project)将项目文件复制到目标服务器的Web目录(如/var/www/html/)。www-data)有读写权限,运行sudo chown -R www-data:www-data /var/www/html/new_project,并设置目录权限为755、文件权限为644(sudo find /var/www/html/new_project -type d -exec chmod 755 {} \; && sudo find /var/www/html/new_project -type f -exec chmod 644 {} \;)。composer install(若项目有composer.json文件),自动安装第三方库(如Laravel、Monolog等);若使用vendor目录,可直接复制到新环境。sudo mysql -u root -p),创建数据库(CREATE DATABASE your_database;)和用户(CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';),授予权限(GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'localhost';),并导入备份数据(mysql -u your_user -p your_database < backup.sql)。.env、config/database.php),更新数据库连接信息(主机、用户名、密码、数据库名)、域名(若更换域名)等参数。/etc/apache2/sites-available/下创建新配置文件(如your_project.conf),内容如下:<VirtualHost *:80>
ServerName your_domain.com
DocumentRoot /var/www/html/new_project/public
<Directory /var/www/html/new_project/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/your_project_error.log
CustomLog ${APACHE_LOG_DIR}/your_project_access.log combined
</VirtualHost>
启用配置(sudo a2ensite your_project.conf)、禁用默认站点(sudo a2dissite 000-default.conf),并重启Apache(sudo systemctl restart apache2)。/etc/nginx/sites-available/下创建新配置文件(如your_project),内容如下:server {
listen 80;
server_name your_domain.com;
root /var/www/html/new_project/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;
}
location ~ /\.ht {
deny all;
}
}
启用配置(sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/),测试配置语法(sudo nginx -t),并重启Nginx(sudo systemctl restart nginx)。/var/log/apache2/your_project_error.log;Nginx:/var/log/nginx/your_project_error.log)和PHP-FPM日志(/var/log/php8.1-fpm.log),定位并解决问题(如权限不足、依赖缺失、配置错误)。sudo apt install certbot python3-certbot-apache(Apache)或sudo apt install certbot python3-certbot-nginx(Nginx),按提示完成证书申请与配置。cron任务定期备份项目文件和数据库,例如每天凌晨2点备份数据库:0 2 * * * mysqldump -u your_user -p'your_password' your_database > /backups/your_database_$(date +\%F).sql。