在Ubuntu上部署ThinkPHP项目,其实并没有想象中那么复杂。只要把基础环境搭好,再跟着配置走一遍,基本上就能跑起来。下面来一步步拆解这个过程。
ThinkPHP在Ubuntu上的部署流程
1. 前提准备
动手之前,先确保Ubuntu服务器已经完成了基础配置(比如系统更新),并且具备三大核心组件:Web服务器(Nginx/Apache)、PHP环境、数据库(MySQL/MariaDB)。可以用下面这些命令快速检查一下版本:

php -v # 确认PHP版本≥7.0(ThinkPHP 6.x需≥7.2)nginx -v # 若使用Nginxapache2 -v # 若使用Apachemysql --version# 确认数据库服务已安装
2. 安装基础环境
2.1 安装PHP及扩展
ThinkPHP对PHP扩展有依赖,核心组件需要一次性装齐:
sudo apt updatesudo apt install php php-cli php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip -y
注:如果用的是PHP 8.x,记得把
php-mysql换成php-mysqlnd——原生驱动,性能更好。
2.2 安装Web服务器(以Nginx为例)
sudo apt install nginx -ysudo systemctl start nginxsudo systemctl enable nginx# 设置开机自启
2.3 安装Composer(PHP依赖管理工具)
curl -sS https://getcomposer.org/installer | phpsudo mv composer.phar /usr/local/bin/composer
3. 配置Web服务器
3.1 Nginx配置(推荐)
创建一个专属的站点配置文件,比如thinkphp.conf,然后添加下面的内容:
sudo nano /etc/nginx/sites-a vailable/thinkphp
server {listen 80;server_name your_domain_or_ip;# 替换为域名或公网IProot /var/www/html/thinkphp/public;# ThinkPHP项目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;}# 可选:禁止访问敏感目录location ~ /(vendor|runtime)/ {deny all;}}
启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-a vailable/thinkphp /etc/nginx/sites-enabled/sudo nginx -t# 测试配置语法sudo systemctl restart nginx
3.2 Apache配置(可选)
如果要用Apache,记得先启用mod_rewrite,再创建虚拟主机:
sudo a2enmod rewritesudo systemctl restart apache2
创建配置文件(如thinkphp.conf):
sudo nano /etc/apache2/sites-a vailable/thinkphp.conf
ServerName your_domain_or_ipDocumentRoot /var/www/html/thinkphp/publicOptions Indexes FollowSymLinksAllowOverride AllRequire all granted
启用配置并重启Apache:
sudo a2ensite thinkphp.confsudo systemctl restart apache2
4. 部署ThinkPHP项目
4.1 上传项目文件
通过FTP(比如FileZilla)、SCP或者Git,把项目文件传到服务器/var/www/html/目录下,可以新建一个thinkphp文件夹。
4.2 安装项目依赖
进入项目根目录,执行Composer安装:
cd /var/www/html/thinkphpcomposer install --no-dev --optimize-autoloader# 生产环境禁用开发依赖
4.3 配置数据库
编辑.env文件(位于项目根目录),修改数据库连接信息:
DB_TYPE=mysqlDB_HOST=127.0.0.1DB_NAME=your_database_nameDB_USER=your_database_userDB_PASSWORD=your_database_passwordDB_PORT=3306
4.4 设置目录权限
这一步很关键——确保Web服务器用户(通常是www-data)对项目目录有读写权限:
sudo chown -R www-data:www-data /var/www/html/thinkphpsudo chmod -R 755 /var/www/html/thinkphpsudo chmod -R 775 /var/www/html/thinkphp/runtime# 运行时目录需可写
5. 启动与测试
5.1 启动服务
sudo systemctl restart nginx# 或apache2sudo systemctl restart php8.1-fpm# 根据PHP版本调整
5.2 访问项目
在浏览器输入http://your_domain_or_ip,如果看到ThinkPHP的欢迎页面,那就说明部署成功了。
6. 优化与安全(可选)
- 关闭调试模式:编辑
config/app.php,把app_debug设为false。 - 配置HTTPS:用Let’s Encrypt免费证书,提升数据传输安全。
- 开启OPcache:编辑
php.ini,启用opcache.enable=1,加速PHP执行。 - 定期备份:备份项目文件与数据库,防止数据丢失。
按照上面这些步骤操作,ThinkPHP项目在Ubuntu上就能稳定运行了。如果遇到权限问题或者路由失效,不妨回头检查一下Nginx/Apache配置中的try_files指令,以及目录权限设置——往往是这两个地方容易出问题。