温馨提示×

ubuntu thinkphp怎么部署

小樊
44
2026-09-22 20:52:01
栏目: 编程语言

在 Ubuntu 上部署 ThinkPHP 项目,通常有以下几种方式。下面我按最常用、最稳妥的流程给你讲(以 ThinkPHP 6 / 8 + PHP 8.1 + Nginx + MySQL 为例)。


一、环境准备

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装 Nginx

sudo apt install nginx -y

3. 安装 PHP

sudo apt install php php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-gd -y

查看 PHP 版本:

php -v

二、上传 ThinkPHP 项目

方式一:Git 拉取(推荐)

cd /var/www
git clone 你的项目地址
cd 项目目录

方式二:手动上传

用 scp 或宝塔/FTP 上传到:

/var/www/your_project

三、安装依赖(Composer)

cd /var/www/your_project
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer install

⚠️ 如果是生产环境:

composer install --no-dev --optimize-autoloader

四、配置 ThinkPHP

1. 配置环境变量

cp .env.example .env

修改数据库等信息:

APP_DEBUG = false

DB_HOST=127.0.0.1
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=123456

2. 设置权限

sudo chown -R www-data:www-data /var/www/your_project
sudo chmod -R 755 /var/www/your_project
sudo chmod -R 777 /var/www/your_project/runtime

五、配置 Nginx

新建站点配置:

sudo nano /etc/nginx/sites-available/your_project

示例配置(重点:指向 public):

server {
    listen 80;
    server_name yourdomain.com;

    root /var/www/your_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:/run/php/php-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

六、数据库(可选)

sudo apt install mysql-server -y
mysql -u root -p
CREATE DATABASE tp_db;

七、访问测试

浏览器访问:

http://服务器IP

✅ 看到 ThinkPHP 欢迎页即部署成功


八、常见问题

1. 404 / 路由失效

  • 确认 root 指向 public
  • 确认 try_files 配置正确

2. 500 错误

tail -f /var/www/your_project/runtime/log/*

3. 权限问题

sudo chmod -R 777 runtime

九、进阶(可选)

  • ✅ HTTPS(Let’s Encrypt)
  • ✅ supervisor 队列
  • ✅ 宝塔一键部署
  • ✅ Docker 部署

如果你告诉我:

  • ThinkPHP 版本(5 / 6 / 8)
  • 是否用宝塔
  • 是否要 HTTPS

我可以直接给你定制部署命令。

0 踩