CentOS部署Yii项目时PHP-FPM配置如何正确设置?

在CentOS系统上部署Yii项目需要经过环境准备、项目配置、服务优化等多个步骤,确保项目稳定运行,以下是详细操作指南:

CentOS部署Yii项目时PHP-FPM配置如何正确设置?

环境准备

基础系统环境

  • 操作系统:CentOS 7/8(推荐7.9版本,稳定性较高)
  • Web服务器:Nginx 1.18+(推荐)或Apache 2.4+
  • 数据库:MySQL 5.7+或MariaDB 10.3+
  • PHP:7.4+(Yii 2.0支持PHP 7.1-8.1,建议7.4)
  • 其他工具:Git、Composer、Unzip

安装必要软件

# 更新系统
sudo yum update -y
# 安装EPEL源
sudo yum install epel-release -y
# 安装Nginx、MySQL、PHP及相关扩展
sudo yum install nginx mysql-server php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-json php-zip -y
# 安装Git和Composer
sudo yum install git -y
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

服务初始化

# 启动并设置开机自启
sudo systemctl start nginx mysqld php-fpm
sudo systemctl enable nginx mysqld php-fpm
# 初始化MySQL安全配置
sudo mysql_secure_installation

项目部署流程

下载Yii项目

# 创建项目目录(如/var/www/yii-project)
sudo mkdir -p /var/www/yii-project
sudo chown -R nginx:nginx /var/www/yii-project
# 通过Git克隆或Composer创建项目
cd /var/www/yii-project
git clone https://github.com/yiisoft/yii2-app-basic.git .  # 示例:使用基础模板
# 或 composer create-project --prefer-dist yiisoft/yii2-app-basic .

配置文件修改

  • 数据库配置:修改config/db.php,填入MySQL连接信息:
    return [
        'class' => 'yiidbConnection',
        'dsn' => 'mysql:host=localhost;dbname=yii_db',
        'username' => 'yii_user',
        'password' => 'your_password',
        'charset' => 'utf8mb4',
    ];
  • 权限设置
    sudo chmod -R 755 /var/www/yii-project/runtime
    sudo chmod -R 755 /var/www/yii-project/web/assets

Nginx配置

创建/etc/nginx/conf.d/yii-project.conf

server {
    listen 80;
    server_name your_domain.com;
    root /var/www/yii-project/web;
    index index.php;
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ .php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

重启Nginx:sudo systemctl reload nginx

数据库初始化

# 导入数据库(若有SQL文件)
mysql -u root -p yii_db < /path/to/your/file.sql
# 或通过Yii命令行迁移
./yii migrate

性能优化与安全加固

PHP-FPM优化

编辑/etc/php-fpm.d/www.conf,调整以下参数:

CentOS部署Yii项目时PHP-FPM配置如何正确设置?

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

重启PHP-FPM:sudo systemctl restart php-fpm

安全配置

  • 禁用目录列表:在Nginx配置中添加autoindex off;
  • 防火墙设置
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --reload
  • SSL证书(推荐):使用Let’s Encrypt免费证书
    sudo yum install certbot python3-certbot-nginx -y
    sudo certbot --nginx -d your_domain.com

缓存配置

  • OPcache:确保/etc/php.d/10-opcache.ini已启用:
    opcache.enable=1
    opcache.memory_consumption=128
    opcache.max_accelerated_files=4000
  • Redis缓存(可选):安装Redis并配置Yii缓存组件

常见问题排查

问题现象 可能原因 解决方案
404 Not Found Nginx root路径错误 检查roottry_files配置
PHP白屏 PHP-FPM未启动 检查systemctl status php-fpm
数据库连接失败 用户权限不足 授予MySQL用户远程访问权限

FAQs

Q1: 部署后出现”No input file specified”错误怎么办?
A: 通常是由于Nginx配置中fastcgi_param SCRIPT_FILENAME路径错误,确保变量值与$document_root拼接正确,检查/var/log/nginx/error.log确认具体错误。

Q2: 如何设置定时任务执行Yii控制台命令?
A: 编辑crontab(crontab -e),添加如下格式任务:

CentOS部署Yii项目时PHP-FPM配置如何正确设置?

* * * * * /usr/bin/php /var/www/yii-project/yii cron/send-mail >> /var/log/yii-cron.log 2>&1

注意使用PHP完整路径,并确保日志目录可写。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-09-30 21:42
下一篇 2025-09-30 21:51

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信