Linux服务器上ThinkPHP部署技巧
导读:一、环境准备:安装基础软件与依赖 在Linux服务器上部署ThinkPHP前,需先安装PHP、Web服务器(Nginx/Apache)、数据库(MySQL/MariaDB)及Composer(依赖管理工具)。以Ubuntu/Debian为例...
一、环境准备:安装基础软件与依赖
在Linux服务器上部署ThinkPHP前,需先安装PHP、Web服务器(Nginx/Apache)、数据库(MySQL/MariaDB)及Composer(依赖管理工具)。以Ubuntu/Debian为例,可通过以下命令快速安装:
# 更新软件包并安装PHP及扩展(确保包含PDO、OpenSSL、MBstring等)
sudo apt update &
&
sudo apt upgrade -y
sudo apt install php php-fpm php-mysql php-mbstring php-xml php-curl -y
# 安装Nginx(或Apache,需启用mod_rewrite)
sudo apt install nginx -y
# 安装Composer(全局可用)
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
注:ThinkPHP 6.x推荐PHP 7.4及以上版本,需确保扩展与框架版本兼容。
二、项目部署:上传代码与安装依赖
- 上传代码:通过
scp
、rsync
或Git将本地项目上传至服务器(如/var/www/html/your_project
),推荐使用Composer创建项目(避免手动下载遗漏依赖):composer create-project topthink/think your_project
- 设置public目录为根目录:ThinkPHP的入口文件
index.php
位于public
目录,需将Web服务器的root
指向此处(如Nginx配置中的root /var/www/html/your_project/public
),避免直接暴露项目文件。 - 安装依赖与设置权限:进入项目目录运行
composer install
安装依赖;修改runtime
目录权限(存放缓存、日志等),确保Web服务器用户(如www-data
)可写:chmod -R 755 runtime chown -R www-data:www-data runtime
三、Web服务器配置:Nginx/Apache优化
-
Nginx配置(推荐):
创建虚拟主机配置文件(如/etc/nginx/sites-available/your_project
),关键设置包括:- 指向
public
目录; - 添加
try_files
规则支持PATHINFO(解决路由失效); - 配置PHP-FPM转发(
fastcgi_pass
路径需与PHP-FPM监听一致)。
示例配置:
server { listen 80; server_name your_domain.com; root /var/www/html/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/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/your_project /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置语法 sudo systemctl restart nginx
- 指向
-
Apache配置:
启用mod_rewrite
模块(sudo a2enmod rewrite
),并在项目根目录添加.htaccess
文件,将请求重写至public
目录:< IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] < /IfModule>
四、关键配置调整:环境与安全
- 数据库连接:修改项目根目录下的
.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
- 调试模式:生产环境务必关闭调试模式(避免泄露敏感信息),修改
config/app.php
:'app_debug' => false,
- 隐藏入口文件:通过Nginx的
try_files
规则已实现index.php
隐藏,无需额外配置。
五、常见问题排查
- 502 Bad Gateway:检查PHP-FPM服务状态(
sudo systemctl status php-fpm
),确认Nginx配置中的fastcgi_pass
路径与PHP-FPM监听的socket一致(如/run/php/php8.2-fpm.sock
)。 - 路由失效:确保Nginx配置包含
try_files $uri $uri/ /index.php?$query_string;
,且location ~ \.php$
块正确配置。 - 权限问题:若出现“Permission denied”错误,检查
runtime
目录权限(chmod -R 755 runtime
)及文件所有者(chown -R www-data:www-data /var/www/html/your_project
)。
六、部署优化建议
- 性能提升:开启OPcache加速PHP执行(修改
php.ini
:opcache.enable=1
),使用Redis缓存会话(修改config/session.php
:'type' => 'redis'
)。 - 安全加固:限制
.env
文件访问(Nginx添加location ~ /\.env { deny all; }
),启用HTTPS(使用Let’s Encrypt免费证书:sudo certbot --nginx -d your_domain.com
)。 - 自动化部署:结合Git钩子(如
post-receive
)或CI/CD工具(如Jenkins、GitHub Actions),实现代码推送后自动拉取、安装依赖及重启服务。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux服务器上ThinkPHP部署技巧
本文地址: https://pptw.com/jishu/727705.html