亞馬遜EC2伺服器申請+NODE伺服器部署+阿里雲域名申請+SSL證書使用
最近,由於專案需要,自己申請了一臺亞馬遜用於部署網站測試,在使用期間,發現網上沒有一篇非常完整的文章講解從伺服器申請到域名解析,SSL證書申請的整個流程。所以自己總結一下,以供大家學習!
一、亞馬遜EC2申請
為什麼選擇申請亞馬遜的伺服器?只是因為專案需要而已,我本意是想申請阿里雲的的伺服器的(畢竟是阿里的員工),並且亞馬遜提供一年的免費EC2伺服器。
點選“免費試用Amazon EC2”
之後會跳轉到登入頁面,自己註冊一個賬號即可,註冊需要使用信用卡號。註冊之後進入EC2 Dashboard,
點選“啟動例項”按鈕
勾選“僅免費套餐”
然後選擇合適你自己的伺服器,我選擇的是Ubuntu Server 18.04 LTS (HVM), SSD Volume Type ,
進入選擇例項型別介面
全部使用預設的選擇,直接點選“稽核和啟動”按鈕
進入到核查例項啟動的頁面:
按照上圖步驟操作後,
點選“啟動例項”按鈕
點選“檢視例項”,進入例項面板,這裡可以檢視伺服器的靜態IP,這個IP就是外網可訪問地址
現在如果嘗試ping這個ip會發現超時
如果要想可以正常ping IP,需要開啟ICMP的入站規則
選擇網路與安全-安全組,選中你的例項(launch-wizard-xxx),選中入站,點選“編輯按鈕”
然後新增如下一條:
再次在自己的電腦終端中ping IP:
到目前為止,AWS EC2的一條免費的測試伺服器就申請好啦。
還有一點切記,如果你不想付費,在免費到期前,一定要終止伺服器,不然,會扣你信用卡中的美金的!
二、終端連線AWS EC2+SecueCRT連線
將上面申請到的ssh金鑰copy到資料夾.ssh下,在終端輸入命令
ssh -i“webserver.pem”[email protected]
webserver.pem: ssh金鑰ubuntu: ec2伺服器使用者名稱[email protected]om:ec2伺服器共有DNS(IPv4)登入成功後如下圖:
有些同學覺得直接使用終端不是很方便,有些功能,比如rz這種上傳檔案命令也用不了,那麼推薦使用SecureCRT,連結方式如下:
Hostname:對應EC2 公有DNS(IPv4)
Port:22
Username:ubuntu
PublicKey:選擇EC2配置中生成的ssh金鑰
當這些都完成後,你發現可能登入不成功,這個就是22的埠沒有開,
在 網路與安全-安全組,入站規則中新增如下規則:
之後,就可以在SecureCRT中登入伺服器啦。
三、nginx+node環境搭建
在伺服器申請成功後,就要開始搭建node環境了。
1. 開始前的準備
獲取root許可權,這樣可以避免一些檔案的建立,寫入的許可權問題
先獲取系統更新, 並且安裝curl工具
sudo apt-get updatesudo apt-get install curl
2. 安裝node.js
我們一般不建議使用apt-get node來安裝node.js,因為直接安裝會安裝最新版的,也許會和開發環境的不一致,照成一些相容問題。
使用curl安裝nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
安裝完nvm後,就可以通過nvm來指定安裝node.js版本了
# 列出可以安裝的node版本號 nvm ls-remote # 安裝指定版本的node (當前最新版本為v10.11.0, LTS版是v8.12.0) nvm install v8.10.0
然後通過node -v可以檢視當前版本號
現在node服務就安裝好啦,我們用最簡單的程式碼來測試node是否可用, 建立一個test.js檔案
mkdir demo cd demo touch test.js sudo vi test.js
將一下程式碼複製到test.js檔案中:
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
儲存檔案並退出:
# 儲存檔案並退出 :wq
啟動node伺服器:
當前伺服器訪問地址
但是我們在瀏覽器通過AWS EC2伺服器的共有IP並不能訪問成功,當我們在入站規則中開放3000埠後,就可以訪問成功
3. 安裝nginx
但是我們通常訪問網站是直接域名訪問,也就是外部只請求80埠。那麼這裡,我們就需要通過反向代理來實現多埠的分發工作。
安裝nginx,並檢視版本號
sudo apt-get install nginx
nginx -v
進入nginx配置目錄(/etc/nginx),檢視檔案
通過公有IP訪問,頁面返回如下資訊:
這說明,我們的nginx服務安裝成功,並且已經成功啟動,現在來給http://127.0.0.1:3000做一個代理
在/etc/nginx中新增nginx配置
cd conf.d
touch test.conf
sudo vi test.conf
複製一下程式碼到test.conf中,儲存退出檔案,
server { listen 80; server_name xxx.xxx.xxx.xxx; #當前使用ip訪問,所有直接配置共有IP location / { proxy_pass https://127.0.0.1:3000; # 被代理的伺服器的域名 } }
在目錄 /etc/nginx中執行以下命令
# 檢測配置是否正確 nginx -t # 重啟伺服器 nginx -s reload
執行結果如下:
瀏覽器通過公網IP訪問,頁面正常返回
四、阿里雲域名申請
上面可以通過IP訪問網站已經成功,但是IP不是一個實用易記的地址,現在就需要通過申請域名來綁定當前伺服器IP,
搜尋註冊一個你想要的域名,付款後,進入域名列表,選中你剛買的域名,點選“解析”
在解析設定中,點選新增記錄,在記錄值中填寫AWS EC2的共有IP,點選“確定”。
現在我們在瀏覽器中輸入域名,我們就會看到“welcome to nginx”的頁面,這個說明域名已經解析成功。
之後修改nginx配置,將域名繫結到埠為3000的站點上即可
server { listen 80; server_name www.yourdomain.com; # 這裡改成你的域名 location / { proxy_pass https://127.0.0.1:3000; } }
現在通過瀏覽器訪問,你就可以看到熟悉的hello world頁面啦。
五、FreeSSL證書申請和nginx配置
1.申請FreeSSL證書
到現在我們當然還是不能滿足,為了網站的訪問安全,並且現在各種搜尋引擎對https協議都開始採用優先排名,因此申請SSL是必要的。
現在有一些機構提供一些免費的SSL證書供大家使用,推薦FreeSSL.org:https://freessl.org/
如果只是用於測試,免費證書完全可以滿足我們的要求,輸入你的域名,選擇一個品牌,點選“建立免費的SSL證書”
之後選擇證書型別,驗證型別,點選“點選建立”
之後會生成DNS驗證記錄:
進入阿里雲的域名管理,在解析設定中點選“新增記錄”
在彈窗中新增freessl中的dns驗證資訊,點選“確認”按鈕。
之後,回到FreeSSL.org的驗證介面,點選“點選驗證”按鈕
驗證成功後,會生成CA證書,證書檔案,證書金鑰
注意,這裡點選“證書下載”,下載的檔案必須儲存好,不要丟失了
再次進入阿里雲的域名列表,點選需要配置的域名,進入域名的基本資訊頁面,點選“免費開啟SSL證書”
在申請證書的頁面,點選右上角的“上傳原有證書”按鈕,開啟彈窗,填寫對應的 證書檔案,證書金鑰,點選上傳
之後,點選“返回證書控制檯”
點選“我的證書”
你會看到剛新增的指紋
2. AWS EC2中新增https入站規則
先在入站規則中新增型別為https,埠為443,來源為任意位置的規則
3. 配置ssl證書到nginx
將前面下載的ssl證書上傳到AWS EC2中, 我放的地址為:/etc/nginx/ssl/yourdomain.com/
修改nginx配置
server { listen 80; server_name www.yourdomain.com; return 301 https://$host$request_uri; } server { listen 80; server_name yourdomain.com; return 301 https://$host$request_uri; } server { listen 443; server_name www.yourdomain.com; ssl on; location / { proxy_pass http://127.0.0.1:3000; } error_log /home/ubuntu/logs/nginx/www.yourdomain.com/error.log error; access_log /home/ubuntu/logs/nginx/www.yourdomain.com/access.log; ssl_certificate /etc/nginx/ssl/yourdomain.com/full_chain.pem; ssl_certificate_key /etc/nginx/ssl/yourdomain.com/private.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL; ssl_prefer_server_ciphers on; }
儲存退出配置檔案,重啟nginx伺服器,這時再通過域名訪問,就會看到安全的狀態
點選安全,可以檢視證書:
ok, 到此,一個基本的node網站部署就完成了。