温馨提示×

ubuntu中thinkphp项目的部署流程是什么

小樊
44
2026-01-03 05:57:53
栏目: 编程语言

Ubuntu下部署ThinkPHP项目的标准流程


一 环境准备与安装

  • 更新系统并安装基础组件(以 Ubuntu 20.04/22.04 为例,PHP 建议 7.4+):
    • 安装 Web 与数据库:sudo apt update && sudo apt install -y nginx mysql-server
    • 安装 PHP 与常用扩展:sudo apt install -y php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-gd php-bcmath
    • 安装 Composer:curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer
    • 国内可加速 Composer:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    • 启动并设置开机自启:sudo systemctl enable --now nginx php-fpm mysql
    • 验证:php -v、sudo systemctl status nginx php-fpm mysql
  • 说明:ThinkPHP 可在 Linux 稳定运行,常见组合为 Nginx + PHP-FPM + MySQL(或 Apache)。

二 部署项目代码

  • 方式一(全新项目,推荐):
    • 进入站点目录:cd /var/www
    • 创建项目:composer create-project topthink your_project
  • 方式二(已有项目):
    • 上传或克隆代码到:/var/www/your_project
    • 安装依赖:cd /var/www/your_project && composer install --optimize-autoloader --no-dev
  • 目录与权限:
    • Web 根目录指向项目的 public:root /var/www/your_project/public;
    • 确保运行时可写:chmod -R 755 runtime && chown -R www-data:www-data /var/www/your_project
  • 数据库准备(示例):
    • 登录 MySQL:sudo mysql -u root -p
    • 创建库与用户:CREATE DATABASE dbname CHARACTER SET utf8mb4; CREATE USER ‘user’@‘localhost’ IDENTIFIED BY ‘password’; GRANT ALL ON dbname.* TO ‘user’@‘localhost’; FLUSH PRIVILEGES;
  • 说明:ThinkPHP 5/6 均可通过 Composer 创建或拉取,部署时务必将 public 设为 Web 入口。

三 Web 服务器配置

  • Nginx 配置示例(/etc/nginx/sites-available/your_project):
    • 核心要点:root 指向 public;开启 PATH_INFO 支持;将 .php 请求转发给 PHP-FPM
    • 示例:
      server {
          listen 80;
          server_name your_domain.com;
          root /var/www/your_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:/run/php/php7.4-fpm.sock;  # 按实际 PHP 版本调整
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include fastcgi_params;
          }
      
          # 安全:禁止访问敏感文件
          location ~ /\.env { deny all; }
          location ~ /\.ht { deny all; }
      }
      
    • 启用站点:sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled && sudo nginx -t && sudo systemctl reload nginx
  • Apache 配置要点(可选):
    • 启用重写:sudo a2enmod rewrite && sudo systemctl restart apache2
    • 虚拟主机 DocumentRoot 指向 public,并配置 允许 AllowOverride All
  • 说明:Nginx 需使用 try_files 将请求转发至 index.php;Apache 需启用 mod_rewrite 并保证 public/.htaccess 生效。

四 应用配置与安全加固

  • 关闭调试与配置连接:
    • 生产环境关闭调试:在 config/app.php 设置 ‘app_debug’ => false
    • 数据库配置写入 .env(或相应配置文件),确保 hostname/database/username/password/port 正确
  • 权限与保护:
    • runtime 目录可写(见上),Web 禁止访问 .env.ht*
  • 可选优化:
    • 启用 OPcache(生产环境强烈建议)
    • 使用 Redis 等缓存会话/配置,提升性能与并发
  • 说明:关闭调试可避免泄露敏感信息,配合目录权限与 Web 访问限制提升安全性。

五 上线验证与常见问题

  • 访问与验证:
    • 访问域名或 http://服务器IP,确认首页/接口正常;查看 /var/log/nginx/error.log/var/log/php-fpm.log 排查
    • 如为 TP5,直接访问 /public 入口验证路由是否生效
  • 常见问题速查:
    • 502 Bad Gateway:检查 PHP-FPM 是否运行,Nginx 的 fastcgi_pass 路径是否与本机 php-fpm.sock 一致(如:/run/php/php7.4-fpm.sock)
    • 路由失效/404:确认 Nginx 使用 try_files 将请求转发到 index.php
    • Composer 安装慢:启用国内镜像加速
    • 数据库连接失败:核对 .env 或 database.php 配置、数据库是否允许远程/本地访问、用户权限是否正确
  • 说明:优先查看错误日志定位问题,核对版本与路径一致性可快速解决多数部署故障。

0