在CentOS系统上部署Yii项目需要经过环境准备、项目配置、服务优化等多个步骤,确保项目稳定运行,以下是详细操作指南:
环境准备
基础系统环境
- 操作系统: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
,调整以下参数:
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路径错误 | 检查root 和try_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
),添加如下格式任务:
* * * * * /usr/bin/php /var/www/yii-project/yii cron/send-mail >> /var/log/yii-cron.log 2>&1
注意使用PHP完整路径,并确保日志目录可写。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复