一:本地終端連接到阿里云服務器 (ubuntu括堤,其他系統(tǒng)步驟可能稍有出入,但是方法一致)
-
首先我們要保證我們終端能夠連接到服務器率寡,如果忘記阿里云服務器 root 登錄密碼职烧,可以如下重置捧挺。
重置密碼(選擇重置實例密碼) 使用
terminal
終端進行遠程連接
ssh root@100.100.100.100
然后輸入我們剛剛重置的實例密碼虑绵。
登陸成功就會出現(xiàn)這個提示
- 讓
terminal
能夠默認長時間連接,不因為一小段時間未操作闽烙,就斷開連接翅睛。
編輯服務器
/etc/ssh/sshd_config
,最后增加
ClientAliveInterval 60
ClientAliveCountMax 60
表示每 60 秒向客戶端發(fā)起一次心跳黑竞,如果客戶端無回應捕发,則最多累計發(fā)送 60 次。
- 每次遠程登錄如果需要輸入密碼略顯復雜很魂,接下來配置 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
文件里面的公鑰遏匆,拷貝到 服務器的authorized_keys
文件中- 最后在服務端運行
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)絡原因會失敗,可以多試幾次喊暖。- 重啟終端惫企,然后用
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 自動安裝
- 作為國內開發(fā),需要查看 npm 的源:
npm config get registry
- 如果源不是淘寶的巩掺,需換成淘寶源:
npm config set registry https://registry.npm.taobao.org/
- 安裝 nginx偏序,因為 egg.js 需要使用 nginx 來做反向代理。
sudo apt-get install nginx
sudo /etc/init.d/nginx start
啟動 nginxcurl http://localhost/
ping 一下這個地址胖替,返回Welcome to nginx!
表示安裝成功研儒。
- 為什么外網(wǎng)不能訪問我們的首頁呢?這是因為阿里云服務器有個安全組配置独令,我們需要去打開 80 端口端朵。
點擊這個開始進行安全組訪問配置
把 80 和 443 端口打開來,因為后面我們需要配置 https
此時燃箭,通過外網(wǎng)瀏覽器就可以訪問我們 nginx 首頁啦
三:上傳 egg.js 代碼到服務器
- 使用 騰訊 git 代碼管理平臺冲呢,上傳自己的代碼
- 將我們阿里云遠程服務器中 ~/.ssh/ 目錄下的 id_rsa.pub 公鑰加入到代碼管理的 ssh 中。讓遠程服務器能訪問我們的 git 代碼倉庫招狸。
- git clone xxxx代碼地址xxxx 即可敬拓。
四:利用 nginx 實現(xiàn) egg.js 的反向代理,并且支持 https
前期提條件:有一個備案好的域名裙戏。
-
去 阿里云的 SSL 控制臺乘凸,申請個人免費 SSL ,每個有效期只有一年挽懦,目前有完全免費的翰意。
SSL 簽發(fā)狀態(tài) -
然后點擊
下載
,會看到如下頁面信柿。
證書下載 點擊幫助冀偶,根據(jù) nginx 幫助內容配置 nginx。
期間遇到任何問題渔嚷,個人超過一個小時未解決进鸠,可以提交工單,你是阿里云付費用戶形病,阿里云會有人幫你解決問題的客年。很強大霞幅!
- 幾個部署 SSL 需要用到的命令
tar zcvf cer.tar.gz cer
將本地證書打包成cer.tar.gz
壓縮文件scp local_file remote_username@remote_ip:remote_folder
將本地文件傳遞到服務器tar xvf cer.tar.gz
服務端解壓縮文件rm -rf cer.tar.gz
刪除多余的壓縮文件
確保 cer 目錄放在 /etc/nginx/
下,然后在 /etc/nginx/conf.d
文件夾下創(chuàng)建 myprogram-7001.conf
文件量瓜,并且填入一下內容
# 以下屬性中以ssl開頭的屬性代表與證書配置有關司恳,其他屬性請根據(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
文件內的 #include /etc/nginx/sites-enabled/*;
防止額外配置影響我們自己的配置比藻。
- 配置完成后用
sudo nginx -t
命令檢查我們 conf 里面的配置是否正確铝量。輸出syntax is ok
。sudo service nginx reload
重啟 nginx 服務器
五:再安裝一個 pm2韩容,有部分 nodejs 代碼需要用 pm2 執(zhí)行
npm i pm2 -g
pm2 start app.js --name="api"
# 啟動應用程序并命名為 "api"