Yii2 官方提供兩種安裝方式:**歸檔包解壓(高成功率、適合離線/受限網絡)** 與 **Composer 依賴管理(標準化、易更新、生產環境推薦)**。本文詳解兩種方式完整流程、常見失敗原因、國內鏡像配置、高級模板初始化、Nginx/Apache 虛擬主機配置。
https://github.com/yiisoft/yii2-app-advanced/archive/refs/heads/master.ziphttps://gitee.com/yiisoft/yii2-app-advanced/repository/archive/master.zipunzip yii2-app-advanced-master.zip mv yii2-app-advanced-master /var/www/yii2-advanced cd /var/www/yii2-advanced
# Linux/macOS php init # Windows init.bat # 交互選擇: # Which environment do you want the application to be initialized in? # [0] Development # [1] Production # Your choice [0-1, or "q" to quit] 0 # Initialize the application under 'Development' environment? [yes|no] yes
# common/config/main-local.php
return [
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2advanced',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
],
],
];
php yii migrate # 輸入 yes 確認創建 user 表等
# Nginx (frontend)
server {
listen 80;
server_name frontend.yii2.local;
root /var/www/yii2-advanced/frontend/web;
index index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# Nginx (backend)
server {
listen 80;
server_name backend.yii2.local;
root /var/www/yii2-advanced/backend/web;
# ... 同前端配置
}
https://frontend.yii2.local → 顯示「Congratulations!」https://backend.yii2.local → 登錄頁面# 安裝 Composer curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer # 配置阿里云/騰訊云/華為云全量鏡像(二選一) composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ # 或 composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ # 或 composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/
composer create-project --prefer-dist yiisoft/yii2-app-advanced /var/www/yii2-advanced
| 現象 | 原因 | 解決 |
|---|---|---|
| Composer 下載極慢/超時 | 國外源被牆/限速 | **必須配置國內鏡像**,或用歸檔包離線安裝 |
| php init 报錯「Permission denied」 | 目錄權限不足 | chown -R www:www /var/www/yii2-advanced && chmod -R 755 /var/www/yii2-advanced |
| yii migrate 失敗「Connection refused」 | MySQL 未啟動/端口錯誤/密碼錯 | 檢查 common/config/main-local.php DSN、服務狀態、防火牆 |
| 訪問首頁 403/404/500 | Nginx root 指向錯誤/未配置 pathinfo/php-fpm | root 必須指向 frontend/web 或 backend/web,配置 try_files 和 fastcgi |
| Runtime 目錄不可寫 | 緩存/日誌目錄權限 | chmod -R 777 runtime web/assets (開發環境) |
yii2-advanced/ ├── common/ # 共用代碼:模型、組件、配置基類 │ ├── config/ # 共用配置 (main.php, main-local.php, params.php) │ ├── models/ # 共用模型 (User, LoginForm, SignupForm) │ └── components/ # 共用組件 ├── frontend/ # 前台應用 │ ├── controllers/ # 控制器 (SiteController) │ ├── views/ # 視圖 │ ├── web/ # Web 入口 (index.php, assets, favicon) │ └── config/ # 前台專用配置 ├── backend/ # 後台應用 (結構同 frontend) ├── console/ # 控制台應用 (命令、遷移、定時任務) ├── environments/ # 環境配置模板 (dev, prod) ├── vendor/ # Composer 依賴 ├── init / init.bat # 初始化腳本 └── yii / yii.bat # 控制台入口
選型建議:學習/評估/離線環境 → 歸檔包(幾分鐘搞定,專注框架本身);團隊項目/生產環境/持續集成 → Composer(依賴鎖定、版本管理、安全掃描、自動化部署)。**無論哪種方式,首要任務是配置國內 Composer 鏡像**,否則後續擴展包安裝將極其痛苦。