在Ubuntu上部署ThinkPHP前,需安装PHP、Web服务器(Nginx/Apache)、Composer及数据库(如MySQL)。推荐使用Nginx+PHP-FPM组合,性能更优。
sudo apt update && sudo apt upgrade -y
sudo apt install php php-cli php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip -y
sudo apt install nginx -y
sudo systemctl start nginx && sudo systemctl enable nginx
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
将本地ThinkPHP项目上传至服务器(如/var/www/html/your_project),推荐使用scp或Git克隆:
# 使用scp上传(本地项目路径为~/project,服务器路径为/var/www/html/your_project)
scp -r ~/project/* ubuntu@your_server_ip:/var/www/html/your_project/
# 或通过Git克隆(若有项目仓库)
git clone https://github.com/your_repo/your_project.git /var/www/html/your_project
关键要求:项目必须包含public目录(入口文件index.php所在目录),后续需将其设为Web根目录。
进入项目目录,通过Composer安装依赖,并设置runtime目录(存储缓存、日志等)的可写权限:
cd /var/www/html/your_project
composer install --no-dev --optimize-autoloader # 生产环境忽略开发依赖
sudo chown -R www-data:www-data /var/www/html/your_project # 更改所有者(www-data为Nginx默认用户)
sudo chmod -R 755 runtime # 设置runtime目录可写
创建Nginx配置文件,使请求指向public目录,并配置URL重写(隐藏index.php)。
your_project):sudo nano /etc/nginx/sites-available/your_project
server_name为你的域名/IP,root为项目public目录路径):server {
listen 80;
server_name your_domain_or_ip; # 替换为实际域名或IP
root /var/www/html/your_project/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string; # 隐藏index.php的关键配置
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据PHP版本调整(如php8.1-fpm.sock)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 可选:禁止访问敏感文件
location ~ /\.(?!well-known).* {
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置语法(无错误则继续)
sudo systemctl restart nginx # 重启Nginx
.env文件(若无则复制config/.env.example),填写数据库信息:DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_NAME=your_database_name
DB_USER=your_database_user
DB_PASSWORD=your_database_password
DB_PORT=3306
config/app.php,设置:'app_debug' => false,
'app_trace' => false,
sudo systemctl start php7.4-fpm && sudo systemctl enable php7.4-fpm
sudo systemctl status php7.4-fpm),确认Nginx配置中的fastcgi_pass路径正确。try_files规则正确(指向index.php),且location /块未被覆盖。chown和chmod命令是否执行正确。通过以上步骤,即可在Ubuntu上快速部署ThinkPHP项目。生产环境建议进一步配置HTTPS(如使用Let’s Encrypt证书)、缓存(如Redis)等优化措施。