Category: 堆疊探討

LAMP Stack 主機管理軟件 : Vesta & Hestia

July 2, 2024 | 堆疊探討

基於LAMP Stacks,我們不難找到一些主機管理軟件,提供相當完整的遠端網頁管理功能,包括SSH 連線、數據庫管理系統和DNS 管理等等,由於這些軟件提供易操作的管理介面,大大降低架站的技術門檻,讓用戶可以自行調整虛擬主機與及網站功能。 典型例子包括開源免費的Vesta 和Hestia ,而閉源收費則有cPanel,而其中一個甚受歡迎的control panel 「Vesta」已經有好幾年沒更新,至少近兩版Linux 20 和22 也用不上;於是有位程式員因公司所需(公司可能要upgrade Linux 吧)作出「分叉」,出了個功能相近的「Hestia」,亦開放了給社區用;然而,這「分叉」倒有很多bugs,至少難配合第三方軟件和某些servers ,社區有很多微言,後來這程式員懊惱地作出回應,其意思大概是:「大佬,我只係將Vesta 改動來配合我公司需要,朋友叫我不如順便攞出泥比大家玩;大家都明,你地可能又用埋其他第三方軟件,我一日得廿四小時,點跟!?同埋,配合呢d第三方軟件有風險,我唔想一夜之間我公司幾百個server 收曬皮…….」 我看了這段說話,笑了出來!係囉,人地無錢收架,老馮要跟既咩! 亦因如此,若你想該主機軟件能具備持續且穩定的維護服務,最好還是使用收費的cPanel。 而我們網站則有一個收費課程,內容維繞如何使用Hestia 管理我們的虛擬主機和網站功能,其連結如下: Control Panel of LAMP Stack: Hestia – RedTechSchool

繼續閱讀

何謂 LAMP Stack? 

June 7, 2024 | 堆疊探討

Web 應用程式的開首十年,大多開發者均使用 LAMP 堆疊來回應 Web 瀏覽器的請求,這是最傳統建置網站的方法。所謂堆疊,是指用於建置、管理和執行web應用的一組程式軟體,以支援應用程式的視覺呈現、資料庫、聯網和安全。  LAMP 堆疊包含四種軟體技術,這些技術在後台共同協作,以建立可執行的 Web 應用程式,LAMP 架構由以下四個部份組成。 1)Linux Linux 是一個開放原始碼作業系統,是堆疊的第一層,支援上層的其他元件。 2)Apache Apache 是一個開放原始碼 Web 伺服器,構成 LAMP 堆疊的第二層,Apache 模組可存放網站檔案,並透過使用 HTTP 的瀏覽器交換資訊。 3) MySQL MySQL 是開放原始碼關聯式資料庫管理系統,這是 LAMP 堆疊的第三層。LAMP 模組使用 MySQL 來存放、管理和查詢關聯式資料庫中的資訊。 PHP PHP 是一倜超文字預處理器,是 LAMP 堆疊的最後一層,它是一種指令碼語言,可讓網站執行動不斷變化的軟體資訊。 要注意的是,Web 開發人員通常會將 PHP 程式設計語言內嵌於 HTML 中,亦即撰寫在同一頁面上,以便在網站上顯示即時或更新的資訊。, 當您在瀏覽器中開啟網頁時,LAMP 堆疊將執行以下程序; 1)接收請求 Apache Web 伺服器會從瀏覽器接收傳入的請求。如果請求載入靜態檔案,Apache 伺服器會直接回應適當的內容。如果請求是針對動態內容,Apache 伺服器會將請求傳遞給 PHP 元件,PHP 元件會尋找並載入可處理請求的相應 […]

繼續閱讀

編譯語言與直譯語言

June 6, 2024 | 堆疊探討

初學電腦程式語言時,最感到奇怪的,不是程式本身,這方面照跟就是了;但不同的電腦語言,會有不同的框架,譬如Android  Studio,我常碰到的技術問題都在Gradle裏,但我根本不知Gradle 是甚麼,有何功能扮演?要了解這方面,就要明白甚麽叫編譯語言和直譯語言。 編譯語言在程式執行時先會透過編譯器將你的程式編譯成電腦看得懂的機器碼,譬如C++所編譯好的檔案就是我們在Windows裏的.exe檔案,編譯語言多數是靜態語言。他們會事先定義變數類別和做類別檢查等等,典型的編譯語言除卻C++外,還有 C、Rust、Go、Visual Basic、Swift、Obj-C等等。 直譯語言的執行器會將一行一行的程式碼直接編譯成機器碼,讓程式的類別檢測更靈活,但是緩慢的運行速度是直譯語言最大的壞處,最典型的直譯語言有Javascript和Python。 要注意的是,編譯語言的可執行檔(如C++的.exe 檔)通常是可以獨立運行的,但直譯語言則需要有一個適合的執行環境或者說是一個VM,才可以執行,例如Python3程式碼便需要在安裝了Python3的電腦中才可以運行,也就是說python3 程序不可能在舊python2電腦中運行了;又例如 JavaScript 只能使用瀏覽器提供的功能,它無法獨立執行 (看起來像獨立執行,實際上卻是系統自動在背後建立執行環境,如 Chrome 的V8這個JavaScript 執行引擎)。 反之,C++17雖然也只能在新電腦中編譯,但他的可執行檔甚至連不支援C++的電腦都可以運行。然而,編譯語言在使用Library/Modules的時候,除了下載下來,還需要用一個建構系統去連結不同的函式庫和你的不同程式檔,如在C++當中有CMake ,在Rust中則有Cargo,而Java 的其中一個建構系統就是Gradle。 程式師為了改善編譯語言以及直譯語言的缺點,因而發展出即時編譯的技術,這種技術混合了編譯語言與直譯語言的優點,如同編譯語言,會先把程式原始碼編譯成中介碼 (Bytecode)。到執行期時,再將中介碼(bytecode)直譯,之後執行。使用即時編譯技術的語言會比純編譯語言來得慢一些,但是卻又擁有直譯語言的特性,代表語言有 Java和C#。 還有一款叫組譯語言,對應粒CPU內核的基本指令集,是針對電腦的基作操作而已,不太重要囉,可以不理。

繼續閱讀

由LAMP Stack 到 JAM Stack ——— 傳統架構前後端之分離

May 29, 2024 | 堆疊探討

傳統網站的堆疊方法「LAMP Stack」,是前後端程式也在同一頁面上(試想想index.php 這頁面),然後放在伺服器等待使用者透過瀏覧器作出頁面的要求。當使用者開啟 Web 的某網站時,伺服器會產生顯示相關HTML 之頁面,然後將這些頁面傳送給使用者。 這個過程是相當緩慢的,在使用者可以檢視這些頁面之前,他們必須等待後端應用程式執行和產生 HTML,以及等待 HTML 到達他們的裝置。 JAM Stack 在這方面改善了速度,為使用者帶來更快的使用者體驗和為開發者帶來更簡單的建置網站的方法。 J 代表JavaScript,是 Web 應用的程式設計語言。 A 代表API(應用程式程式設計介面),是一種從第三方應用程式要求資料的方法。 M 代表Markup ,是為瀏覽器提供格式化指令的代碼(HTML 和 CSS)。 在 JAMstack Web 應用程式中,會預先建立好HTML 和 CSS 標記代碼,並儲存在內容傳遞網路 (CDN) 中;不同於在伺服器端執行一個單一的後端應用程式來產生動態內容,此類應用程式的動態元件是基於 API,而JavaScript 則負責呼叫 API。 比方說,使用 JAMstack 方法建置Web 應用程式,開發者不用編寫整個後端應用程式,而是建立了一系列靜態且輕量級的 HTML 頁面,並將其儲存在 CDN 中。當使用者開啟應用程式時,CDN 會立即將相應的 HTML 頁面交付給使用者,因為 CDN 比網站的伺服器更接近使用者,再配合呼叫 API 來渲染動態資料,載入的速度較快。 而從開發者角度看,亦省卻了大量編寫後端程式代碼的工作。 如欲深入了解這網站建置的進化過程,可學習本網站此課程。 JAM Stack – […]

繼續閱讀