温馨提示×

CentOS下ThinkPHP项目如何部署

小樊
38
2025-10-08 23:23:00
栏目: 编程语言

CentOS下ThinkPHP项目部署详细步骤

1. 环境准备

在部署前需安装Web服务器(Nginx/Apache)、PHP环境、数据库(MySQL/MariaDB)、Composer等必要组件。

  • 安装Nginx(以Nginx为例):
    sudo yum install epel-release -y sudo yum install nginx -y sudo systemctl start nginx sudo systemctl enable nginx 
  • 安装PHP及扩展(ThinkPHP 6需PHP 7.4+):
    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 # 完成安全初始化配置 
  • 安装Composer(PHP依赖管理工具):
    curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer 

2. 配置Web服务器

Nginx配置

创建ThinkPHP专属站点配置文件(如/etc/nginx/conf.d/thinkphp.conf),内容如下:

server { listen 80; server_name your_domain.com; # 替换为你的域名/IP root /var/www/html/thinkphp/public; # ThinkPHP项目public目录 index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; # 路由转发到index.php } location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; # PHP-FPM监听socket fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; # 支持PATH_INFO } location ~ /\.ht { deny all; # 禁止访问.htaccess文件 } } 

测试配置并重启Nginx:

sudo nginx -t # 检查配置语法 sudo systemctl restart nginx 
Apache配置(可选)

若使用Apache,需启用mod_rewrite模块并创建虚拟主机:

sudo a2enmod rewrite sudo systemctl restart httpd 

创建配置文件(如/etc/httpd/conf.d/thinkphp.conf):

<VirtualHost *:80> ServerName your_domain.com DocumentRoot /var/www/html/thinkphp/public <Directory /var/www/html/thinkphp/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> 

3. 部署ThinkPHP项目

  • 上传项目代码:通过Git、FTP或SFTP将项目上传至/var/www/html/thinkphp(或其他目录)。
  • 安装依赖:进入项目目录,执行Composer安装:
    cd /var/www/html/thinkphp composer install --no-dev --optimize-autoloader # 生产环境关闭dev依赖 
  • 配置数据库:编辑.env文件(或config/database.php),填写数据库连接信息:
    DB_TYPE=mysql DB_HOST=127.0.0.1 DB_NAME=your_db_name DB_USER=your_db_user DB_PASSWORD=your_db_password DB_PORT=3306 DB_PREFIX=tp_ # 可选表前缀 

4. 设置权限

确保Web服务器用户(Nginx默认nginx,Apache默认apache)对项目目录有读写权限:

sudo chown -R nginx:nginx /var/www/html/thinkphp # 修改所属用户/组 sudo chmod -R 755 /var/www/html/thinkphp # 设置目录权限 sudo chmod -R 777 /var/www/html/thinkphp/runtime # runtime目录需可写(上传/缓存) 

5. 启动服务并测试

  • 启动服务
    sudo systemctl start nginx php-fpm mysqld # 启动Nginx、PHP-FPM、MySQL sudo systemctl enable nginx php-fpm mysqld # 设置开机自启 
  • 测试访问
    浏览器输入http://your_domain.com,若看到ThinkPHP欢迎页面则部署成功。

6. 生产环境优化(可选)

  • 关闭调试模式:修改.env文件,设置APP_DEBUG=false,避免敏感信息泄露。
  • 配置缓存:开启OPcache提升PHP性能,编辑/etc/php.ini
    zend_extension=opcache.so opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=4000 
  • 使用Redis缓存:安装Redis并配置ThinkPHP使用Redis存储会话/缓存,提升并发性能。
  • 配置HTTPS:通过Let’s Encrypt申请免费SSL证书,配置Nginx支持HTTPS(listen 443 ssl)。

常见问题排查

  • 502 Bad Gateway:检查PHP-FPM是否运行(sudo systemctl status php-fpm),确认Nginx配置中的fastcgi_pass路径正确。
  • 路由失效:确保Nginx配置中包含try_files $uri $uri/ /index.php?$query_string;,且PATH_INFO参数已开启。
  • 权限问题:若出现“Permission denied”错误,检查项目目录所属用户及权限(ls -ld /var/www/html/thinkphp)。

0