安裝 Yii(Installing Yii)

2018-02-24 15:40 更新

安裝 Yii

你可以通過兩種方式安裝 Yii:使用?Composer?或下載一個歸檔文件。推薦使用前者,這樣只需執(zhí)行一條簡單的命令就可以安裝新的擴展或更新 Yii 了。

注意:和 Yii 1 不同,以標準方式安裝 Yii 2 時會同時下載并安裝框架本身和一個應(yīng)用程序的基本骨架。

通過 Composer 安裝

如果還沒有安裝 Composer,你可以按?getcomposer.org?中的方法安裝。在 Linux 和 Mac OS X 中可以運行如下命令:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

在 Windows 中,你需要下載并運行?Composer-Setup.exe。

如果遇到任何問題或者想更深入地學習 Composer,請參考?Composer 文檔(英文)Composer 中文。

如果你已經(jīng)安裝有 Composer 請確保使用的是最新版本,你可以用?composer self-update?命令更新 Composer 為最新版本。

Composer 安裝后,切換到一個可通過 Web 訪問的目錄,執(zhí)行如下命令即可安裝 Yii :

composer global require "fxp/composer-asset-plugin:~1.0.0"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic

第一條命令安裝?Composer asset plugin,它是通過 Composer 管理 bower 和 npm 包所必須的,此命令全局生效,一勞永逸。 第二條命令會將 Yii 安裝在名為?basic?的目錄中,你也可以隨便選擇其他名稱。

注意:在安裝過程中 Composer 可能會詢問你 GitHub 賬戶的登錄信息,因為可能在使用中超過了 GitHub API (對匿名用戶的)使用限制。因為 Composer 需要為所有擴展包從 GitHub 中獲取大量信息,所以超限非常正常。(譯注:也意味著作為程序猿沒有 GitHub 賬號,就真不能愉快地玩耍了)登陸 GitHub 之后可以得到更高的 API 限額,這樣 Composer 才能正常運行。更多細節(jié)請參考?Composer 文檔(該段 Composer 中文文檔期待您的參與)。

技巧:如果你想安裝 Yii 的最新開發(fā)版本,可以使用以下命令代替,它添加了一個?stability 選項中文版):

composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic

注意,Yii 的開發(fā)版(dev 版)不應(yīng)該用于生產(chǎn)環(huán)境中,它可能會破壞運行中的代碼。

通過歸檔文件安裝

通過歸檔文件安裝 Yii 包括三個步驟:

  1. 從?yiiframework.com?下載歸檔文件。
  2. 將下載的文件解壓縮到 Web 目錄中。
  3. 修改?config/web.php?文件,給?cookieValidationKey?配置項添加一個密鑰(若你通過 Composer 安裝,則此步驟會自動完成):

    // !!! 在下面插入一段密鑰(若為空) - 以供 cookie validation 的需要
    'cookieValidationKey' => '在此處輸入你的密鑰',

其他安裝方式

上文介紹了兩種安裝 Yii 的方法,安裝的同時也會創(chuàng)建一個立即可用的 Web 應(yīng)用程序。對于小的項目或用于學習上手,這都是一個不錯的起點。

但是其他的安裝方式也存在:

  • 如果你只想安裝核心框架,然后從零開始構(gòu)建整個屬于你自己的應(yīng)用程序模版,可以參考從頭構(gòu)建自定義模版一節(jié)的介紹。
  • 如果你要開發(fā)一個更復雜的應(yīng)用,可以更好地適用于團隊開發(fā)環(huán)境的,可以考慮安裝高級應(yīng)用模版。

驗證安裝的結(jié)果

安裝完成后,就可以使用瀏覽器通過如下 URL 訪問剛安裝完的 Yii 應(yīng)用了:

http://localhost/basic/web/index.php

這個 URL 假設(shè)你將 Yii 安裝到了一個位于 Web 文檔根目錄下的?basic?目錄中,且該 Web 服務(wù)器正運行在你自己的電腦上(localhost)。你可能需要將其調(diào)整為適應(yīng)自己的安裝環(huán)境。

你應(yīng)該可以在瀏覽器中看到如上所示的 “Congratulations!” 頁面。如果沒有,請通過以下任意一種方式,檢查當前 PHP 環(huán)境是否滿足 Yii 最基本需求:

  • 通過瀏覽器訪問 URL?http://localhost/basic/requirements.php
  • 執(zhí)行如下命令:

    cd basic
    php requirements.php

你需要配置好 PHP 安裝環(huán)境,使其符合 Yii 的最小需求。主要是需要 PHP 5.4 以上版本。如果應(yīng)用需要用到數(shù)據(jù)庫,那還要安裝?PDO PHP 擴展?和相應(yīng)的數(shù)據(jù)庫驅(qū)動(例如訪問 MySQL 數(shù)據(jù)庫所需的?pdo_mysql)。

配置 Web 服務(wù)器

補充:如果你現(xiàn)在只是要試用 Yii 而不是將其部署到生產(chǎn)環(huán)境中,本小節(jié)可以跳過。

通過上述方法安裝的應(yīng)用程序在 Windows,Max OS X,Linux 中的?Apache HTTP 服務(wù)器或?Nginx HTTP 服務(wù)器且PHP版本為5.4或更高都可以直接運行。Yii 2.0 也兼容 Facebook 公司的?HHVM,由于 HHVM 和標準 PHP 在邊界案例上有些地方略有不同,在使用 HHVM 時需稍作處理。

在生產(chǎn)環(huán)境的服務(wù)器上,你可能會想配置服務(wù)器讓應(yīng)用程序可以通過 URL?http://www.example.com/index.php?訪問而不是http://www.example.com/basic/web/index.php。這種配置需要將 Web 服務(wù)器的文檔根目錄指向?basic/web?目錄。可能你還會想隱藏掉 URL 中的?index.php,具體細節(jié)在?URL 解析和生成一章中有介紹,你將學到如何配置 Apache 或 Nginx 服務(wù)器實現(xiàn)這些目標。

補充:將?basic/web?設(shè)置為文檔根目錄,可以防止終端用戶訪問?basic/web?相鄰目錄中的私有應(yīng)用代碼和敏感數(shù)據(jù)文件。禁止對其他目錄的訪問是一個不錯的安全改進。

補充:如果你的應(yīng)用程序?qū)硪\行在共享虛擬主機環(huán)境中,沒有修改其 Web 服務(wù)器配置的權(quán)限,你依然可以通過調(diào)整應(yīng)用的結(jié)構(gòu)來提升安全性。詳情請參考共享主機環(huán)境?一章。

推薦使用的 Apache 配置

在 Apache 的?httpd.conf?文件或在一個虛擬主機配置文件中使用如下配置。注意,你應(yīng)該將?path/to/basic/web?替換為實際的basic/web?目錄。

# 設(shè)置文檔根目錄為 “basic/web”
DocumentRoot "path/to/basic/web"

<Directory "path/to/basic/web">
    # 開啟 mod_rewrite 用于美化 URL 功能的支持(譯注:對應(yīng) pretty URL 選項)
    RewriteEngine on
    # 如果請求的是真實存在的文件或目錄,直接訪問
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # 如果請求的不是真實文件或目錄,分發(fā)請求至 index.php
    RewriteRule . index.php

    # ...其它設(shè)置...
</Directory>

推薦使用的 Nginx 配置

為了使用?Nginx,你應(yīng)該已經(jīng)將 PHP 安裝為?FPM SAPI?了。使用如下 Nginx 配置,將?path/to/basic/web?替換為實際的basic/web?目錄,mysite.local?替換為實際的主機名以提供服務(wù)。

server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80; ## 監(jiān)聽 ipv4 上的 80 端口
    #listen [::]:80 default_server ipv6only=on; ## 監(jiān)聽 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 / {
        # 如果找不到真實存在的文件,把請求分發(fā)至 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;
        try_files $uri =404;
    }

    location ~ /\.(ht|svn|git) {
        deny all;
    }
}

使用該配置時,你還應(yīng)該在?php.ini?文件中設(shè)置?cgi.fix_pathinfo=0?,能避免掉很多不必要的?stat()?系統(tǒng)調(diào)用。

還要注意當運行一個 HTTPS 服務(wù)器時,需要添加?fastcgi_param HTTPS on;?一行,這樣 Yii 才能正確地判斷連接是否安全。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號