ThinkPHP在CentOS上的最佳实践涵盖环境配置、性能优化、安全加固及部署运维等多个环节,以下是具体实施方案:
php-mysqlnd、php-mbstring、php-xml、php-curl、php-gd),确保扩展完整。例如通过sudo yum install php php-fpm php-mysqlnd php-mbstring php-xml php-curl -y安装。try_files $uri $uri/ /index.php?$query_string;规则以支持PATHINFO,配置PHP-FPM监听(Unix socket或端口),示例配置:server {
listen 80;
server_name your_domain.com;
root /path/to/thinkphp;
index index.php index.html;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
mod_rewrite模块(sudo a2enmod rewrite),配置虚拟主机允许.htaccess覆盖(AllowOverride All)。curl -sS https://getcomposer.org/installer | php下载并移动至/usr/local/bin/composer,用于依赖管理。/var/www/html/thinkphp),编辑.env文件配置数据库连接(DB_HOST、DB_NAME、DB_USER等),或修改config/database.php。nginx),运行目录(runtime)设为可写入(chmod -R 775 runtime),其他目录设为755,避免权限问题。sudo systemctl start php-fpm)和Web服务器(Nginx/Apache),使用Supervisor管理ThinkPHP进程(如队列、定时任务),配置/etc/supervisor/conf.d/thinkphp.conf:[program:thinkphp]
command=/usr/bin/php /path/to/thinkphp/artisan queue:work
autostart=true
autorestart=true
stderr_logfile=/var/log/thinkphp_err.log
stdout_logfile=/var/log/thinkphp_out.log
通过sudo supervisorctl update应用配置。php.ini启用OPcache,缓存编译后的PHP代码,减少脚本执行时间:[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
'cache' => [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'select' => 0,
],
'persistent' => true)减少连接开销,开启慢查询日志定位性能瓶颈,为查询字段添加索引,避免SELECT *。.env文件设置app_debug = false,避免暴露详细错误信息(如数据库结构、代码逻辑)。runtime目录(location ^~ /runtime/ { deny all; }),防止敏感数据泄露。sudo certbot --nginx -d your_domain.com),配置Nginx启用HTTPS(listen 443 ssl;),加密数据传输。Validate类对用户输入进行验证(如邮箱、手机号格式),防止SQL注入(推荐使用PDO预处理或查询构造器)。error),定期清理无用日志,使用ELK或Prometheus监控应用性能。composer update),修复已知安全漏洞,确保应用安全性。