安裝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 配置

在 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 配置

爲了使用 [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 才能正確地判斷連接是否安全。