温馨提示×

ubuntu上thinkphp如何迁移

小樊
33
2025-12-30 08:23:05
栏目: 编程语言

Ubuntu上ThinkPHP迁移实操指南

一 迁移前准备

  • 备份与同步代码:将本地或旧服务器的完整项目(含public/uploads等上传目录)与依赖一起备份;推荐使用rsync/scpGit克隆到目标机器,例如: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/ApachePHP-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提升性能。

0