在CentOS上部署ThinkPHP前,需先安装Web服务器(Nginx/Apache)、PHP及扩展、Composer、数据库(MySQL/MariaDB)等基础组件。

sudo yum update -ysudo yum install -y epel-release# 用于后续安装额外软件包sudo yum install -y nginxsudo systemctl start nginxsudo systemctl enable nginx# 设置开机自启若使用Apache,替换为:
sudo yum install -y httpdsudo systemctl start httpdsudo systemctl enable httpdThinkPHP 8.x要求PHP≥8.0,需安装PHP核心、FPM(用于Nginx)、数据库驱动(如MySQL)及常用扩展:
sudo yum install -y php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-curl php-xml php-bcmath验证PHP版本:
php -v# 需显示PHP 8.0及以上版本curl -sS https://getcomposer.org/installer | phpsudo mv composer.phar /usr/local/bin/composercomposer --version# 验证安装sudo yum install -y mysql-serversudo systemctl start mysqldsudo systemctl enable mysqld# 运行安全脚本设置root密码sudo mysql_secure_installation编辑Nginx站点配置文件(如/etc/nginx/conf.d/thinkphp.conf),添加以下内容:
server {listen 80;server_name your_domain_or_ip;# 替换为域名或IProot /path/to/your/thinkphp/public;# 必须指向public目录(入口文件所在)index index.php index.html;location / {try_files $uri $uri/ /index.php?$query_string;# 路由重写,支持PATHINFO}location ~ .php$ {fastcgi_pass unix:/run/php-fpm/php-fpm.sock;# 与PHP-FPM通信fastcgi_index index.php;include fastcgi.conf;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;}location ~ /.ht {deny all;# 禁止访问.htaccess文件}}测试Nginx配置并重启:
sudo nginx -t# 检查语法sudo systemctl restart nginx若使用Apache,需启用mod_rewrite模块并配置虚拟主机:
sudo a2enmod rewrite# 启用重写模块sudo systemctl restart httpd创建虚拟主机配置文件(如/etc/httpd/conf.d/thinkphp.conf):
<VirtualHost *:80>ServerName your_domain_or_ipDocumentRoot /path/to/your/thinkphp/public<Directory /path/to/your/thinkphp/public>Options Indexes FollowSymLinksAllowOverride All# 允许.htaccess覆盖Require all granted</Directory></VirtualHost>重启Apache:
sudo systemctl restart httpd进入Web服务器根目录(如/var/www/html),通过Composer创建ThinkPHP项目:
cd /var/www/htmlcomposer create-project topthink/think tp6# 创建ThinkPHP 6.x项目,名称为tp6编辑项目根目录下的.env文件(或config/database.php),填写数据库信息:
DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=your_database_name# 替换为已创建的数据库名DB_USERNAME=your_username # 替换为数据库用户名DB_PASSWORD=your_password # 替换为数据库密码若项目包含数据库表结构,执行迁移命令:
cd /path/to/your/thinkphpphp think migrate确保Web服务器用户(Nginx为nginx,Apache为apache)对项目目录有读写权限:
sudo chown -R nginx:nginx /path/to/your/thinkphp# Nginx用户sudo chmod -R 755 /path/to/your/thinkphp编辑.env文件,设置:
APP_DEBUG = false# 关闭调试模式,避免暴露敏感信息使用Let’s Encrypt免费获取SSL证书:
sudo yum install -y certbot python3-certbot-nginx# Nginx用户sudo certbot --nginx -d your_domain_or_ip# 自动配置HTTPScd /path/to/your/thinkphpphp think run# 默认监听8000端口浏览器访问http://your_domain_or_ip:8000。http://your_domain_or_ip或https://your_domain_or_ip。若看到ThinkPHP欢迎页面,说明部署成功。若遇到502错误,需检查:
sudo systemctl status php-fpm);fastcgi_pass路径是否正确(与PHP-FPM的listen一致);