運行你的應用程序?
一個CodeIgniter 4的程序能夠通過以下幾種方式來運行:部署在一臺web服務器上,使用虛擬化,或者使用CodeIgniter的命令行工具以便測試。 本節闡述了如何使用以上技術來進行部署,以及介紹了一些高級用法與如何做出貢獻。
如果CodeIgniter對你來說相當陌生,請閱讀用戶手冊中的 準備開始 這節來學習如何構建一個動態的PHP應用,祝你玩得開心!
初始化配置與設置?
- 用一個文本編輯器打開 app/Config/App.php 文件并設置你的baseURL(網站基礎URL)。如果你希望更靈活點,也可以通過編輯
.env
文件,新增或更改其中的 app.baseURL=”http://example.com” 來更改baseURL。 - 如果你想要使用數據庫,用文本編輯器打開 app/Config/Database.php 文件并進行數據庫設置。同樣的,也可以在
.env
文件里進行如上設置。
在生產環境里需要做的另一個件事就是關閉PHP的錯誤報告以及其他所有的只在開發環境里的功能。
在CodeIgniter中,可以通過設置 ENVIRONMENT
常量來進行。關于這一特性,在文檔 :doc:環境 </general/environments>`
中進行了更為詳盡的介紹。
在默認情況下,應用程序會使用”production”(生產)環境。為了更為充分地使用所提供的 debug(問題定位)工具,你需要將環境設置為 “develop” (開發環境)
注解
如果你想要在一臺web服務器上運行你的網站。你需要修改項目線下的 writable
文件夾的權限,從而使得你的web服務器的當前用戶可以對它進行寫入。
本地開發主機?
CodeIgniter4 中內置了一個本地開發用的主機,利用了PHP內置的web服務器并實現了 CodeIgniter 的路由機制。
你可以使用主目錄下的如下如下命令行中的 serve
腳本來啟動:
php spark serve
這將會啟動服務器,與此同時,你可以在瀏覽器中輸入以下 http://localhost:8080 地址來瀏覽你的應用。
注解
內置的開發服務器只應該在本地開發機器上使用。絕對不要將其用于生產服務器中
如果你想在服務器上運行一個不僅僅是localhost,而是其他站點名的網站,你需要首先將該站點加入到你的 hosts
文件中。
該文件實際所處的位置根據不同的操作系統會存在差異,不過對于所有Unix類型的系統(包括OS X),該文件都是位于 /etc/hosts 。
本地開發主機可以通過三個命令行選項來進行自定義化:
你可以使用
--host
命令行選項來指定當前應用所位于的主機名:php spark serve --host=example.dev
默認情況下,服務器在8080端口上運行;不過如果你可能會需要多個站點同時運行,或者在8080端口上已有一個應用正在部署。那么就可以通過
--port
選項來指定另一個端口:php spark serve --port=8081
你也可以指定不同的PHP版本,通過
--php
選項,同時指定你想使用的對應的PHP版本所處的路徑:php spark serve --php=/usr/bin/php7.6.5.4
在Apache上部署主機?
CodeIgniter4 的 webapp 通常部署在一個網站主機上。在本文檔中我們將 Apache 的 httpd
進程假定為標準使用的平臺。
Apache 在許多平臺中默認集成,不過也能夠以一個安裝包(其中包含數據庫引擎和PHP執行文件)從 [Bitnami] 上下載(https://bitnami.com/stacks/infrastructure)
.htaccess?
本文檔中假定你可以使用 “mod_rewrite” 模塊,該模塊可以在URL中移除 “index.php” 這一部分。
確保該模塊(重寫模塊)在主配置文件中已被啟用(未注釋),例如 apache2/conf/httpd.conf
:
LoadModule rewrite_module modules/mod_rewrite.so
與此同時,確保默認的文檔根目錄 <Directory> 元素中也啟用了該模塊,在 “AllowOverride” 設置中:
<Directory "/opt/lamp7.2/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
虛擬主機?
我們推薦使用虛擬主機的配置來運行你的應用。 你可以為每個應用設置不同的別名。
確保虛擬主機模塊在主配置文件中啟用(未注釋),例如 apache2/conf/httpd.conf
:
LoadModule vhost_alias_module modules/mod_vhost_alias.so
在你的主機配置文件(hosts文件)里增加一個主機別名,在unix類型的平臺上通常是 /etc/hosts
,而在Windows上通常是 c:/Windows/System32/drivers/etc/hosts
。
在該文件中增加一行,比如 “myproject.local” 或 “myproject.test”,舉例來說:
127.0.0.1 myproject.local
在虛擬主機配置中,為你的 webapp 增加一個 <VirtualHost> 元素,例如在 apache2/conf/extra/httpd-vhost.conf
中:
<VirtualHost *:80>
DocumentRoot "/opt/lamp7.2/apache2/htdocs/myproject/public"
ServerName myproject.local
ErrorLog "logs/myproject-error_log"
CustomLog "logs/myproject-access_log" common
</VirtualHost>
如果你的項目目錄并不位于 Apache 的文檔根目錄下,你的 <VirtualHost> 元素就需要一個嵌套的 <Directory> 元素來為服務器訪問這些文件提供授權。
測試?
上述配置完成后,你的 webapp 應該就可以通過在瀏覽器上輸入 http://myproject.local
的 URL 來進行訪問了。
每當你更改了它的配置后,Apache 都需要被重新啟動
通過 Vagrant 部署主機?
虛擬化也是一個有效地測試你希望部署的環境中的 webapp 的實現情況的方式,即使你是在一個不同環境中進行部署的話。 即使你為兩個環境使用了相同的平臺,虛擬化也可以為測試提供獨立的環境。
相關的代碼位于 VagrantFile.dist
中,該文件也可以被復制到 VagrantFile
里,并根據你的系統的情況來進行增減。例如為特定的數據庫或緩存引擎提供訪問。
設置?
我們假設了你已經安裝了 VirtualBox 和 Vagrant 的指定平臺版本。
我們的 Vagrant 配置文件默認你在系統中使用 ubuntu/bionic64 Vagrant box 。
Vagrant 配置文件假定你是這樣進行安裝的:
vagrant box add ubuntu/bionic64
測試?
設置完成后,你就可以用以下命令在虛擬機中部署你的 webapp
vagrant up
你的 webapp 就可以通過 http://localhost:8080
來訪問,而當次構建的代碼覆蓋率測試報告可以通過 http://localhost:8081
,用戶指南通過 http://localhost:8082
進行訪問。