ubuntu上thinkphp项目如何部署
Ubuntu上部署ThinkPHP项目的完整步骤
一、环境准备
在部署前需安装Web服务器(Nginx/Apache)、PHP环境(含必要扩展)、Composer(依赖管理)、数据库(MySQL/MariaDB)。以Ubuntu 22.04+为例,推荐使用Nginx + PHP-FPM组合(性能更优):
# 更新系统包
sudo apt update &
&
sudo apt upgrade -y
# 安装Nginx
sudo apt install nginx -y
# 安装PHP 8.1(或更高版本)及扩展(ThinkPHP必需)
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
关键说明:ThinkPHP 6.x要求PHP≥7.1,建议使用PHP 8.0+以获得更好性能;PHP扩展需包含pdo_mysql(数据库连接)、mbstring(多字节字符串处理)、xml(XML解析)等。
二、部署ThinkPHP项目
1. 上传项目代码
将本地ThinkPHP项目上传至Ubuntu服务器,推荐存放在/var/www/目录下(需root权限):
# 进入Web目录
cd /var/www
# 使用Git克隆项目(或scp/rsync上传)
git clone https://github.com/top-think/think.git your_project
# 或直接创建项目(Composer方式,推荐)
composer create-project topthink/think your_project
注意:项目目录名(如your_project)可根据需求自定义。
2. 安装项目依赖
进入项目目录,通过Composer安装依赖:
cd /var/www/your_project
composer install --no-dev --optimize-autoloader
说明:--no-dev表示不安装开发依赖(减少资源占用),--optimize-autoloader优化自动加载性能。
3. 配置数据库
编辑.env文件(项目根目录),填写数据库连接信息:
nano /var/www/your_project/.env
修改以下内容(根据实际数据库信息调整):
[DATABASE]
TYPE=mysql
HOSTNAME=127.0.0.1
DATABASE=your_db_name
USERNAME=your_db_user
PASSWORD=your_db_password
PORT=3306
PREFIX=tp_
说明:若未创建数据库,需先登录MySQL创建:
sudo mysql -u root -p
CREATE DATABASE your_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'your_db_user'@'localhost' IDENTIFIED BY 'your_db_password';
GRANT ALL PRIVILEGES ON your_db_name.* TO 'your_db_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
4. 设置目录权限
ThinkPHP的runtime目录(缓存、日志等)需可写,项目目录所有权需归属Web服务器用户(通常为www-data):
# 设置项目目录所有者
sudo chown -R www-data:www-data /var/www/your_project
# 设置runtime目录权限(755可写)
sudo chmod -R 755 /var/www/your_project/runtime
三、配置Web服务器(Nginx)
1. 创建Nginx虚拟主机
新建配置文件(以项目域名为例,如your_domain.com):
sudo nano /etc/nginx/sites-available/your_domain.conf
添加以下内容(关键配置说明见注释):
server {
listen 80;
server_name your_domain.com www.your_domain.com;
# 替换为你的域名或IP
root /var/www/your_project/public;
# 必须指向public目录(入口文件所在)
index index.php index.html;
# URL重写(支持PATHINFO,解决路由失效问题)
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP请求转发(关键:关联PHP-FPM)
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# 引入FastCGI配置
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
# 根据PHP版本调整(如php7.4-fpm.sock)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问.env文件(防止敏感信息泄露)
location ~ /\.env {
deny all;
}
# 日志记录
access_log /var/log/nginx/your_domain_access.log;
error_log /var/log/nginx/your_domain_error.log;
}
关键提醒:
root必须指向public目录(ThinkPHP的入口文件index.php所在);try_files规则确保路由正常工作(将请求转发至index.php);fastcgi_pass需与PHP-FPM的监听地址一致(详见下一步)。
2. 启用站点配置
创建符号链接,将配置文件链接至sites-enabled目录:
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
3. 测试并重启Nginx
检查配置语法是否正确:
sudo nginx -t
若输出syntax is ok,则重启Nginx应用配置:
sudo systemctl restart nginx
四、生产环境优化
1. 关闭调试模式
修改config/app.php,关闭调试模式(避免暴露敏感信息):
'app_debug' =>
false,
'app_trace' =>
false,
2. 隐藏入口文件(可选)
通过Nginx重写规则隐藏public目录(需调整项目结构,将public设为根目录):
# 在server块中添加
location / {
rewrite ^/(.*)$ /public/$1 last;
}
3. 启用HTTPS(推荐)
使用Let’s Encrypt免费证书,提升网站安全性:
# 安装Certbot
sudo apt install certbot python3-certbot-nginx -y
# 获取证书并自动配置Nginx
sudo certbot --nginx -d your_domain.com -d www.your_domain.com
说明:证书有效期为90天,到期后可通过sudo certbot renew自动续期。
五、常见问题排查
1. 502 Bad Gateway
- 原因:PHP-FPM未运行或Nginx配置中的
fastcgi_pass路径错误。 - 解决:
# 检查PHP-FPM状态 sudo systemctl status php8.1-fpm # 若未运行,启动服务 sudo systemctl start php8.1-fpm # 确认Nginx中的fastcgi_pass路径(需与PHP-FPM的listen一致)
2. 路由失效
- 原因:Nginx未配置
try_files规则,无法转发路由请求至index.php。 - 解决:检查Nginx配置中的
location /块,确保包含try_files $uri $uri/ /index.php?$query_string;。
3. 权限问题
- 原因:Web服务器用户(
www-data)无权访问项目目录。 - 解决:
sudo chown -R www-data:www-data /var/www/your_project sudo chmod -R 755 /var/www/your_project
通过以上步骤,ThinkPHP项目即可在Ubuntu服务器上成功部署。部署后访问http://your_domain.com(或HTTPS地址),即可看到项目首页。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu上thinkphp项目如何部署
本文地址: https://pptw.com/jishu/743139.html
