效率升級之巧用SSH升級部署程序

最近一段的工作是和馬來西亞的客戶一起Hack用React去重構(gòu)他們的主站,讓人比較郁悶的是他們對CI沒有推崇连茧,認(rèn)為Hack的工作沒有必要創(chuàng)建一個CI, 因?yàn)橹鲗?dǎo)權(quán)在他們那邊口芍,所以也就沒有太去堅(jiān)持這件事情。但最后還是達(dá)成一致使用Docker在服務(wù)器上面手動部署。
部署環(huán)境為AWS的EC2 Instance, 馬來西亞那邊不給西安他們的AWS 權(quán)限歼争,只是提供了一個Server的IP和密碼,所以剛開始的時候我們的部署步驟為:

ssh root@23.34.54.56
//輸入server密碼
cd app
git pull
// 輸入git密碼
docker-compose restart server

每一次更新都需要六步,其中還有兩部需要輸入密碼堪置,每天都有執(zhí)行好幾遍躬存,對于我這個特別懶的程序猿真的是無法忍受,開始想怎么能夠把六步變成一鍵執(zhí)行舀锨?
要實(shí)現(xiàn)一鍵執(zhí)行岭洲,過程中不能輸入密碼,但密碼也不能明文的寫到一個腳本坎匿,太不安全盾剩。解決這個問題我們需要使用SSH的OpenSSH Key來進(jìn)行認(rèn)證,免去輸入密碼的麻煩替蔬。比如我們要登錄到Linux server上告私,只需要:ssh -i ~/.ssh/ec2.pem root@23.34.54.56
具體實(shí)現(xiàn)步驟也是比較簡單:

  1. 生成key pair 和 pem file
ssh-keygen -t rsa -b 2048 -v

需要輸入key的名稱:ec2,不要設(shè)置密碼承桥。
完成后會生成ec2 和 ec2.pub兩個文件,重命名pem文件
mv ./ec2 ~/.ssh/ec2.pem

  1. 將認(rèn)證文件從本地上傳到server端
ssh-copy-id -i ./ec2.pub root@23.34.54.56
//輸入server密碼
  1. 測試連接
ssh -i ~/.ssh/ec2.pem root@23.34.54.56

解決了無密碼登錄server后驻粟,還需要解決git密碼問題,其實(shí)和上述的原理差不多快毛,但步驟不同格嗅,具體過程可以參見 GitHub幫助文檔。然后將repo的url設(shè)置為git remote set-url origin git@github.com:*USERNAME*/*OTHERREPOSITORY*.git
如果你的代碼是在github上托管的唠帝,按照其文檔步驟就OK了屯掖,但我們使用的git是公司內(nèi)部自己的,git服務(wù)ssh的端口被改成了5442襟衰,做完以上步驟仍然連接不到git服務(wù)器贴铜,需要我們進(jìn)行額外的配置:
打開或創(chuàng)建~/.ssh/config,加入以下配置

Host my.git.com # git倉庫地址
Port 5442
IdentityFile ~/.ssh/id_rsa_git # 生成的pem文件名稱

到此為止,無密碼登錄的需求已經(jīng)滿足,部署步驟需要四步:

ssh ~/.ssh/ec2.pem root@23.34.54.56
cd app
git pull
docker-compose restart server

ssh 提供在本地直接運(yùn)行服務(wù)器命令瀑晒, 例如前兩步就可以放在一行

ssh ~/.ssh/ec2.pem root@23.34.54.56 cd app

這樣的話就直接進(jìn)入到server的app目錄下绍坝。但想執(zhí)行多條命令的話可以在命令之間加&&來實(shí)現(xiàn)如

ssh ~/.ssh/ec2.pem root@23.34.54.56 cd app && git pull && docker-compose restart server

但不隨人愿,&& 后面的命令沒有在server上執(zhí)行苔悦,而是在local執(zhí)行了轩褐,原來是shell把 ssh ~/.ssh/ec2.pem root@23.34.54.56 cd app 解析成第一條local命令,git pull 為第二條local命令玖详,故而第二條命令沒有在server執(zhí)行把介。要解決這個問題其實(shí)很簡單,只需要在server的上執(zhí)行的幾條命令前后加上單/雙引號即可

ssh ~/.ssh/ec2.pem root@23.34.54.56 "cd app && git pull && docker-compose restart server"

一鍵升級的目標(biāo)已經(jīng)達(dá)到蟋座,但命令還是太長了拗踢,每次升級輸入或者copy這么長的命令也是很痛苦的。我們可以借助shell的alias特性實(shí)現(xiàn)向臀,即

echo  alias myserver='ssh ~/.ssh/ec2.pem root@23.34.54.56' >>  ~/.zshrc #.bashrc
echo  alias update_myserver='myserver "cd app && git pull && docker-compose restart server"' >>  ~/.zshrc #.bashrc

最終巢墅,只需要敲擊update_myserver就可完成一次程序的升級部署。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市君纫,隨后出現(xiàn)的幾起案子驯遇,更是在濱河造成了極大的恐慌,老刑警劉巖蓄髓,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妹懒,死亡現(xiàn)場離奇詭異,居然都是意外死亡双吆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門会前,熙熙樓的掌柜王于貴愁眉苦臉地迎上來好乐,“玉大人,你說我怎么就攤上這事瓦宜∥低颍” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵临庇,是天一觀的道長反璃。 經(jīng)常有香客問我,道長假夺,這世上最難降的妖魔是什么淮蜈? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮已卷,結(jié)果婚禮上梧田,老公的妹妹穿的比我還像新娘。我一直安慰自己侧蘸,他們只是感情好裁眯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著讳癌,像睡著了一般穿稳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晌坤,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天逢艘,我揣著相機(jī)與錄音,去河邊找鬼泡仗。 笑死埋虹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的娩怎。 我是一名探鬼主播搔课,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了爬泥?” 一聲冷哼從身側(cè)響起柬讨,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎袍啡,沒想到半個月后踩官,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡境输,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年蔗牡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗅剖。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡辩越,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出信粮,到底是詐尸還是另有隱情黔攒,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布强缘,位于F島的核電站督惰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏旅掂。R本人自食惡果不足惜赏胚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辞友。 院中可真熱鬧栅哀,春花似錦、人聲如沸称龙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲫尊。三九已至痴柔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疫向,已是汗流浹背咳蔚。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搔驼,地道東北人谈火。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像舌涨,于是被迫代替她去往敵國和親糯耍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容