這一週來在學著使用Hugo與靜態網頁佈署,對其關鍵字的郵件與網頁也變得比較有感,日前在信箱中莫名收到一封來自Nitrous的電子報,表示其名下的PubStorm提供免費的HTML5靜態網頁存放代管服務,於是好奇地前往一探其內容是何物。原來storm是Nitrous所再開發的一種nodejs模組工具包,其用於快速佈署靜態網站架設。Nitrous本身是一個雲端開發環境,其有提供免費版可讓學生或業餘者利用來學習研究在雲端環境中架設程式應用,故幾個月前我好像有一度註冊過,所以才會收到這封推銷的電子郵件。
storm打著以文字指令環境來佈署網頁專站的發佈,這更加引發本人的好奇嚐鮮心態,之所以好奇的遠因是自己曾一度試著用某一台老電腦安裝極簡版文字環境介面centos,打算把它當作為伺服器環境來試著架設Apache, MySQL, CMS等網站建置環境。但因為實在恐懼於只有純文字指令的環境(想想連遇到問題無法直接在該台電腦上向眾家大神們求救,@#@#)遂很快地不了了之失去下文。所以今日再得見一種宣稱利用nodejs為伺服器語言透過文字指令介面操作的免費網站寄存服務,就立即躍躍欲試。

以下的記錄與試驗,皆在ubuntu14.04 作業環境下進行
一)前置準備
1)本地端電腦上要安裝node.js:nodejs是一個以javascript(與C++)寫成的程式代碼,主要可用於佈署在伺服器、與網路應用程式(也就是我們一般說的「後端開發工具」Back End Development)
$sudo apt-get update
$sudo apt-get install nodejs

如果想多認node.js,可以參考這本線上免費的nodejs入門書小冊。(作者說該書合適的讀者對象設定為:「至少對一門諸如Ruby、Python、PHP或者Java這樣物件導向程式語言有一定的經驗;對JavaScript處於初學階段,並且完全是一個Node.js的新手。 」我自己並不符合這個條件,從去年初借了一本「nodejs入門」完全不懂,到今年初再借一次好像了解了其中的10~20%。如今再看這本nodejs入門書,自我感覺好像又多懂了一點吧(ˇˍˇ) )

2)安裝 npm(Node Package Manager)
據說在ubuntu 作業系統下,nodejs其實早已預設內建在其環境中。但除了nodejs,還得有npm,這個ubuntu不太可能一併預先內建。npm(Node Package Manager) 是Node.js 下的主流套件管理程式。也就是再透過它來管理、安裝storm
$sudo apt-get install npm

若想進一步了解npm常用的入門指令,請參見 http://dreamerslab.com/blog/tw/npm-basic-commands/

3)安裝 public storm
本地端電腦具備了1)2)的環境條件後,就可以準備進入安裝storm module 的步驟。
$sudo npm install -g pubstorm

這樣理論上應該就已安裝好了storm。不過當我試著執行任一個storm指令時,卻傳回了失敗訊息
/usr/bin/env: node: No such file or directory
查了一下在stackoverflow有這樣的建議。(stackoverflow網站上真的有好多高手來回覆關於代碼編程以及數位硬體等問題哦)據說有這樣的情況是因為Ubuntu 已默認內建了NodeJS,而在執行某個node應用套件時,要下的指令是: ‘nodejs somethign.js’ 來取代 ‘node something.js’

所以要在命令列打入這行指令
ln -s /usr/bin/nodejs /usr/bin/node (ln指令在ubuntu底下的作用是「建立一個同步連結」,請參考:Ubuntu正體中文wiki說明。如果傳回授權遭拒的訊息,則在前面加上sudo–以暫時取得root 最高權限來執行這條命令)

這樣可以把原本’node something.js’自動轉換為 ‘nodejs somethign.js’(大概是這樣的意思吧?不管如何總之下了這道指今後,本機端安裝的storm就可以正常呼叫使用了)

二)試驗storm
4)成功安裝好了storm 之後,接下來就是如何把已經作好的網頁網站上傳到它的主機上。
因為我之前已在電腦上安裝過hugo,並「部份」成功地把作出來的練習式網站ftp/ git push 到互聯網上公開呈現。所以姑且以此實驗性小專案,不用再另花精神地作其它網頁網站(我真的超討厭作網站的啦)。
把在文字指令環境下,把目前工作目錄(pwd)切挺到已製作完成準備放上storm 的資料夾下。
$storm login (如果還沒申請storm帳號,可在瀏覧器的圖形介面環境申請,亦可在CLI底下打$storm signup 申請)
成功連線登入後,第一步是進行工作專案的初始化

$storm init
$storm publish ## 準備把網頁資料發佈上網

完工~~~,用瀏覧器來開始這個新發佈的網址https://myblogtest.pubstorm.site 如下

這樣上傳網架的過程看似簡單容易,因為我不滿意初次發佈的網站內容(連結出錯故CSS無法正確呈現),所以看了網站上指令說明,就立即把原專案給刪除,結果不幸的故事才要開始。本以移除了某專案之後,可以再重新上傳更新網站專案。結果接下來不管是在原專案資料下或另外新建的其它資料夾下,打入storm 指令卻一直出現:
[Fatal] A PubStorm project already exists in the current working directory; aborting.
就算我試著利用storm reinit指令,則會出現原專案已不屬於我,無法進行重新初始化之類的訊息。
[Fatal] Could not find a project “XXprojectname” that belongs to you.
這時簡直陷入無法叫得動storm專案的絕境,且在網站上找不到這種情況如何解決的救命文件,只好試著先把storm移除重安裝=>無效;移除npm重安裝npm, storm =>依然無效, 移除nodejs重安裝nodejs,npm,storm =>依然還是無效!!!!( ̄口 ̄)!!
實在找不到解決的辦法,我這寧為瓦碎的急性子連是否重新安裝作業系統都成了考慮的措施方案之一Σ( ̄□ ̄;, 這時才知道為何雲端運算的container/dock為何設計可以快速重置。另一個想到的可能解決作法是在另一台電腦上再初始一個與原來一模一樣的專案名稱,然後再回到原電腦上reinit 給該專案之類的變通方式。

但是過了幾小時之後,這個原本機端無法新建專案初始化的問題忽然自己莫名奇妙地消失一切正常又可以任意執行storm init指令了( ̄. ̄)+ …
這個耗費我一兩個小時的教訓告訴我,不要輕易刪除storm 專案。如果網頁網站內容要更新,但原資料夾已被初始過或原本在storm init過程中産生的”pubstorm.json”已遭刪除,則可使用”reinit“這個命令,把資料指定給原有的專案。

心得:
如果不是後半段自己手賤不明就理地刪除掉storm prject,遭致遇上一時之間無法執行指令的困窘,光以網頁從電腦端佈署到伺服器,pubstorm.com 這個模組包實在是簡單好用,官網上還提供了一些免費模版樣式可以引用,更有進階的自定安裝let’s encrypted; SSH, 自定網址指向DNS等服務。對於wix太過直觀感到無趣的網站架設初學者,不妨可以透利用pubstorm多學習一點基礎的git與文字指令環境操作。pubstorm本身適合用於建置一個美觀大方又不太需要三五天就更新網頁內容的專案型網頁。你說wordpress, drupal, joomla 這些CMS(content management system)不是安裝容易又很方便嗎。CMS越來越普及方便是沒錯,不過有幸體驗各家開發者進行的網路工具實驗,無論是技術上還是內容讓數位資訊與工具越來越多樣百家爭鳴而不是一家之言地姑養少數勢力獨佔壟斷宰制,這不是更好嗎?