ThinkPHP在Linux下的高效部署指南
在Linux(如Ubuntu/Debian/CentOS)上部署ThinkPHP前,需安装以下核心组件:
# 更新系统并安装PHP及扩展
sudo apt update && sudo apt upgrade -y
sudo apt install php php-fpm php-mysql php-mbstring php-xml php-curl -y
# 安装Nginx和Composer
sudo apt install nginx -y
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
php -v确认PHP版本,nginx -v确认Nginx版本,composer -V确认Composer可用。composer create-project topthink/think tp6 /var/www/html/tp6 # tp6为项目目录
cd /var/www/html/tp6
/var/www/html/tp6)。composer install安装所需包。.env文件(而非config/database.php,避免提交敏感信息),设置数据库连接:DATABASE_TYPE=mysql
DATABASE_HOSTNAME=127.0.0.1
DATABASE_NAME=your_db
DATABASE_USERNAME=your_user
DATABASE_PASSWORD=your_pass
DATABASE_PORT=3306
runtime目录(存储缓存、日志)可写,避免权限问题:sudo chown -R www-data:www-data /var/www/html/tp6 # www-data为Web用户(根据系统调整)
sudo chmod -R 755 runtime
/etc/nginx/sites-available/tp6.conf,内容如下:server {
listen 80;
server_name your_domain.com; # 替换为域名/IP
root /var/www/html/tp6/public; # 必须指向public目录(入口文件所在)
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string; # 路由重写,支持PATHINFO
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 根据PHP版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问.env文件
location ~ /\.env {
deny all;
}
}
启用配置并重启Nginx:sudo ln -s /etc/nginx/sites-available/tp6.conf /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置语法
sudo systemctl restart nginx
mod_rewrite模块,在项目根目录添加.htaccess文件:<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
config/app.php,设置app_debug = false,避免暴露敏感信息。.env文件,防止数据库密码等泄露。php.ini(如/etc/php/8.2/fpm/php.ini),取消以下注释:opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.validate_timestamps=0 # 生产环境关闭,避免频繁检查文件
重启PHP-FPM生效:sudo systemctl restart php8.2-fpm。hooks/post-receive中添加脚本,实现代码推送后自动拉取、安装依赖:#!/bin/bash
cd /var/www/html/tp6
git pull origin main
composer install --no-interaction --prefer-dist
赋予执行权限:chmod +x post-receive。sudo systemctl status php8.2-fpm),确认Nginx配置中的fastcgi_pass路径与PHP-FPM的listen指令一致。try_files $uri $uri/ /index.php?$query_string;,且location /块未覆盖路由规则。composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/