PHP 的開始是想把很多東西整合在一起,怎麼說呢 ?

話說為了管理主機,主機裡面會使用 Shell Script 或 Perl 寫的程式,排程固定時間去跑起來監控主機的運作情況。

這些種在主機裡的 agent 會使用 email 通知監控結果,但效率不怎麼好,日子久了信件太多就懶得看了。所以有時候會讓中央監控主機去抓每台主機的狀況,不過這也會有時效性的問題,假如主機很多時,光等待也睡著了,所以有時候也會讓主機自己把監控結果丟出來 ; 要怎麼丟、丟到那就要好好想想,不然它就變成在 DDOS 攻擊了 ! 是吧 (每台同時啟動但延遲為不同時間丟出)。

最後這些監控資料漸漸的變得需要好好的再整理一翻才出得了廳堂 (本來就出得了,只是還是覺得很亂),所以想要有一個 Web 介面的管理系統來整合這些資料。不過不是有很多現成的系統了嗎 ; Icinga (我有在用) 、Ansible  (我沒用過)、Cacti 等等,它們不都有 Web 介面了嗎 !

主機再怎麼監控、現成的系統再怎麼用,你可以想像我如果每監控一種就要登入一種系統,真的當主機當機了、流量衝高了的時候,還要一個一個登入查,那不是累死了。更何況真正發生問題時,即時的、完整的、唯一的資訊是讓我知道真正問題在那裡才是比較重要的  !

所以所以我選擇了 PHP 來架構我要的環境 ; PHP 是熱門的程式語言之一,用它也是因為管理主機久了, PHP 也接觸習慣了、架設方便、方便使用。然而一開始只是純 coding ,後來覺得還是要找個 Framework 較好 (基本環境、功能、安全性都先顧到),評估了 Codeigniter、Laravel 、YII、Slim 等 ,我選擇了 Codeigniter,因為好入門、不會比 Laravel 繁重,也加上使用 TWIG  (PHP Template Engine ) 來搭配  (讓 HTML 與 PHP 分開編寫,不過也不是真正分離,也只是多了一種格式去寫而己,至少好看一點)。

你說 Laravel 很多人用啊,還會有專門舉辦聚會活動,怎麼不用它 ? Laravel 有個讓我不喜歡的一點是它的目錄架構

app
public
其它

我如果要把 Laravel 裝在 Web Server 上,設定就要這樣子

<VirtualHost *:80>
    ServerName ssorc.tw
    DocumentRoot /var/www/html/laravel/public
</VirtualHost>

我還要為了它去改 DocumentRoot 指向到 public ,或者你可以忍受 https://ssorc.tw/public  這樣子。老實說 Laravel 入門有點難,所以放棄。

不過之後 Codeigniter 4 就是這麼搞 !!! @@ OOXX !

 

回到我想要的系統架構

[NOC or C&C] 就是控制一切的中央機器,它可以直接去存取[主機],透過 22 or 80 or 443 port 取得需要的資訊,或者等待 [主機] 把資訊丟到 [receiver] 後,[NOC or C&C] 再去 [receiver] 拿回來。
[NOC or C&C] 並沒有對外,所以 [主機] 無法直接丟過去,所以要有 [receiver] 當一個接收器,一方面也可以解決 [主機] 有時候也並不會對外的情況。

         
      +--- GET --->  [receiver] <---- POST ----------+
      |                                              |
      +                                              +
[NOC or C&C] ---- 直接 GET 22/80/443 -------------> [主機]

 

另提

我把 PHP 當成是 Web 開發的選擇 ([NOC or C&C]),而 Perl or Shell Script 則是 [主機] 裡系統 console 下的選擇 (排程執行),

是有評估過 Python,但

1。它的編寫格式有夠龜毛,連怎麼空隔也要管。
2。我常拿 GitHub 上別人寫好的 Python 套件來用 (弱掃等等的),常因缺少什麼元件而困擾,我也裝了它缺少的了喔,還是給我出現錯誤,火大,也常要在 Python2 或 Python3 之間跑來跑去 (有時候要 3 才能跑,有時候要 2),煩 ! (這種煩不會像 PHP 5.1 / 5.4 / 5.6 / 7 這種,不太一樣,不怎麼好形容)

 

用了 Codeigniter 確實很多東西都要自己從頭 coding,但也不會花太多時間,更何況還有 composer 可以用,GitHub 上也有一些 library 可以參考。並且要設定一個目標去作,然後看別人怎麼寫程式,會是學習任何一種程式語言很有效的途徑。

Codeigniter 的目錄結構、文件清楚好明了,也是我的主要選擇。

 

Related posts 相關文章
WordPress 6.3 以後可能不支援 PHP 5,最低需求為 PHP 7.4
More...
你的 WordPress 升級到 PHP 8 了嗎
More...
你看 WordPress 也建議至少 PHP 7.4+ 了
More...
PHP 7 最後一版,今年也要退場了
More...

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。