安裝Yii2
安裝 Yii
==============
你可以通過兩種方式安裝 Yii:使用 [Composer](http://getcomposer.org/) 或下載一個歸檔文件。推薦使用前者,這樣隻需執行一條簡單的命令就可以安裝新的[擴展](extend-creating-extensions.md)或更新 Yii 了。
> 注意:和 Yii 1 不同,以標準方式安裝 Yii 2 時會同時下載並安裝框架本身和一個應用程序的基本骨架。
通過 Composer 安裝
-----------------------
如果還冇有安裝 Composer,你可以按 [getcomposer.org](https://getcomposer.org/download/) 中的方法安裝。在 Linux 和 Mac OS X 中可以運行如下命令:
curl -s http://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
在 Windows 中,你需要下載並運行 [Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe)。
如果遇到任何問題或者想更深入地學習 Composer,請參考 [Composer 文檔(英文)](https://getcomposer.org/doc/),[Composer 中文](https://github.com/5-say/composer-doc-cn)。
Composer 安裝後,切換到一個可通過 Web 訪問的目錄,執行如下命令即可安裝 Yii :
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
如上命令會將 Yii 安裝在名為 `basic` 的目錄中。
> 技巧:如果你想安裝 Yii 的最新開發版本,可以使用如下命令,它添加了一個 [stability 選項](https://getcomposer.org/doc/04-schema.md#minimum-stability)([中文版](https://github.com/5-say/composer-doc-cn/blob/master/cn-introduction/04-schema.md#minimum-stability)):
composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
> 注意,Yii 的開發版(dev 版)不應該用於生產環境中,它可能會破壞運行中的代碼。
通過歸檔文件安裝
-------------------------------
通過歸檔文件安裝 Yii 包括兩個步驟:
1. 從 [yiiframework.com](http://www.yiiframework.com/download/yii2-basic) 下載歸檔文件。
2. 將下載的文件解壓縮到 Web 目錄中。
3. 修改 `config/web.php` 文件,給 `cookieValidationKey` 配置項添加一個密鑰(若你通過 Composer 安裝,則此步驟會自動完成):
```php
// !!! 在下麵插入一段密鑰(若為空) - 以供 cookie validation 的需要
'cookieValidationKey' => '在此處輸入你的密鑰',
```
其他安裝方式
--------------------------
上文介紹了兩種安裝 Yii 的方法,安裝的同時也會創建一個立即可用的 Web 應用程序。對於小的項目或用於學習上手,這都是一個不錯的起點。
但是其他的安裝方式也存在:
* 如果你隻想安裝核心框架,然後從零開始構建整個屬於你自己的應用程序模版,可以參考[從頭構建自定義模版](tutorial-start-from-scratch.md)一節的介紹。
* 如果你要開發一個更複雜的應用,可以更好地適用於團隊開發環境的,可以考慮安裝[高級應用模版](tutorial-advanced-app.md)。
驗證安裝的結果
--------------------------
安裝完成後,就可以使用瀏覽器通過如下 URL 訪問剛安裝完的 Yii 應用了:
http://localhost/basic/web/index.php
這個 URL 假設你將 Yii 安裝到了一個位於 Web 文檔根目錄下的 `basic` 目錄中,且該 Web 服務器正運行在你自己的電腦上(`localhost`)。你可能需要將其調整為適應自己的安裝環境。
![Yii 安裝成功]
你應該可以在瀏覽器中看到如上所示的 “Congratulations!” 頁麵。如果冇有,請通過以下任意一種方式,檢查當前 PHP 環境是否滿足 Yii 最基本需求:
* 通過瀏覽器訪問 URL `http://localhost/basic/requirements.php`
* 執行如下命令:
http://localhost/basic/web/index.php
你需要配置好 PHP 安裝環境,使其符合 Yii 的最小需求。主要是需要 PHP 5.4 以上版本。如果應用需要用到數據庫,那還要安裝 [PDO PHP 擴展](http://www.php.net/manual/zh/pdo.installation.php) 和相應的數據庫驅動(例如訪問 MySQL 數據庫所需的 `pdo_mysql`)。
配置 Web 服務器
-----------------------
>補充:如果你現在隻是要試用 Yii 而不是將其部署到生產環境中,本小節可以跳過。
通過上述方法安裝的應用程序在 Windows,Max OS X,Linux 中的 [Apache HTTP 服務器](http://httpd.apache.org/)或 [Nginx HTTP 服務器](http://nginx.org/) 上都可以直接運行。
在生產環境的服務器上,你可能會想配置服務器讓應用程序可以通過 URL `http://www.example.com/index.php` 訪問而不是 `http://www.example.com/basic/web/index.php`。這種配置需要將 Web 服務器的文檔根目錄指向 `basic/web` 目錄。可能你還會想隱藏掉 URL 中的 `index.php`,具體細節在 [URL 解析和生成](runtime-url-handling.md) 一章中有介紹,你將學到如何配置 Apache 或 Nginx 服務器實現這些目標。
>補充:將 `basic/web` 設置為文檔根目錄,可以防止終端用戶訪問 `basic/web` 相鄰目錄中的私有應用代碼和敏感數據文件。禁止對其他目錄的訪問是一個不錯的安全改進。
>補充:如果你的應用程序將來要運行在共享虛擬主機環境中,冇有修改其 Web 服務器配置的權限,你依然可以通過調整應用的結構來提升安全性。詳情請參考[共享主機環境](tutorial-shared-hosting.md) 一章。
### 推薦使用的 Apache 配置 <a name="recommended-apache-configuration"></a>
在 Apache 的 `httpd.conf` 文件或在一個虛擬主機配置文件中使用如下配置。注意,你應該將 `path/to/basic/web` 替換為實際的 `basic/web` 目錄。
# 設置文檔根目錄為 “basic/web” DocumentRoot "path/to/basic/web"RewriteEngine on # 如果請求的是真實存在的文件或目錄,直接訪問 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 如果請求的不是真實文件或目錄,分發請求至 index.php RewriteRule . index.php # ...其它設置...
### 推薦使用的 Nginx 配置 <a name="recommended-nginx-configuration"></a>
為了使用 [Nginx](http://wiki.nginx.org/),你應該已經將 PHP 安裝為 [FPM SAPI](http://php.net/install.fpm) 了。使用如下 Nginx 配置,將 `path/to/basic/web` 替換為實際的 `basic/web` 目錄,`mysite.local` 替換為實際的主機名以提供服務。
server { charset utf-8; client_max_body_size 128M; listen 80; ## 監聽 ipv4 上的 80 端口 #listen [::]:80 default_server ipv6only=on; ## 監聽 ipv6 上的 80 端口 server_name mysite.local; root /path/to/basic/web; index index.php; access_log /path/to/basic/log/access.log main; error_log /path/to/basic/log/error.log; location / { # 如果找不到真實存在的文件,把請求重定向給 index.php try_files $uri $uri/ /index.php?$args; } # 若取消下麵這段的注釋,可避免 Yii 接管不存在文件的處理過程(404) #location ~ .(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.htmll; location ~ .php$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; } location ~ /.(ht|svn|git) { deny all; } }
使用該配置時,你還應該在 `php.ini` 文件中設置 `cgi.fix_pathinfo=0` ,能避免掉很多不必要的 `stat()` 係統調用。
還要注意當運行一個 HTTPS 服務器時,需要添加 `fastcgi_param HTTPS on;` 一行,這樣 Yii 才能正確地判斷連接是否安全。