在部署前需安装以下基础软件(以CentOS 7/8为例):
php-mysqlnd、php-gd、php-mbstring、php-xml、php-curl等);具体安装命令(以Nginx+PHP-FPM+MySQL为例):
# 更新系统
sudo yum update -y
# 安装Nginx
sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
# 安装PHP及扩展(通过Remi仓库安装PHP 7.4,可根据需求调整版本)
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
sudo yum-config-manager --enable remi-php74
sudo yum install php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-curl -y
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
# 安装MySQL
sudo yum install mysql-server -y
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo mysql_secure_installation # 完成安全配置(设置root密码、移除匿名用户等)
创建ThinkPHP专属虚拟主机配置文件(如/etc/nginx/conf.d/thinkphp.conf),内容如下:
server {
listen 80;
server_name your_domain.com; # 替换为你的域名或IP
root /path/to/your/thinkphp/project/public; # 项目public目录(关键:入口文件在此)
index index.php index.html index.htm;
# 路由重写(支持PATHINFO,解决ThinkPHP URL重写问题)
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP处理(FastCGI转发至PHP-FPM)
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/php-fpm.sock; # PHP-FPM socket路径(需与php-fpm.conf一致)
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
# 禁止访问.htaccess文件(安全)
location ~ /\.ht {
deny all;
}
}
测试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.com
DocumentRoot /path/to/your/thinkphp/project/public
<Directory /path/to/your/thinkphp/project/public>
Options Indexes FollowSymLinks
AllowOverride All # 允许.htaccess覆盖
Require all granted
</Directory>
</VirtualHost>
直接在服务器上通过Composer创建ThinkPHP项目(需提前安装Composer):
# 安装Composer(全局)
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# 创建项目(以ThinkPHP 6为例)
cd /path/to/your/thinkphp
composer create-project topthink/think project-name
项目目录结构示例:
/path/to/your/thinkphp/project-name/
├── app/ # 应用目录
├── public/ # 入口目录(需指向Nginx的root)
├── config/ # 配置目录
├── vendor/ # Composer依赖
└── ...
若项目已开发完成,可通过FTP/SFTP或Git上传至服务器指定目录(如/path/to/your/thinkphp/project)。
登录MySQL,执行以下命令:
-- 创建数据库
CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户并授权
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
退出MySQL:exit;
修改项目根目录下的.env文件(优先级高于config/database.php):
DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_NAME=your_database_name
DB_USER=your_username
DB_PASSWORD=your_password
DB_PORT=3306
DB_PREFIX=tp_ # 表前缀(可选)
进入项目目录,通过Composer安装依赖:
cd /path/to/your/thinkphp/project-name
composer install --no-dev --optimize-autoloader # 生产环境建议关闭dev依赖并优化自动加载
确保项目目录权限正确(避免Web服务器无法访问):
sudo chown -R nginx:nginx /path/to/your/thinkphp/project-name # 若使用Nginx(用户为nginx)
# 若使用Apache(用户为apache),则改为:sudo chown -R apache:apache /path/to/your/thinkphp/project-name
sudo chmod -R 755 /path/to/your/thinkphp/project-name
sudo chmod -R 775 /path/to/your/thinkphp/project-name/runtime # runtime目录需可写(存储缓存、日志等)
# 启动Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
# 启动PHP-FPM(若未启动)
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
在浏览器中输入http://your_domain.com(或服务器IP),若看到ThinkPHP欢迎页面,则部署成功。
.env文件,设置APP_DEBUG = false;php.ini中启用OPcache(提升PHP性能);config/cache.php,使用Redis替代文件缓存;sudo yum install supervisor -y
sudo vim /etc/supervisor/conf.d/thinkphp.conf
添加以下内容(以ThinkPHP 6为例):[program:thinkphp]
command=php /path/to/your/thinkphp/project-name/think run
autostart=true
autorestart=true
stderr_logfile=/var/log/thinkphp.err.log
stdout_logfile=/var/log/thinkphp.out.log
更新Supervisor配置并启动:sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start thinkphp
通过以上步骤,ThinkPHP项目即可在CentOS服务器上稳定运行。部署过程中需注意权限设置、路径配置及依赖完整性,避免常见问题(如502 Bad Gateway、路由失效)。