温馨提示×

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

小樊
38
2025-12-18 15:01:27
栏目: 编程语言

Ubuntu部署ThinkPHP项目的标准流程

一 环境准备

  • 更新系统并安装基础组件(以 Ubuntu 20.04/22.04 为例,PHP 建议 7.4+):
    • 安装 Web 与 PHP:sudo apt update && sudo apt install -y nginx php php-fpm php-mysql php-mbstring php-xml php-curl
    • 安装数据库:sudo apt install -y mysql-server
    • 安装 Composer:curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer
  • 验证安装:php -v、composer -v、sudo systemctl status nginx、sudo systemctl status mysql
  • 如在国内,建议为 Composer 配置镜像加速:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

二 上传与安装依赖

  • 选择项目目录(示例:/var/www/html/your_project),将代码上传或克隆到该目录,确保 Web 访问根目录指向项目的 public 目录。
  • 安装依赖:cd /var/www/html/your_project && composer install --optimize-autoloader --no-dev
  • 配置数据库(优先使用 .env,或在 config/database.php 中设置):
    • .env 示例:
      • [DATABASE]
      • TYPE=mysql
      • HOSTNAME=127.0.0.1
      • DATABASE=your_db
      • USERNAME=your_user
      • PASSWORD=your_pass
      • PORT=3306
  • 创建数据库并导入结构/数据(略)
  • 设置目录权限与属主(确保 runtime 可写):
    • sudo chown -R www-data:www-data /var/www/html/your_project
    • sudo chmod -R 755 /var/www/html/your_project
    • 如运行队列/缓存写入,按需放宽 runtime 子目录权限(不建议 777)
  • 生产环境建议关闭调试:编辑 config/app.php,将 ‘app_debug’ => false

三 Web服务器配置

  • Nginx 配置示例(站点文件:/etc/nginx/sites-available/your_project
    • 要点:root 指向 public;使用 try_files 将所有请求转发给 index.php;将 .php 请求交给 PHP-FPM
    • 示例:
      • server {
        • listen 80;
        • server_name your_domain.com;
        • 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/php7.4-fpm.sock;
          • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          • include fastcgi_params;
        • }
        • location ~ /.env { deny all; }
      • }
    • 启用站点并校验:sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl reload nginx
  • Apache 配置要点(启用 mod_rewrite,并确保项目目录 AllowOverride All
    • 可使用基于域名的 VirtualHost,DocumentRoot 指向 public,或在项目根目录放置 .htaccess 实现隐藏 index.php 的路由
  • 注意
    • PHP-FPM 监听套接字路径因版本不同可能为:/run/php/php7.4-fpm.sock 或 /run/php/php8.x-fpm.sock,配置需与实际一致
    • 如采用 PATH_INFO 模式,确保重写规则与框架路由一致

四 启动与验证

  • 重启服务:sudo systemctl reload nginx && sudo systemctl status php7.4-fpm(按实际版本调整)
  • 访问测试:打开浏览器访问 http://your_domain/,应看到应用首页或路由输出
  • 查看日志定位问题:
    • Nginx:/var/log/nginx/error.log
    • PHP-FPM:/var/log/php7.4-fpm.log(按实际版本)
    • 应用日志:项目 runtime 目录下的日志文件

五 安全与优化建议

  • 安全
    • 关闭调试:‘app_debug’ => false
    • 禁止访问敏感文件:location ~ /.env { deny all; };隐藏版本与服务器信息
    • 使用强口令与数据库最小权限;开启防火墙仅放行 80/443
  • HTTPS
    • 使用 Let’s Encrypt 免费证书:sudo apt install certbot python3-certbot-nginx && sudo certbot --nginx -d your_domain.com
  • 性能
    • 启用 OPcache(生产环境强烈建议)
    • 使用 Redis 等缓存驱动替代文件缓存
    • Composer 安装时使用 --optimize-autoloader --no-dev;按需执行框架优化命令(如:php think optimize)
  • 维护
    • 使用 Git 拉取更新后执行:composer install --optimize-autoloader --no-dev
    • 定期备份代码与数据库,并做好回滚方案

0