下面给你一套**在 Ubuntu 上部署 ThinkPHP(以 ThinkPHP 6 为例,5.1 类似)**的常见做法,从零开始,包含 Nginx + PHP + MySQL 的完整流程。
sudo apt update
sudo apt upgrade -y
sudo apt install -y php php-cli php-fpm php-mysql php-curl php-xml php-mbstring php-zip php-gd php-intl
查看 PHP 版本:
php -v
sudo apt install -y nginx
启动并设置开机自启:
sudo systemctl enable nginx
sudo systemctl start nginx
sudo apt install -y mysql-server
sudo mysql_secure_installation
创建数据库:
CREATE DATABASE tp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'tp_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON tp_db.* TO 'tp_user'@'localhost';
FLUSH PRIVILEGES;
sudo mkdir -p /var/www/tp
sudo chown -R $USER:$USER /var/www/tp
将项目上传到:
/var/www/tp
目录结构应类似:
/var/www/tp
├── app
├── public
├── config
├── runtime
└── composer.json
sudo chown -R www-data:www-data /var/www/tp
sudo chmod -R 755 /var/www/tp
sudo chmod -R 777 /var/www/tp/runtime
cd /var/www
composer create-project topthink/think tp
编辑站点配置:
sudo nano /etc/nginx/sites-available/tp.conf
示例配置(重点:root 指向 public):
server {
listen 80;
server_name your_domain_or_ip;
root /var/www/tp/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/php-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/tp.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
复制环境变量:
cp .example.env .env
修改数据库配置:
APP_DEBUG = false
DB_TYPE = mysql
DB_HOST = 127.0.0.1
DB_NAME = tp_db
DB_USER = tp_user
DB_PWD = password
DB_PORT = 3306
浏览器访问:
http://服务器IP
看到 ThinkPHP 欢迎页即成功 ✅
sudo tail -f /var/www/tp/runtime/log/*
确认 Nginx 的 try_files 配置正确
sudo chown -R www-data:www-data /var/www/tp
APP_DEBUG如果你用的是 ThinkPHP 5.1 / 8.0 / 宝塔面板 / Docker,告诉我,我可以给你对应版本的具体部署方案。