一:本地終端連接到阿里云服務(wù)器 (ubuntu,其他系統(tǒng)步驟可能稍有出入,但是方法一致)
-
首先我們要保證我們終端能夠連接到服務(wù)器,如果忘記阿里云服務(wù)器 root 登錄密碼,可以如下重置。
重置密碼(選擇重置實例密碼) 使用
terminal終端進行遠程連接
ssh root@100.100.100.100
然后輸入我們剛剛重置的實例密碼。

登陸成功就會出現(xiàn)這個提示
- 讓
terminal能夠默認長時間連接,不因為一小段時間未操作,就斷開連接。
編輯服務(wù)器
/etc/ssh/sshd_config,最后增加
ClientAliveInterval 60
ClientAliveCountMax 60
表示每 60 秒向客戶端發(fā)起一次心跳,如果客戶端無回應(yīng),則最多累計發(fā)送 60 次。
- 每次遠程登錄如果需要輸入密碼略顯復(fù)雜,接下來配置 ssh 免密登陸。
- 安裝 ssh:
sudo apt-get install ssh- 生成公鑰私鑰:
ssh-keygen -t rsa(一路Enter回車鍵到底)cd ~/.ssh文件,會發(fā)現(xiàn)多了如下三個文件authorized_keys id_rsa id_rsa.pub- 將本地機器上的
id_rsa.pub文件里面的公鑰,拷貝到 服務(wù)器的authorized_keys文件中- 最后在服務(wù)端運行
service ssh restart重啟即可配置完成。再次運行ssh root@100.100.100.100就可以不需要輸入密碼直接登錄了。
二:搭建環(huán)境
- 安裝 nvm 這是一個 node 的版本控制器
- 升級
sudo apt-get update保證 apt-get 是最新版。sudo apt-get install vim openssl build-essential libssl-dev wget curl git安裝一些環(huán)境必要包curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash安裝 0.31.4 版本的 nvm,有時候因為網(wǎng)絡(luò)原因會失敗,可以多試幾次。- 重啟終端,然后用
nvm命令測試安裝是否成功。
- 安裝指定版本的 node
nvm install v8.15.1安裝指定版本nvm use 8.15.1當前環(huán)境使用指定版本nvm alias default 8.15.1指定默認 node 版本
- 查看并更換 npm,npm 是 node 的包管理器,會隨著 node 自動安裝
- 作為國內(nèi)開發(fā),需要查看 npm 的源:
npm config get registry- 如果源不是淘寶的,需換成淘寶源:
npm config set registry https://registry.npm.taobao.org/
- 安裝 nginx,因為 egg.js 需要使用 nginx 來做反向代理。
sudo apt-get install nginxsudo /etc/init.d/nginx start啟動 nginxcurl http://localhost/ping 一下這個地址,返回Welcome to nginx!表示安裝成功。
- 為什么外網(wǎng)不能訪問我們的首頁呢?這是因為阿里云服務(wù)器有個安全組配置,我們需要去打開 80 端口。

點擊這個開始進行安全組訪問配置

把 80 和 443 端口打開來,因為后面我們需要配置 https

此時,通過外網(wǎng)瀏覽器就可以訪問我們 nginx 首頁啦
三:上傳 egg.js 代碼到服務(wù)器
- 使用 騰訊 git 代碼管理平臺,上傳自己的代碼
- 將我們阿里云遠程服務(wù)器中 ~/.ssh/ 目錄下的 id_rsa.pub 公鑰加入到代碼管理的 ssh 中。讓遠程服務(wù)器能訪問我們的 git 代碼倉庫。
- git clone xxxx代碼地址xxxx 即可。
四:利用 nginx 實現(xiàn) egg.js 的反向代理,并且支持 https
前期提條件:有一個備案好的域名。
-
去 阿里云的 SSL 控制臺,申請個人免費 SSL ,每個有效期只有一年,目前有完全免費的。
SSL 簽發(fā)狀態(tài) -
然后點擊
下載,會看到如下頁面。
證書下載 點擊幫助,根據(jù) nginx 幫助內(nèi)容配置 nginx。
期間遇到任何問題,個人超過一個小時未解決,可以提交工單,你是阿里云付費用戶,阿里云會有人幫你解決問題的。很強大!
- 幾個部署 SSL 需要用到的命令
tar zcvf cer.tar.gz cer將本地證書打包成cer.tar.gz壓縮文件scp local_file remote_username@remote_ip:remote_folder將本地文件傳遞到服務(wù)器tar xvf cer.tar.gz服務(wù)端解壓縮文件rm -rf cer.tar.gz刪除多余的壓縮文件
確保 cer 目錄放在 /etc/nginx/ 下,然后在 /etc/nginx/conf.d 文件夾下創(chuàng)建 myprogram-7001.conf 文件,并且填入一下內(nèi)容
# 以下屬性中以ssl開頭的屬性代表與證書配置有關(guān),其他屬性請根據(jù)自己的需要進行配置。
server {
listen 443 ssl; #SSL協(xié)議訪問端口號為443。此處如未添加ssl,可能會造成Nginx無法啟動。
server_name mt-app.runduck.cn; #將localhost修改為您證書綁定的域名,例如:www.example.com。
root html;
index index.html index.htm;
ssl_certificate cer/3670617_mt-app.runduck.cn.pem; #將domain name.pem替換成您證書的文件名。
ssl_certificate_key cer/3670617_mt-app.runduck.cn.key; #將domain name.key替換成您證書的密鑰文件名。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用該協(xié)議進行配置。
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:7001;
}
}
server {
listen 80;
server_name mt-app.runduck.cn;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
注釋掉 /etc/nginx/nginx.conf 文件內(nèi)的 #include /etc/nginx/sites-enabled/*; 防止額外配置影響我們自己的配置。
- 配置完成后用
sudo nginx -t命令檢查我們 conf 里面的配置是否正確。輸出syntax is ok。sudo service nginx reload重啟 nginx 服務(wù)器
五:再安裝一個 pm2,有部分 nodejs 代碼需要用 pm2 執(zhí)行
npm i pm2 -gpm2 start app.js --name="api"# 啟動應(yīng)用程序并命名為 "api"


