温馨提示×

ubuntu环境下thinkphp项目部署步骤

小樊
42
2025-11-19 00:57:24
栏目: 编程语言

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

一 环境准备

  • 更新系统并安装基础组件(以 Ubuntu 20.04/22.04/24.04 为例,PHP 版本请与项目要求匹配,ThinkPHP 6.x 建议 PHP >= 7.2,推荐 7.4 或 8.x):
    • 安装 Web 与 PHP:sudo apt update && sudo apt install -y nginx php php-fpm php-mysql composer
    • 按需补充常用扩展:sudo apt install -y php-curl php-gd php-mbstring php-xml php-zip php-bcmath
    • 如使用 MySQL:sudo apt install -y mysql-server
  • 验证环境:php -v、composer --version、sudo systemctl status nginx、sudo systemctl status php*-fpm
  • 建议将站点代码放置在 /var/www/ 下,例如:/var/www/your_project,并确保后续将 Web 根目录指向项目的 public 目录。

二 部署代码与依赖

  • 获取项目代码(三选一):
    • Git:git clone /var/www/your_project
    • SCP/Rsync:将本地项目上传至 /var/www/your_project
    • Composer 创建新项目(可选):composer create-project topthink tp6 && mv tp6 /var/www/your_project
  • 安装依赖:cd /var/www/your_project && composer install --optimize-autoloader --no-dev
  • 目录权限与属主(Web 服务用户通常为 www-data):
    • 设置可写目录:chmod -R 755 runtime public/uploads
    • 设置属主:chown -R www-data:www-data /var/www/your_project
  • 生产环境配置:
    • 关闭调试:编辑 config/app.php,将 ‘app_debug’ => false
    • 数据库配置:写入 .envconfig/database.php(建议 .env,注意文件权限)
    • 安全加固:禁止访问敏感文件,例如在 Nginx 中添加 location ~ /.env { deny all; }。

三 Web 服务器配置

  • Nginx 配置要点(站点配置示例,文件可置于 /etc/nginx/sites-available/your_project):
    • 将 root 指向 public;使用 try_files 或 if (!-e) 实现隐藏入口 index.php 的路由
    • fastcgi_pass 请与系统实际 PHP-FPM 套接字一致(如:/run/php/php8.3-fpm.sock 或 php7.4-fpm.sock)
    • 示例片段: 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/php8.3-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,站点配置示例):
    • DocumentRoot 指向项目根目录(非 public),并确保 AllowOverride All
    • public/.htaccess 中启用重写(框架通常自带),或按项目说明配置
    • 启用站点:sudo a2ensite your_project.conf && sudo a2enmod rewrite && sudo systemctl reload apache2
  • 提示:不同 PHP 版本的套接字路径不同,部署前请确认 /run/php/phpX.Y-fpm.sock 的实际路径并在 Nginx/Apache 中保持一致。

四 数据库与初始化

  • 启动并初始化数据库(如未初始化):sudo systemctl start mysql && sudo mysql_secure_installation
  • 创建数据库与用户(示例):
    • CREATE DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    • CREATE USER ‘your_user’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
    • GRANT ALL PRIVILEGES ON your_db.* TO ‘your_user’@‘localhost’;
    • FLUSH PRIVILEGES;
  • 配置项目连接信息:
    • 推荐写入 .env:DB_TYPE=mysql、DB_HOST=127.0.0.1、DB_NAME=your_db、DB_USER=your_user、DB_PASSWORD=StrongPass!、DB_PORT=3306
    • 或编辑 config/database.php 对应项
  • 导入数据结构与初始数据(如有):mysql -u your_user -p your_db < schema.sql
  • 访问域名或 IP 验证首页与接口是否正常。

五 安全与优化

  • 启用 HTTPS(Let’s Encrypt 免费证书,Nginx 示例):
    • 安装 Certbot:sudo apt install certbot python3-certbot-nginx
    • 获取并自动配置证书:sudo certbot --nginx -d your_domain.com
    • 建议开启自动续期(certbot 默认添加 systemd 定时任务)
  • 性能与安全加固:
    • 开启 OPcache(生产环境强烈建议):编辑 /etc/php/8.3/fpm/php.ini(按实际版本),设置 opcache.enable=1 等参数并重启 PHP-FPM
    • 隐藏入口文件:确保 Nginx try_files 或 Apache 重写规则生效
    • 禁止访问敏感文件:如 .env、安装脚本等(Nginx:location ~ /.env { deny all; })
    • 目录权限最小化:仅对 runtime、public/uploads 等目录赋予写权限
  • 日志排查:
    • Nginx:/var/log/nginx/error.log、access.log
    • PHP-FPM:/var/log/php8.3-fpm.log(按实际版本)
    • ThinkPHP:runtime/log/*.log
  • 常见问题速查:
    • 502 Bad Gateway:检查 PHP-FPM 是否运行、套接字路径是否与 Nginx 一致
    • 路由 404/白屏:确认重写规则生效、请求被转发到 index.php
    • Composer 安装慢:可临时使用国内镜像加速(composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/)。

0