温馨提示×

linux thinkphp怎样部署

小樊
44
2026-10-18 21:26:19
栏目: 编程语言

下面按最常见、实用的方式给你讲 Linux 下 ThinkPHP 的部署流程(以 ThinkPHP 5 / 6 / 8 + Nginx + PHP-FPM 为例,Apache 也会顺带说明)。


一、服务器环境准备

1. 系统建议

  • CentOS 7/8、Ubuntu 20.04/22.04
  • 已安装:
    • Nginx / Apache
    • PHP(≥7.2,推荐 8.0+)
    • PHP-FPM
    • Composer
    • MySQL(可选)

2. 安装 PHP 及扩展(示例 Ubuntu)

sudo apt update
sudo apt install php php-fpm php-mysql php-mbstring php-xml php-curl php-zip

查看 PHP 版本:

php -v

二、上传 ThinkPHP 项目

方式 1:Git 拉取(推荐)

cd /www
git clone https://github.com/your/project.git
cd project
composer install

方式 2:本地打包上传

scp project.zip user@server:/www
unzip project.zip
cd project
composer install

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

ThinkPHP 需要写权限的目录:

chown -R www-data:www-data /www/project
chmod -R 755 /www/project
chmod -R 777 /www/project/runtime

Nginx 用户通常是 www-data 或 nginx


四、Nginx 配置(重点)

1. 创建站点配置

vim /etc/nginx/conf.d/thinkphp.conf

2. 示例配置(ThinkPHP)

server {
    listen 80;
    server_name www.example.com;
    root /www/project/public;

    index index.php index.html;

    location / {
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php?s=/$1 last;
        }
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/run/php/php8.1-fpm.sock;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

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

ThinkPHP 入口必须指向 public 目录


五、重启服务

nginx -t
systemctl restart nginx
systemctl restart php-fpm

六、配置环境变量

cp .env.example .env
vim .env

示例:

APP_DEBUG = false
DB_HOST = 127.0.0.1
DB_NAME = test
DB_USER = root
DB_PASS = password

七、Apache 部署(可选)

1. 开启 rewrite

a2enmod rewrite

2. 修改虚拟主机

DocumentRoot /www/project/public

<Directory /www/project/public>
    AllowOverride All
</Directory>

3. 重启

systemctl restart apache2

八、常见问题排查

1. 页面 500

  • 查看日志:
tail -f /www/project/runtime/log/*
  • 检查 runtime 权限

2. 404

  • 是否指向 public
  • rewrite 是否生效

3. 访问空白

php -m | grep mbstring
  • 缺扩展

九、生产环境建议

✅ 关闭调试模式
✅ 使用 HTTPS
✅ 设置定时任务(如用到)
✅ 使用 Supervisor(队列)


如果你告诉我:

  • ThinkPHP 版本
  • Linux 发行版
  • Nginx 还是 Apache

我可以直接给你一份可复制的完整配置。

0 踩