一、环境准备
sudo apt update && sudo apt upgrade -y(Ubuntu/Debian)或sudo yum update -y(CentOS/RHEL),确保系统软件包为最新版本。sudo apt install php php-fpm php-mysql php-mbstring php-xml php-curl php-bcmath -yphp-bcmath用于处理高精度计算,部分ThinkPHP功能依赖)。sudo apt install nginx -y(Ubuntu);sudo apt install apache2 -y(Ubuntu),并启用mod_rewrite模块(sudo a2enmod rewrite)。curl -sS https://getcomposer.org/installer | php下载Composer,再通过sudo mv composer.phar /usr/local/bin/composer全局安装,方便后续项目依赖管理。二、ThinkPHP项目部署
/var/www),执行composer create-project topthink/think tp6(tp6为项目目录名),等待依赖下载完成。/var/www/html/thinkphp)。.env文件(若无则复制config/.env.example生成),设置数据库连接信息:DATABASE_TYPE=mysql
DATABASE_HOSTNAME=127.0.0.1
DATABASE_NAME=your_dbname
DATABASE_USERNAME=your_username
DATABASE_PASSWORD=your_password
DATABASE_PORT=3306
runtime目录(存放缓存、日志等临时文件)需可写,执行:sudo chown -R www-data:www-data /var/www/tp6/runtime(www-data为Web服务器用户,根据系统调整);sudo chmod -R 755 /var/www/tp6/runtime(确保目录权限正确)。三、Web服务器配置
/etc/nginx/sites-available/thinkphp.conf),添加以下内容:server {
listen 80;
server_name yourdomain.com; # 替换为域名或IP
root /var/www/tp6/public; # 指向ThinkPHP的public目录
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string; # 支持PATHINFO
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 路径需与PHP-FPM配置一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.env { # 限制.env文件访问
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/thinkphp.conf /etc/nginx/sites-enabled/;sudo nginx -t;sudo systemctl restart nginx。mod_rewrite:sudo a2enmod rewrite;/etc/apache2/sites-available/000-default.conf),在<Directory>块中添加AllowOverride All(允许.htaccess生效);.htaccess文件,内容如下:<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
sudo systemctl restart apache2。四、常见问题解决
sudo systemctl status php8.1-fpm),确认Nginx配置中的fastcgi_pass路径与PHP-FPM的listen路径一致(如/run/php/php8.1-fpm.sock)。try_files $uri $uri/ /index.php?$query_string;(Nginx)或.htaccess重写规则(Apache),支持ThinkPHP的PATHINFO模式。composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,显著提升依赖下载速度。五、部署优化建议
config/app.php中的app_debug为false),限制.env文件访问(通过Nginx的deny all规则)。php.ini中的opcache.enable=1);config/session.php中的type为redis)。