安裝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.html;

    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 才能正確地判斷連線是否安全。