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