在CentOS上部署ThinkPHP前,需先安装**Web服务器(Nginx/Apache)、PHP及扩展、Composer、数据库(MySQL/MariaDB)**等基础组件。
sudo yum update -y
sudo yum install -y epel-release # 用于后续安装额外软件包
sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx # 设置开机自启
若使用Apache,替换为:
sudo yum install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd
ThinkPHP 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 | php
sudo mv composer.phar /usr/local/bin/composer
composer --version # 验证安装
sudo yum install -y mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
# 运行安全脚本设置root密码
sudo mysql_secure_installation
编辑Nginx站点配置文件(如/etc/nginx/conf.d/thinkphp.conf
),添加以下内容:
server {
listen 80;
server_name your_domain_or_ip; # 替换为域名或IP
root /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_ip
DocumentRoot /path/to/your/thinkphp/public
<Directory /path/to/your/thinkphp/public>
Options Indexes FollowSymLinks
AllowOverride All # 允许.htaccess覆盖
Require all granted
</Directory>
</VirtualHost>
重启Apache:
sudo systemctl restart httpd
进入Web服务器根目录(如/var/www/html
),通过Composer创建ThinkPHP项目:
cd /var/www/html
composer create-project topthink/think tp6 # 创建ThinkPHP 6.x项目,名称为tp6
编辑项目根目录下的.env
文件(或config/database.php
),填写数据库信息:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name # 替换为已创建的数据库名
DB_USERNAME=your_username # 替换为数据库用户名
DB_PASSWORD=your_password # 替换为数据库密码
若项目包含数据库表结构,执行迁移命令:
cd /path/to/your/thinkphp
php 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 # 自动配置HTTPS
cd /path/to/your/thinkphp
php 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
一致);