從零開始構建部署上線Node.js+Express+Bootstrap+Jade響應式網站應用—RSPT丨留學生活第一站(三)
一、Nodejs 線上伺服器部署與釋出綜述
伺服器配置生產環境所需要的步驟大致為:
整個專案部署詳細流程文字解析:
部署流程圖依照學習課程的流程:
看著這個圖,Scott老師有一段精彩的故事詮釋它:
故事還得從左下腳的角落開始,一把椅子,一臺桌子,一個電腦,可能還有一罐紅牛,一包紙巾,我們就開始了白天當黑夜,黑夜當白天的程式設計之旅,程式碼寫的死去活來,bug敲的痛不欲生,總算在七七四九天之後,我們終於在電腦上藉助nodejs開發出了我們一個靜態網站,電影網站,一個給狗狗配音的手機app,一個裝修房子的微信小程式,還有一個可以回覆和分享和看電影的微信公眾號。然而這些應用都是跑在本地電腦上,誰也看不到,誰也用不了,左思右想,還是得把這些自己辛辛苦苦生出來的孩子放在網上給別人看,好歹也算是自己的一次創業經歷。
於是我們開始邁出了第一步,那就是先為這這五個應用購買一個域名,雖然購買五個也行,但是看看北京的房價,還是隻買一個吧,一個域名也可以分出五個二級域名來使用嘛,創業總是要省著點的嘛。購買域名之後,我們需要給這個域名備案,畢竟還是得接受國家監管的嘛,不備案不是中國人,哼~。
接下來我們要邁出第二步,把用來買零食的錢都用來買一臺伺服器,有了這個伺服器,我們總算給這些孩子們提供了一個家了,但是現在家徒四壁,啥都沒有,我們的五個孩子嗷嗷待哺,別說嬰兒車,安全座椅,連奶都沒有。
於是我們開始邁出第三步,從我們的小角落通過ssh通道,連線上我們的伺服器,配置使用者的許可權,安裝mongodb資料庫,配置nodejs環境,配置nginx前置數
於是我們邁出第四步,找一個寄養的家。什麼寄養的家,不就是一個託兒所嘛,好吧,我承認是一個非常安全的託兒所,我們找了一個提供私有倉庫的託兒所
於是我們邁出第五步,在本地和伺服器上都安裝git軟體,都安裝pm2,這個pm2不是北京天上的那個pm2.我們通過git來把孩子傳送到私有倉庫,讓伺服器通過git來下載孩子,至於pm2就是這個駕駛員兼職保姆,其實就是個老司機,我們本地通知伺服器上的pm2,讓他去私有倉庫(託兒所)用git把孩子運到新家後,pm2會去協調node程序,培養孩子們各自發揮自己的聰明才智,跟外面的朋友們進行各種互動,可是孩子們太自私了,都想搶佔80埠。
於是我們被逼邁出了第六步,開始分家,我們按照老大、老二、老三的順序,分別給他們分配3000埠、3001埠、3002埠、3003埠、3004埠,然後讓nginx來當伺服器的大門總管,由他一個人持有80埠,所有想要訪問新房的客人,都得先過nginx這一關,有他來識別訪客,如果訪客來看老二的,也就是電影網站,我們就把這個訪客轉發到3001埠,以此類推下去。伺服器的大門總管nginx一眼便識訪客們的真正目的,首先通過SSL證書跟訪客進行握手交流,溝通認證之後,便會把訪客的請求轉交給後臺的300X埠,由nodejs來全部接手這個請求。
埠總算是分好了,可是問題又來了,訪客們都蒙圈了,不知道咱們新家在哪裡,這時候我們才想起來最後一件事,那就忘了給他們地址了,於是我們氣喘吁吁的跑到購買域名的服務商,去把域名的DNS記錄修改後,並且進行解析指向,給5個孩子分別分配了五個二級域名,訪客們就可以通過這五個域名,準確的找到這五個孩子們後發糖吃了。
養一個家不容易,養一個有孩子的家更難,事情到這裡也遠遠沒有結束,我們還有太多的育兒心得在接下來的學習中,這次部署方案並不是唯一的方式,也未必是最優,不同的產品的形態與運維方案有完全不同的操作方式。
二、選購域名伺服器及備案
我選購的域名商和伺服器商是: 阿里雲
官網地址:https://cn.aliyun.com/
進去後註冊賬號,個人實名驗證,然後去選擇伺服器的選擇。根據阿里雲的購買指南和網上的教程,買一個伺服器,一個域名,然後去備案,備案部分稍微有點麻煩,但只需要按照官方指示,也是很容易通過的。
三、遠端登入伺服器
使用mac電腦,我自己的是黑蘋果,虛擬機器上安裝OS系統,然後進行操作。mac系統已經內建了windows下的 putty 軟體功能,下面就說一下具體使用方法。
mac系統下開啟的終端頁面,輸入如下程式碼:
ssh user@hostname
注:上邊程式碼為固定格式,其中
user為 linux 伺服器的管理員名稱
hostname 為 linux 伺服器的IP
如: ssh [email protected]
如此就可以像windows下的putty工具一樣遠端登入管理你的linux伺服器了。這裡可以用ssh [email protected] 登陸,因為root是預設最高管理員。
接下來就是輸入密碼(命令列輸密碼,不會顯示,游標都不會動,但只要準確輸入就好),確定後就可以遠端登入到咱們的伺服器了。
登入進ssh [email protected]後,我們需要配置root許可權賬號,指定欽差大臣去完成管理,不會動到一些敏感檔案。
- 通過
adduser rspt_manger
命令進入 - 輸入新的管理員密碼,完成管理員資訊完善
- 對
rspt_manger
進行升權:gpasswd -a rspt_manager sudo
- 輸入
sudo visudo
,然後新增一句話,例如:
- 通過
shift+y
命令進入儲存,回車退出 - 這樣就可以通過
ssh [email protected]
來登入伺服器了
配置通過SSH實現無密碼登入
- 本地生成金鑰
在終端下執行命令:
ssh-keygen -t rsa -b 4096 -C "郵箱"
一路回車,各種提示按預設不要改,密碼可以跳過,等待執行完畢。然後執行:ls ~/.ssh
可以看到兩個金鑰檔案:id_rsa(私鑰),id_rsa.pub(公鑰)
然後輸入:eval "$(ssh-agent -s)"
把ssh代理跑起來。
將ssh的key加入到代理中:ssh-add ~/.ssh/id_rsa
- 放置公鑰到Linux伺服器。
在伺服器端輸入ssh-keygen -t rsa -b 4096 -C "郵箱"
一路回車到底;
然後輸入:eval "$(ssh-agent -s)"
把ssh代理跑起來。
將ssh的key加入到代理中:ssh-add ~/.ssh/id_rsa
然後把id_rsa.pub的內容加入到伺服器端的預設驗證檔案authorized_keys,執行:
先登入到遠端伺服器
cd ~/.ssh
cat -n /home/cssor/.ssh/id_rsa.pub >> authorized_keys
#將公鑰內容加入到authorized_keys檔案,沒有則新建一個就行。例如:
然後通過 chmod 600 authorized_keys
把這個檔案的許可權給修改下。
在通過:sudo service ssh restart
把這個ssh服務重啟。
- 配置本地ssh config檔案。
執行:vi ~/.ssh/config
加入以下內容:
Host cssor_server #別名,域名縮寫
HostName cssor.com #完整的域名
User cssor #登入該域名使用的賬號名
PreferredAuthentications publickey #有些情況或許需要加入此句,優先驗證型別ssh
IdentityFile ~/.ssh/id_rsa #私鑰檔案的路徑
注意事項
公鑰要放在登入伺服器所用的賬號的家目錄下,比如你用 abc登入遠端伺服器,就要把公鑰 放到 /home/abc/.ssh/
下, authorized_keys檔案也是在這個目錄下。
給一張我完整無密碼登陸遠端伺服器的樣圖:
第四部分會接著繼續實現線上部署~~~~