Ubuntu LNMP版本升级与迁移指南
升级前需完成以下关键步骤,避免数据丢失或服务中断:
sudo mysqldump -u root -p --all-databases > full-backup.sql)、Nginx配置文件(sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak、sudo cp -r /etc/nginx/sites-available /etc/nginx/sites-available.bak)、网站程序文件(如/var/www/html目录)。sudo apt update && sudo apt upgrade -y。sudo apt remove --purge nginx。sudo apt install nginx,系统会自动安装最新稳定版。nginx -v,确认版本号已更新。sudo apt remove --purge mysql-server mysql-client mysql-common mariadb-server mariadb-client。sudo apt install mysql-server mariadb-server,安装过程中会提示设置root密码。mysqldump导出旧数据库,导入新数据库(参考迁移部分步骤)。mysql --version或mariadb --version,确认版本号。sudo apt remove --purge php*。sudo apt install php php-mysql php-curl php-gd php-mbstring php-xml php-zip(根据应用需求选择扩展)。sudo systemctl restart php-fpm;修改Nginx配置中的fastcgi_pass指令,指向新的PHP-FPM socket(如unix:/run/php/php8.2-fpm.sock)。php -v,确认版本号。配置文件适配:
server块中的root指令(指向网站根目录)、location ~ \.php$块中的fastcgi_pass(需与新PHP-FPM socket一致)、include指令(如include enable-php.conf需指向正确路径)。php.ini中的upload_max_filesize、post_max_size等参数是否符合应用需求;检查扩展是否启用(如extension=pdo_mysql.so)。my.cnf中的bind-address(允许远程访问则设为0.0.0.0,仅本地则设为127.0.0.1)、character_set_server(建议设为utf8mb4)等参数正确。应用兼容性检查:
pdo_mysql、mbstring、redis)已安装并启用(sudo phpenmod 扩展名)。rewrite规则(如try_files $uri $uri/ /index.php?$query_string;),参考框架官方文档调整。755(sudo chmod -R 755 /var/www/html),文件权限为644(sudo find /var/www/html -type f -exec chmod 644 {} \;),确保Nginx(www-data用户)和PHP-FPM(www-data用户)有访问权限。测试与验证:
ab(Apache Benchmark)或wrk工具测试网站响应时间,确保升级后性能未下降。/var/log/nginx/error.log)、PHP-FPM(/var/log/php-fpm.log)的错误日志,及时处理404(路径错误)、500(服务器内部错误)、502(Bad Gateway,PHP-FPM未启动)等问题。root指令是否指向正确网站根目录;确保location ~ \.php$块中的fastcgi_pass指向正确的PHP-FPM socket;确认try_files指令配置正确(如try_files $uri $uri/ /index.php?$query_string;)。/var/log/php-fpm.log),常见原因包括PHP扩展缺失(如pdo_mysql)、代码语法错误(如未闭合的括号)、权限问题(如文件无法读取)。./install.sh mphp),并通过update-alternatives切换默认版本,或在Nginx配置中指定fastcgi_pass指向对应PHP-FPM socket。