Cyber Coding Course

師其意,不泥其跡

奔跑吧Laravel

如果您還沒聽過D-Laravel,容我介紹一下,D-Laravel為採用docker-compose所建立的Laravel與docker執行環境,
透過簡單的bash讓我們快速生成Laravel的專案。

本文教您如何使用D-Laravel的提供的docker image,來建立swoole的執行開發環境。
看完這篇,您應該能快速的透過D-Laravel建立出swoole的執行環境囉。

環境確認

當容器啟動中,我們可以透過./console ext查看已編譯的相關php擴充。例如下圖,我們能看到 swoole.so

注意事項

一、D-Laravel上的Swoole目前僅可使用default為Project目錄,因此,一個D-Laravel只能跑一個swoole專案。

二、請確認您的port 80未被主機佔用,否則您需自行先調整好docker-compose-swoole.yml中的主機開啟連接埠,
例如變更為8080:80,將host端開啟的連接埠改為8080。

三、請確認您使用最新的php image,至少要以下版本或之後的版本,才有內建swoole.so的擴充。
  image: deviny/fpm:7.3.5
  image: deviny/fpm:7.2.18
  image: deviny/fpm:7.1.29
  image: deviny/fpm:5.6.39

進入正題,建立swoole專案步驟如下:

一、為確保沒有任何連接埠衝突問題,建議先停止我們運作中其他的d-laravel,如果有的話。
我們可以用docker ps指令查看,是否還有D-Laravel相關的容器還在執行中的。

二、直接clone最新版本的d-laravel,並指定一個新的Project名稱。
swoole的專案名稱,您可自行命令,例如: project1。
git clone https://github.com/DevinY/dlaravel.git swoole

三、在上例中,我建立了一個名為swoole的Project,clone下來後,進入swoole這個目錄中
cd swoole

四、一個d-laravel只能跑一個swoole,請建立一個default的Project。(default名稱不可變更)
./create default
五、第四步完成後,需進行laravel的swoole套件的安裝,d-laravel使用laravel-s的套件,
如果您的D-Laravel設定別名(ce 及 a)了,我們可以簡單的執行別名,在主機端(host)完成安裝步驟,
或是您可以進入容器中執行相關的安裝指令。


1.主機端D-Laravel別名安裝方式:
#進入default的專案資料夾
cd sites/default

#使用別名 ce 代表容composer指令,進行laravel-s安裝
ce require "hhxsv5/laravel-s:~3.5.0" -vvv

#使用別名 a 代表php artisan,進行laravel-s的發佈
a laravels publish
再還沒建立swoole環境前,我們可以直接輸入./console swoole,就可以看到安裝相關指令說明囉。


2.容器內的安裝方式:
如果,您不懂如何建立D-Laravel的別名,您有另一個選擇,進入至容器內來安裝,指令如下:
#使用./console進入容器內
./console

#進入專案資料夾
cd default/

#透過composer安裝laravel-s
composer require hhxsv5/laravel-s:~3.5.0 -vvv

#publish必要的檔案
php artisan laravels publish
如果您是進入到容器安裝的,完成後,可壓熱鍵Ctrl+D離開容器,回到主機端(host),畫面如下:


六、切換成swoole的模式
./console swoole
如果您有按圖施工、我相信,保證成功,您應該可以看到與我類似的畫面。


以上,您已完成了D-Laravel的swoole開發環境。D-laravel使用自行開發的file watcher進行檔案修改檢測。
初台化時,您可能需等個幾秒才能看到網頁,在D-Laravel的swoole模式中,電腦的IP是可以直接被存取的,
我們也可以使用localhost或IP的方式連接到網站。

試者壓command+r來重整網頁,您會發覺,靠~~Laravel變的超級快。


最後,我要說一下,我並未用swoole開發,如果您想將他用在Production的版本,請自行評估或測試,
swoole有那些坑或那些雷,請自行Google一下。

在這裡我只是提供了一種在D-Laravel環境中執行swoole的方式,當然D-Laravel最新版本PHP FPM的image中都內建swoole的擴充了,
也就是說,將swoole.so加入到php.ini後,您的php就能執行swoole的相關命令,建立各式各樣的服務,並不止於Laravel的swoole環境哦。

差多少眼見為憑:

實測相同環境,相同的程式碼,未使用及使用swoole的頁面載入速度差異:


swoole.com官網:
https://www.swoole.com/

laravel-s (Laravel與swoole的整合)
https://github.com/hhxsv5/laravel-s


 

作者: Devin Yang