ubuntu上thinkphp如何迁移
小樊
33
2025-12-30 08:23:05
Ubuntu上ThinkPHP迁移实操指南
一 迁移前准备
- 备份与同步代码:将本地或旧服务器的完整项目(含public/uploads等上传目录)与依赖一起备份;推荐使用rsync/scp或Git克隆到目标机器,例如:rsync -avz /local/project/ user@server:/var/www/html/project。确保包含**.env**、配置文件与本地日志目录等。
- 导出数据库:使用mysqldump导出生产库,例如:mysqldump -u root -p dbname > backup.sql。
- 环境一致性检查:在目标Ubuntu上确认PHP版本、PHP扩展(如PDO、OpenSSL、MBstring、CURL、GD、XML、ZIP)与扩展版本尽量与源环境一致;安装Nginx/Apache与PHP-FPM;安装Composer用于依赖管理。
- 规划目录与用户:Web根目录建议为**/var/www/html/your_project**,Web服务用户通常为www-data;确认目标机器的磁盘空间与内存满足运行需求。
二 目标服务器环境搭建
- 更新与基础组件:sudo apt update && sudo apt upgrade -y
- 安装PHP与扩展(示例为PHP 8.1,请按项目实际版本调整):sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip -y
- 安装Web服务器:sudo apt install nginx -y(或 sudo apt install apache2 -y)
- 安装Composer:curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer
- 安装数据库(如MySQL/MariaDB):sudo apt install mysql-server -y,并执行 mysql_secure_installation 完成安全初始化
三 代码与数据库迁移
- 传输代码:将项目放置到**/var/www/html/your_project**,确保存在public目录(入口index.php所在);使用Git或SCP/Rsync同步均可。
- 安装依赖:cd /var/www/html/your_project && composer install --no-dev --optimize-autoloader(生产环境忽略开发依赖)。
- 目录权限:sudo chown -R www-data:www-data /var/www/html/your_project;sudo find /var/www/html/your_project -type d -exec chmod 755 {} ; && sudo find /var/www/html/your_project -type f -exec chmod 644 {} ;;确保runtime可写(日志、缓存):sudo chmod -R 755 runtime。
- 创建数据库与用户并导入:
- mysql -u root -p -e “CREATE DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;”
- mysql -u root -p -e “CREATE USER ‘your_user’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;”
- mysql -u root -p -e “GRANT ALL PRIVILEGES ON your_db.* TO ‘your_user’@‘localhost’; FLUSH PRIVILEGES;”
- mysql -u your_user -p your_db < backup.sql
- 配置项目连接与运行模式:编辑**.env**(或相应配置文件)更新DB_HOST/DB_NAME/DB_USER/DB_PASS/DB_PORT;生产环境关闭调试:在config/app.php中设置**‘app_debug’ => false**、按需设置**‘app_timezone’ => ‘Asia/Shanghai’**。
四 Web服务器配置
- Nginx(推荐):将站点根目录指向public,并配置URL重写隐藏index.php。示例:
- root /var/www/html/your_project/public; index index.php;
- location / { try_files $uri $uri/ /index.php?$query_string; }
- location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
- 启用站点:sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl reload nginx
- Apache(可选):启用mod_rewrite,虚拟主机DocumentRoot指向public, 设置AllowOverride All;启用站点并重启Apache。
- 版本与路径核对:确保fastcgi_pass中的PHP-FPM sock路径与已安装PHP版本一致(如php7.4-fpm.sock/php8.1-fpm.sock)。
五 上线验证与常见问题
- 访问与路由:浏览器访问域名/IP,确认首页与路由正常;如路由404,优先检查Nginx的try_files规则是否正确指向index.php。
- 502 Bad Gateway:检查PHP-FPM是否运行(sudo systemctl status php8.1-fpm)、确认fastcgi_pass路径与权限无误。
- 权限错误:确认runtime与上传目录对www-data可写,目录权限为755、文件为644。
- 日志排查:查看Nginx错误日志(/var/log/nginx/error.log)与ThinkPHP日志(runtime/log)定位问题。
- 安全与优化:为域名启用HTTPS(sudo certbot --nginx -d your_domain),并按需配置缓存(如Redis)与OPcache提升性能。