1. Yii框架概述与环境准备
Yii是一个高性能的PHP框架,特别适合开发大型Web应用。作为一个全栈框架,它提供了MVC、DAO/ActiveRecord、缓存、身份验证和授权等全套功能。最新稳定版本Yii 2.0采用模块化设计,通过Composer管理依赖,使扩展安装和更新变得异常简单。
在开始安装前,请确保系统满足以下最低要求:
- PHP 5.4或更高版本(推荐PHP 7.4+)
- 启用的PDO扩展(如需数据库支持)
- Web服务器(Apache/Nginx/IIS)
- 2GB以上可用磁盘空间
提示:可通过
php -v命令检查PHP版本,使用php -m查看已加载扩展。若缺少必要扩展,在Ubuntu中可通过sudo apt-get install php-mysql等命令安装。
2. 通过Composer安装Yii
2.1 Composer安装与配置
Composer是PHP的依赖管理工具,也是安装Yii的推荐方式。在Linux/macOS终端执行:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');" sudo mv composer.phar /usr/local/bin/composerWindows用户可直接下载Composer-Setup.exe安装。安装后运行composer -V验证是否成功。
常见问题:若遇到SSL证书错误,尝试执行
composer config -g disable-tls true临时关闭TLS验证,但完成安装后应立即恢复。
2.2 创建Yii项目
在项目目录执行以下命令安装基础模板:
composer create-project --prefer-dist yiisoft/yii2-app-basic myproject安装过程可能持续5-15分钟,具体取决于网络速度。关键步骤包括:
- 下载Yii核心包(约15MB)
- 解析依赖关系树
- 安装必要组件(如bootstrap、jQuery等前端资源)
性能优化:添加
--profile参数可显示详细耗时,如composer create-project --profile yiisoft/yii2-app-basic myproject
3. 项目结构与配置调整
3.1 目录结构解析
安装完成后,项目主要目录结构如下:
myproject/ ├── assets/ # 前端资源编译目录 ├── commands/ # 控制台命令 ├── config/ # 应用配置 │ ├── console.php # 控制台配置 │ └── web.php # Web应用配置 ├── controllers/ # 控制器 ├── mail/ # 邮件模板 ├── models/ # 数据模型 ├── runtime/ # 运行时文件 ├── tests/ # 测试用例 ├── vendor/ # Composer依赖包 ├── views/ # 视图文件 └── web/ # Web可访问目录 ├── assets/ # 发布的前端资源 └── index.php # 入口脚本3.2 关键配置修改
- 数据库配置(config/db.php):
return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=mydatabase', 'username' => 'root', 'password' => 'yourpassword', 'charset' => 'utf8', ];- 应用参数(config/params.php):
return [ 'adminEmail' => 'admin@example.com', 'supportEmail' => 'support@example.com', 'user.passwordResetTokenExpire' => 3600, ];安全提醒:务必在.gitignore中添加
config/db.php防止敏感信息泄露。
4. 本地开发环境搭建
4.1 内置Web服务器
Yii提供快速启动的开发服务器:
php yii serve默认监听8080端口,可通过--port参数修改:
php yii serve --port=88884.2 虚拟主机配置(Apache示例)
对于长期项目,建议配置虚拟主机。在Apache的httpd-vhosts.conf中添加:
<VirtualHost *:80> ServerName myproject.test DocumentRoot "/path/to/myproject/web" <Directory "/path/to/myproject/web"> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php </Directory> </VirtualHost>然后在hosts文件添加:
127.0.0.1 myproject.test4.3 验证安装
访问http://localhost:8080应看到Yii欢迎页面。若出现错误,检查:
- PHP版本是否符合要求
web/assets目录是否可写- 必要的PHP扩展是否加载(mbstring, openssl等)
可通过内置检查脚本验证环境:
php requirements.php5. 生产环境部署要点
5.1 性能优化配置
- 启用OPcache(php.ini):
opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=4000- 配置Yii缓存组件(config/web.php):
'components' => [ 'cache' => [ 'class' => 'yii\caching\FileCache', // 生产环境建议使用Redis或Memcached // 'class' => 'yii\redis\Cache', // 'redis' => [ // 'hostname' => 'localhost', // 'port' => 6379, // ] ], ]5.2 安全加固措施
- 禁用调试模式(config/web.php):
defined('YII_DEBUG') or define('YII_DEBUG', false); defined('YII_ENV') or define('YII_ENV', 'prod');- 设置CSRF保护:
'components' => [ 'request' => [ 'cookieValidationKey' => '你的随机密钥', 'enableCsrfValidation' => true, ], ]- 目录权限设置:
chmod -R 755 myproject/web/assets chmod -R 644 myproject/config5.3 Nginx推荐配置
server { listen 80; server_name yourdomain.com; root /path/to/myproject/web; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS off; } location ~ /\.(ht|svn|git) { deny all; } }6. 常见问题解决方案
6.1 Composer安装失败
问题现象:[Composer\Downloader\TransportException]
解决方案:
- 临时切换国内镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/- 或配置Github token:
composer config -g github-oauth.github.com your_token6.2 资产包安装问题
问题现象:bower-asset/jquery not found
解决方案:
- 安装asset-plugin:
composer global require "fxp/composer-asset-plugin:^1.4.0"- 或在composer.json添加:
"repositories": [ { "type": "composer", "url": "https://asset-packagist.org" } ]6.3 数据库连接错误
典型错误:PDOException: could not find driver
排查步骤:
- 检查PDO扩展是否安装:
php -m | grep pdo- 安装对应数据库驱动:
# MySQL示例 sudo apt-get install php-mysql7. 进阶配置与扩展
7.1 多环境配置管理
通过环境变量区分配置:
// config/web.php $config = require __DIR__ . '/web.php'; if (YII_ENV_DEV) { $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' => 'yii\debug\Module', ]; } return $config;7.2 定时任务配置
使用Yii控制台命令:
- 创建命令:
php yii console/create-command example- 添加crontab:
* * * * * /usr/bin/php /path/to/yii example >> /var/log/yii-cron.log 2>&17.3 邮件系统集成
配置SwiftMailer组件:
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.example.com', 'username' => 'user@example.com', 'password' => 'password', 'port' => '587', 'encryption' => 'tls', ], ],8. 项目维护与升级
8.1 版本升级流程
- 备份关键文件:
cp composer.json composer.json.bak- 更新依赖:
composer update yiisoft/yii2 --with-dependencies- 检查破坏性变更:
php yii migrate/up --interactive=08.2 性能监控建议
- 安装调试工具栏:
composer require --dev yiisoft/yii2-debug- 配置日志组件:
'log' => [ 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], 'logFile' => '@runtime/logs/app.log', ], ], ],8.3 备份策略
推荐备份以下内容:
- 数据库(定期dump)
config/目录web/uploads/用户上传文件runtime/logs/日志文件
示例备份脚本:
mysqldump -u user -p database > backup_$(date +%F).sql tar -czf config_backup_$(date +%F).tar.gz config/