温馨提示×

ubuntu如何部署thinkphp项目

小樊
39
2026-09-25 20:10:05
栏目: 编程语言

下面给你一份在 Ubuntu 上部署 ThinkPHP 项目的常见完整流程(以 ThinkPHP 6/8 + Nginx + PHP-FPM + MySQL 为例,最常用)。


一、环境准备

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装 Nginx

sudo apt install nginx -y

3. 安装 PHP 及扩展

ThinkPHP 一般要求 PHP 7.4+(推荐 8.1+)

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

查看 PHP 版本:

php -v

二、部署 ThinkPHP 项目

方式一:上传已有项目(常见)

cd /var/www
sudo mkdir thinkphp
sudo chown -R $USER:$USER thinkphp

用 scp / git / FTP 上传项目到:

/var/www/thinkphp

方式二:Composer 新建项目

cd /var/www
composer create-project topthink/think thinkphp

三、配置目录权限(非常重要)

cd /var/www/thinkphp
sudo chown -R www-data:www-data .
sudo chmod -R 755 .
sudo chmod -R 777 runtime

ThinkPHP 的 runtime 目录必须可写


四、配置 Nginx

新建配置文件:

sudo vim /etc/nginx/sites-available/thinkphp

示例配置(重点看 rewrite):

server {
    listen 80;
    server_name yourdomain.com;  # 或服务器IP
    root /var/www/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:/run/php/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

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

启用站点:

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

五、配置数据库(MySQL)

sudo apt install mysql-server -y
sudo mysql_secure_installation

创建数据库:

CREATE DATABASE thinkphp CHARACTER SET utf8mb4;

修改 ThinkPHP 配置:

/var/www/thinkphp/config/database.php

六、Composer 安装依赖(如有)

cd /var/www/thinkphp
composer install

七、开启 Rewrite(伪静态)

ThinkPHP 默认使用 PATHINFO:

URL 示例:

http://ip/index.php/index/index

若想隐藏 index.php,Nginx 已配置 try_files 即可。


八、常见排错

1. 500 错误

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

2. 404

  • 检查 root 是否指向 public
  • 检查 Nginx try_files

3. 权限问题

sudo chown -R www-data:www-data /var/www/thinkphp

九、可选(生产推荐)

  • 使用 HTTPS(Let’s Encrypt)
  • 关闭 APP_DEBUG
APP_DEBUG = false
  • 使用 Supervisor(队列)
  • 配置 日志轮转

如果你愿意,可以告诉我:

  • ThinkPHP 版本(5 / 6 / 8)
  • 是否用 Apache
  • 是否 Docker 部署

我可以直接给你对应版本的具体配置。

0 踩