ThinkPHP 作为国内广泛使用的 PHP 框架,在 Ubuntu 系统中的部署过程有许多关键细节值得关注。下面将完整流程逐步拆解,涵盖环境搭建、配置调整到最终上线测试,确保每一步都扎实稳健。
ThinkPHP 在 Ubuntu 中的完整部署指南
1. 环境准备工作
在 Ubuntu 上运行 ThinkPHP 前,需要先搭建好底层环境:Web 服务器(推荐 Nginx 或 Apache)、PHP 运行环境、数据库(通常选用 MySQL),以及 Composer 依赖管理工具,这几项缺一不可。

那么,具体需要完成哪些准备步骤呢?
首先,确保系统软件包为最新版本:
sudo apt update && sudo apt upgrade -y安装 Nginx(推荐使用,性能更优):
sudo apt install nginx -y sudo systemctl start nginx && sudo systemctl enable nginx安装 PHP 及所需扩展。注意,ThinkPHP 6.x 要求最低 PHP 7.4,建议直接使用 PHP 8.1:
sudo apt install php php-cli php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip -y最后安装 Composer,这是 PHP 的依赖管理工具,必不可少:
curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer
2. 配置 Web 服务器(以 Nginx 为例)
ThinkPHP 的请求入口位于 public 目录,因此必须将该目录设为 Web 根目录,并正确配置 URL 重写以支持 PATHINFO 模式,否则路由将完全失效。
操作流程:
新建一个 Nginx 配置文件:
sudo nano /etc/nginx/sites-a vailable/thinkphp_project写入以下内容,请将
your_domain_or_ip和项目路径替换为实际值:server { listen 80; server_name your_domain_or_ip; root /var/www/html/thinkphp_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:/var/run/php/php8.1-fpm.sock; # 根据实际 PHP 版本调整 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }启用该站点配置,然后测试语法并重启 Nginx:
sudo ln -s /etc/nginx/sites-a vailable/thinkphp_project /etc/nginx/sites-enabled/ sudo nginx -t # 检查配置文件语法 sudo systemctl restart nginx
3. 部署 ThinkPHP 项目
首先,将项目文件上传到服务器。可通过 SCP、Git 或 FTP 等方式。假设上传目录为
/var/www/html/thinkphp_project。进入项目目录,使用 Composer 安装生产环境依赖:
cd /var/www/html/thinkphp_project composer install --no-dev --optimize-autoloader配置数据库连接。编辑项目根目录下的
.env文件:DB_TYPE=mysql DB_HOST=127.0.0.1 DB_NAME=your_database DB_USER=your_username DB_PASSWORD=your_password DB_PORT=3306此步极为关键——设置目录权限。Web 服务器用户(通常为
www-data)必须拥有读写权限。特别是runtime目录,必须可写:sudo chown -R www-data:www-data /var/www/html/thinkphp_project sudo chmod -R 755 /var/www/html/thinkphp_project sudo chmod -R 775 runtime
4. 启动项目并验证
确保 PHP-FPM 服务已启动并设置为开机自启:
sudo systemctl start php8.1-fpm && sudo systemctl enable php8.1-fpm在浏览器中输入服务器的 IP 地址或域名。若成功显示 ThinkPHP 欢迎页面,则说明部署顺利完成。
5. 安全与性能优化(强烈推荐执行)
关闭调试模式。在
.env文件中将APP_DEBUG设为false,线上环境不应暴露任何内部信息。启用 HTTPS 加密传输。可使用 Let's Encrypt 免费证书,一行命令即可完成:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your_domain_or_ip开启 OPcache 以提升 PHP 执行效率。编辑
/etc/php/8.1/fpm/php.ini,找到opcache.enable=1并取消注释即可生效。
常见问题排查
502 Bad Gateway:首先检查 PHP-FPM 是否正常运行(
sudo systemctl status php8.1-fpm),然后确认 Nginx 配置中fastcgi_pass路径与实际的 PHP-FPM sock 文件一致。路由无法访问:90% 的原因为 Nginx 配置缺少
try_files $uri $uri/ /index.php?$query_string;指令,或该location /块被其他配置覆盖。权限错误:如果遇到“Permission denied”提示,请返回目录权限步骤,确认
www-data用户对项目目录的拥有权,并检查runtime目录是否真正具备可写权限。
