對於Laravel框架的目錄結構可以點選該連結檢視更具體一些的目錄結構。
我們在全棧開發使用資料庫時,需要經過這些過程:
啟動資料庫伺服器:這裡是 Homestead 中的 mysql 伺服器。這是給web伺服器連線的。
啟動web伺服器:這裡是 Homestead 中的 Nginx web伺服器。這是給客戶端請求連線的。
編寫後端指令碼:這裡是在 Homestead 中的 php 環境中。
視察資料庫動態:需要資料庫視覺化管理工具。
啟動 Homestead 虛擬機器後,會自動啟動 web 伺服器和資料庫伺服器。
整個流程大概是:客戶端請求資料,會連線到後端的 web 伺服器,web 伺服器會讓 php 對請求進行邏輯處理,若需要對資料庫操作,php 則會再去連線到資料庫伺服器,對資料庫進行 php 的 CURD 指令。
- Homestead.yaml 配置檔案的簡單介紹
該檔案是虛擬機器的配置檔案,每次修改了該文件,都需要重啟虛擬機器。
- features :安裝可選功能。
- 如果未建立虛擬機器時(注意是未建立),建立虛擬機器時會識別
features
裡為true
的選項進行安裝(安裝到虛擬機器中),為flase
的則不會安裝; - 如果是重啟虛擬機器,建立時已經安裝過的選項無論為
true
還是false
都無作用,因為建立虛擬機器時已經安裝了其建立時為true
的選項了。 - 這裡我有一點不大清楚,
homestead
預設是沒有安裝mysql
的,並且我也沒有在features
中啟用mysql
的安裝,但是php
還是可以連線上虛擬機器的mysql
,有大佬知道的沒?不過我們還是把mysql8
設為true
比較好。 - 另外一點,為什麼是
mysql8
而不是mysql
, 這是因為features
的鍵名是以\homestead\scripts\features
檔案中的檔名為名。
servieces:禁用與啟用哪些伺服器(這裡是
伺服器
)。我們將 mysql 伺服器啟用了即可。這裡是 mysql 而非 mysql8。
注意點:
- 注意縮排。
- 當配置中鍵沒有值時,重啟虛擬機器會顯示”未定義變數 each”等啟動失敗的資訊,因此沒有值時,就不要寫鍵了!
- 修改該配置檔案後要重啟虛擬機器才能生效。
正確的寫法:
- .env 配置檔案和 config 配置檔案的區別
修改 .env 檔案後, 需要
php artisan config:cache
清理快取後才能生效
在早些版本的 Homestead 中只有 config ,而並沒有 .env 。我們在多個開發或專案版本迭代的時候,所使用的環境(使用的電腦)可能不同,這意味著 host 和 port 可能不同,那麼我們肯定得需要統一的 host 和 port,但這玩意兒顯然並不能進行統一,但我們又不能亂修改專案的 這些配置 ,改來改去的話,別人對改專案的測試就會出問題,那這改咋整呢?
因此引出了 .env 這個配置檔案,這個檔案駕馭於 config 之上。以 mysql 的配置為例,執行專案時,該專案會優先從 .env 中的配置進行處理,若. env 未對 mysql 進行配置,才會從 config 的 database.php 獲取配置。(可以刪除 .env 進行測試)
簡單理解就是,每個隊友都有一個屬於自己的唯一的 .env ,該 .env 不會經過任何其他人的手裡,它只屬於自己;而 config 僅有一個且不屬於任何一個隊友,它會不斷的經過他人之手。
這樣的話,A隊友寫了個專案,對 config 的 database.php 部分進行了配置,B隊友拿過來該專案在自己的電腦上執行,只需配置自己 .env 檔案即可,C隊友拿過去,也只需對他自己的 .env 檔案進行配置,這樣子的話,就不會對專案的根電腦(A隊友)的配置亂修改了。當然,A隊友也可以配置自己的 .env 。
我們再檢視 專案根目錄下的 .gitignore 檔案,該檔案標記了該專案哪些檔案無需上傳到github上,其中就包含了 .env 配置檔案。當隊友 clone 該 github 專案時,並沒有將 .env 拷貝過來,只把 config 拷貝了過來。
若 .env 不小心被刪了,可以拷貝一份 .env.example 。
- 資料庫視覺化管理工具——Workbench
雖然 Homestead 虛擬機器中提供了很多開發時需要的工具,比如 mysql,但是並沒有 mysql 視覺化管理的工具,我們總不能一直用命令列來檢視資料庫吧,因此我們需要自己在 windows 主機中下載一個視覺化工具使用。我這裡使用的是 mysql 官方出的 Workbench 。
- 資料庫視覺化管理工具連線到 mysql 伺服器
連線伺服器時得需要開啟資料庫伺服器,並且得知道 mysql 伺服器得 host 和 port。
開啟資料庫伺服器很簡單,就是啟動 homestead 虛擬機器。
修改資料庫配置,以 .env 為例 挨個說明:
注意:這裡修改的只是【連線伺服器】的配置值,並不是將伺服器本身的 ip 進行修改!
connection:選擇的是什麼資料庫,比如 mysql、mongodb 等。
HOST與PORT : 127.0.0.1:3306 ——這是程式碼要寫的、配置檔案要寫的
我們知道 專案程式碼 是獨立於虛擬機器的環境中執行的,專案中的所有配置都是在虛擬機器的環境中讀取的,包括 相互獨立的 ip。 因此專案程式碼上訪問的是虛擬機器上的 ip,即程式碼要寫成 host=127.0.0.1 和 port=3306 。
HOST與PORT :127.0.0.1:33060 或 192.168.10.10:3306 ——資料庫管理工具(位於宿主機)要連線的
宿主機是無法訪問虛擬機器上的 ip 的,而 Homestead 給我們宿主機分配了一個對應ip :host=127.0.0.1 和 port=33060,也可以直接連線192.168.10.10:3306
database:預設將要連線的資料庫的名稱。這裡我們還沒有建立。
username=homestead,password=secret :
訪問資料庫伺服器時需要獲取使用者許可權,Homestead 給我們預設 username=homestead,password=secret。
知道了以上資訊,我們就可以開啟資料庫視覺化管理工具進行管理了。
同時我們可以直接寫程式碼對資料庫進行操作了,在程式碼中運算元據庫無需再指定資料庫的ip、埠、資料庫名稱等資訊了,因為在 .env 或 config 都已經配置了預設值了。
- 資料庫的備份:
我們知道整個專案環境都在虛擬機器中執行的,包括資料庫存在於虛擬機器中。這一步的備份是為了防止虛擬機器被 vagrant destroy 時,同時把資料庫也給刪除掉。
要開啟自動資料庫備份,需新增如下的行到你的 Homestead.yaml 檔案:
backup: true
具體請看:資料庫備份。
本作品採用《CC 協議》,轉載必須註明作者和本文連結