by Devin Yang

建立於: 7年前 ( 更新: 7年前 )

前言

由於queue workers是一個長期執行的程序,所以我們會需要一個程序管理員supervisor來監控Linux系統上的process是否持續運作,例如:當queue:work運作失敗時,可以自動重啟queue:work process。很幸運的D-Laravel已內建supervisor囉,所以不需要再自行安裝到Mac OS上即可使用。

當您要使用Laravel上的queue功能及Laravle Echo及Events及Broadcasting或Notifications 時,
您應該就會用到supervisor應用。

在D-Laravel上運行supervisor打不死的小強相當簡單。
您需更新至D-Laravel v1.2.15 才有支援 ./console supervisor start 指令。

如果您使用舊版D-Laravel,您可以採用Docker官方的指令來執行,本文中會提到。
 

SUPERVISOR三步曲

一、 建立supervisor設定檔至D-Laravel中的etc/supervisor資料夾
事實上已有一個sample在裡面了,
所以我們可以,簡單的copy這個sample來進行修改。
假定dlaravel安裝在我們的家目錄,所以指令如下:
cd ~/dlaravel/etc/supervisor
cp laravel-worker.conf.sample laravel-worker.conf
vim laravel-work.conf laravl-work.conf
上方的command設定中,我使用Laravel的default queure,因此不指定--quque=。
myproject即是我們在D-Laravel的sites資料夾內要執行queue:work的專案。

二、解除封印
將我們在docker-compose.yml中,php服務段落內supervisor設定掛載的#號註解移除。
comment out supervisor

三、執行php container內的超級小強吧,哦打錯,是supervisor.
D-Laravel就是docker的環境,當然我們可用官方的指令,執行container內的命令。
在dlaravel的資料夾中執行的語法如下:
docker-compose exec php /etc/init.d/supervisor start

還記得嗎,就在上面的第二步,我們移除了註解#,這樣就讓php的container,能掛載我們host端dlaravel目錄內的etc/supervisor資料夾。
並在
第一步中,我們也產出了, laravel-work.conf 檔,所以php container內的supervisor可以依我們的 laravel-work.conf 設定來啟動。

Linux 初學者,可能會覺的這麼長的命令不好記,所以在新版的 D-Laravel 中提供簡易的 bash
讓我們可以少打幾個字,我們可透過 ./console 來啟動或停止 supervisor
./console supervisor start
或是
./console supervisor restart

四、檢測container內的程序是否執行(額外補充)。
我們可以透過 ./console top 指令檢測container內的supervisor程序是否執行。
./console top php

./console top php
 

Tags: dlaravel

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!

類似的文章


dlaravel

D-laravel已加入建議的opcache.ini設定了

最新版本的D-Laravel已加入opcache的建議設定了。 啟用方式非常簡單,請在D-Laravel目錄下執行即可。

dlaravel

D-Laravel上的.env.example檔說明

本文說明關於D-Laravel上的.env設定 MYSQL_ROOT_PASSWORD=secret LARAVEL_INSTALLER='container' DOCKER_SERVICES='docker-compose.yml service/redis.yml'

php,docker,dlaravel

我建立的phpenv容器環境簡單介紹

沒時間拍介紹影片,我就來隨便抓些畫面介紹我使用的容器環境deviny/phpenv。https://github.com/DevinY/phpenvphpenv算是我之前D-Laravel開源專案的進化版本,概念上延用了很多Dlaravel的操作方式。容器的更新上偏向使用者自行控制去Build自己的image,所以我不太會去更動版號了,其實D-Laravel的php版號,好像我也很久沒動啦:p