我要在雲伺服器上開發 Cumulo 的服務, 基於 Node 和 shadow-cljs 執行,
剛發現阿里雲有按小時租賃伺服器的設定, 感覺自己以前的伺服器太慢, 就試試,
面對的問題
此前伺服器選擇香港節點, 發現網路還是有點延時, 另外配置較低,
考慮到大部分時間閒置, 不好意思買很高, 但是對於 shadow-cljs 來說太少,
因為 ClojureScript 編譯需要 Java, 冷啟動吃 CPU, 執行吃記憶體,
我考慮至少 3G 記憶體, 雙核 CPU, 那樣應該夠的.
之前的伺服器是共享的, 估計有限制, 我 CPU 持續跑滿半分鐘, 就會無響應,
提交工單還是沒解決, 我只能想到再買個伺服器了, 開發需要.
初始化伺服器
首先, 在阿里雲的介面裡選擇好配置了網路, 建立新的機器, 華東2機房,
我出於習慣選擇了 Ubuntu, 裡面的操作命令我比較熟悉,
建立需要幾分鐘, 完成之後會收到簡訊提示, 機器建立完成, 需要重置密碼,
於是就重置密碼, 然後還要重啟伺服器才能生效, 用 root
登入,
然後 adduser
命令建立自己的使用者, visudo
修改許可權, 登入新使用者.
安裝相關依賴
shadow-cljs 執行依賴 JDK, 所以要安裝一份, 版本 8 就好,
mosh 是處理 SSH 連線斷網的, 安裝後在伺服器需要啟動一下 mosh-server.
sudo apt-get update
sudo apt-get install aptitude
sudo aptitude install git openjdk-8-jdk mosh
參考官方文件, 安裝 Node.js :
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
參考官方文件, 安裝 yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn
最後安裝一下自己的編輯器, 用來編輯程式碼:
sudo npm i -g calcit-editor
配置環境
然後為了方便登入, 執行一下 ssh-copy-id
拷貝本地的公鑰到伺服器.
前面說了伺服器已經有 mosh-server
在執行, 本地應該是可以用 mosh 命令登入的.
不過, 當前的安全策略還不可以, Mosh 採用 UDP 協議, 需要配置安全策略,
在”安全組規則”裡面, 允許 UDP 60000/61000
從 0.0.0.0/0
訪問.
除了 UDP 埠, shadow-cljs 相關還有 7000
, 9630
, 這些埠,
而 calcit-editor 用到 6001
6002
等等埠, 都需要加上,
考慮到我的伺服器還有 WebSocket 用到 5021 這個奇怪的埠, 範圍還要擴大.
我是直接在”安全組規則”把所有相關範圍都開啟了的
然後我需要有個 /data/
目錄存放資料, 自己建立:
sudo mkdir /data
sudo chown -R chen:chen /data
另外兩次碰到需要修改奇怪的許可權, 這個路徑可能是 root
給我建立的.
sudo chown -R chen:chen /home/chen/.config/
然後就是在伺服器上使用 Git 的初始配置, 以及生成公鑰, 新增到 GitHub:
git config --global user.email jiyinyiyong@gmail.com
git config --global user.name jiyinyiyong
ssh-keygen
cat ~/.ssh/id_rsa.pub
執行服務
後面就是具體到 Cumulo 專案相關的內容了, 比如當前的應用:
git clone git@github.com:TopixIM/impatiens.git
然後 Cumulo Workflow 的文件把前後端都啟動起來, 執行一個伺服器.
基本就完成了, 一個可以在雲伺服器上開發的環境, 同時在遠端實時預覽效果.