共享主機(jī)環(huán)境(Shared Hosting Environment)

2018-02-24 15:40 更新

共享托管環(huán)境

共享的托管環(huán)境常常會對目錄結(jié)構(gòu)以及配置文件有較多的限制。然而,在大多數(shù)情況下,你仍可以通過少量的修改以在共享托管環(huán)境下運(yùn)行 Yii 2.0。

部署一個基礎(chǔ)應(yīng)用模板

由于共享托管環(huán)境往往只有一個 webroot,如果可能,請優(yōu)先使用基礎(chǔ)項目模板( basic project template )構(gòu)建你的應(yīng)用程序。參考?安裝 Yii 章節(jié)在本地安裝基礎(chǔ)項目模板。當(dāng)你讓應(yīng)用程序在本地正常運(yùn)行后,我們將要做少量的修改以讓它可以在共享托管服務(wù)器運(yùn)行。

重命名 webroot

用FTP或者其他的工具連接到你的托管服務(wù)器,你可能看到類似如下的目錄結(jié)構(gòu):

config
logs
www

在以上,www?是你的 web 服務(wù)器的 webroot 目錄。不同的托管環(huán)境下名稱可能各不相同,通常是類似:?www,?htdocs, 和public_html?之類的名稱。

對于我們的基礎(chǔ)項目模板而言,其 webroot 名為?web?。 在你上傳你的應(yīng)用程序到 web 服務(wù)器上去之前,將你的本地 webroot 重命名以匹配服務(wù)器。 即: 從?web?改為?www,?public_html?或者其他你的托管環(huán)境的 webroot 名稱。

FTP 根目錄可寫

如果你有 FTP 根目錄的寫權(quán)限,即,有?config,?logs?和?www?的根目錄,那么,如本地根目錄相同的結(jié)構(gòu)上傳?assets,commands?等目錄。

增加 web 服務(wù)器的額外配置

如果你的 web 服務(wù)器是 Apache,你需要增加一個包含如下內(nèi)容的?.htaccess?文件到你的?web?目錄(或者?public_html?根據(jù)實(shí)際情況而定,是你的?index.php?文件所在的目錄)。

Options +FollowSymLinks
IndexIgnore */*

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

對于nginx而言,你不需要額外的配置文件。

檢查環(huán)境要求

為了運(yùn)行 Yii ,你的 web 服務(wù)器必須匹配它的環(huán)境要求。最低的要求必須是 PHP 5.4。為了檢查環(huán)境配置,將?requirements.php?從你的根目錄拷貝到 webroot 目錄,并通過瀏覽器輸入 URL?http://example.com/requirements.php?運(yùn)行它。最后,檢查結(jié)束后別忘了刪除這個文件哦!

部署一個高級應(yīng)用程序模板

部署一個高級應(yīng)用程序到共享的托管環(huán)境比基礎(chǔ)應(yīng)用要麻煩的原因在于它包含有兩個 webroot 目錄,而共享的托管環(huán)境不支持兩個。對于這種情況,我們需要調(diào)整目錄結(jié)構(gòu)。

將入口文件移動到同一個 webroot

首先我們需要一個 webroot 目錄,如重命名 webroot一節(jié)所述,創(chuàng)建一個新的跟你的托管環(huán)境 webroot 同名的目錄,如類似?www?或者public_html?的名字。創(chuàng)建如下的目錄結(jié)構(gòu),其中?www?目錄指代你剛剛創(chuàng)建的 webroot 目錄。

www
    admin
backend
common
console
environments
frontend
...

www?目錄是我們的前臺目錄,所以將?frontend/web?里面的內(nèi)容移到這個目錄。 將?backend/web?里面的內(nèi)容移到?www/admin?目錄。對于每種情況下,你需要調(diào)整`index.php?和?index-test.php` 里面引用的目錄結(jié)構(gòu)。

分離 Session 和 Cookie

通常情況下,backend 和 frontend 運(yùn)行在不同的域下,當(dāng)我們將其都移到同一個域時, frontend 和 backend 將會共享相同的 cookie,這樣會造成沖突。為了修復(fù)這個問題,如下調(diào)整 backend 的應(yīng)用程序配置文件?backend/config/main.php

'components' => [
    'request' => [
        'csrfParam' => '_backendCSRF',
        'csrfCookie' => [
            'httpOnly' => true,
            'path' => '/admin',
        ],
    ],
    'user' => [
        'identityCookie' => [
            'name' => '_backendIdentity',
            'path' => '/admin',
            'httpOnly' => true,
        ],
    ],
    'session' => [
        'name' => 'BACKENDSESSID',
        'cookieParams' => [
            'path' => '/admin',
        ],
    ],
],
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號