從購買阿里云 ECS 服務(wù)器到搭建 Egg.js 運行環(huán)境

一:本地終端連接到阿里云服務(wù)器 (ubuntu,其他系統(tǒng)步驟可能稍有出入,但是方法一致)

  1. 首先我們要保證我們終端能夠連接到服務(wù)器,如果忘記阿里云服務(wù)器 root 登錄密碼,可以如下重置。


    重置密碼(選擇重置實例密碼)
  2. 使用 terminal 終端進行遠程連接

ssh root@100.100.100.100
然后輸入我們剛剛重置的實例密碼。

登陸成功就會出現(xiàn)這個提示
  1. terminal 能夠默認長時間連接,不因為一小段時間未操作,就斷開連接。

編輯服務(wù)器/etc/ssh/sshd_config,最后增加
ClientAliveInterval 60
ClientAliveCountMax 60
表示每 60 秒向客戶端發(fā)起一次心跳,如果客戶端無回應(yīng),則最多累計發(fā)送 60 次。

  1. 每次遠程登錄如果需要輸入密碼略顯復(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)境

  1. 安裝 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命令測試安裝是否成功。
  1. 安裝指定版本的 node
  • nvm install v8.15.1 安裝指定版本
  • nvm use 8.15.1 當前環(huán)境使用指定版本
  • nvm alias default 8.15.1 指定默認 node 版本
  1. 查看并更換 npm,npm 是 node 的包管理器,會隨著 node 自動安裝
  • 作為國內(nèi)開發(fā),需要查看 npm 的源:npm config get registry
  • 如果源不是淘寶的,需換成淘寶源:npm config set registry https://registry.npm.taobao.org/
  1. 安裝 nginx,因為 egg.js 需要使用 nginx 來做反向代理。
  • sudo apt-get install nginx
  • sudo /etc/init.d/nginx start 啟動 nginx
  • curl http://localhost/ ping 一下這個地址,返回 Welcome to nginx! 表示安裝成功。
  1. 為什么外網(wǎng)不能訪問我們的首頁呢?這是因為阿里云服務(wù)器有個安全組配置,我們需要去打開 80 端口。
點擊這個開始進行安全組訪問配置
把 80 和 443 端口打開來,因為后面我們需要配置 https
此時,通過外網(wǎng)瀏覽器就可以訪問我們 nginx 首頁啦

三:上傳 egg.js 代碼到服務(wù)器

  1. 使用 騰訊 git 代碼管理平臺,上傳自己的代碼
  2. 將我們阿里云遠程服務(wù)器中 ~/.ssh/ 目錄下的 id_rsa.pub 公鑰加入到代碼管理的 ssh 中。讓遠程服務(wù)器能訪問我們的 git 代碼倉庫。
  3. git clone xxxx代碼地址xxxx 即可。

四:利用 nginx 實現(xiàn) egg.js 的反向代理,并且支持 https

前期提條件:有一個備案好的域名。

  1. 去 阿里云的 SSL 控制臺,申請個人免費 SSL ,每個有效期只有一年,目前有完全免費的。


    SSL 簽發(fā)狀態(tài)
  2. 然后點擊下載,會看到如下頁面。

    證書下載

  3. 點擊幫助,根據(jù) nginx 幫助內(nèi)容配置 nginx。

  4. 期間遇到任何問題,個人超過一個小時未解決,可以提交工單,你是阿里云付費用戶,阿里云會有人幫你解決問題的。很強大!

  • 幾個部署 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 -g
  • pm2 start app.js --name="api" # 啟動應(yīng)用程序并命名為 "api"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容