亞馬遜EC2服務器申請+NODE服務器部署+阿里雲域名申請+SSL證書使用


最近,由於項目需要,自己申請了一台亞馬遜用於部署網站測試,在使用期間,發現網上沒有一篇非常完整的文章講解從服務器申請到域名解析,SSL證書申請的整個流程。所以自己總結一下,以供大家學習!

一、亞馬遜EC2申請

為什么選擇申請亞馬遜的服務器?只是因為項目需要而已,我本意是想申請阿里雲的的服務器的(畢竟是阿里的員工),並且亞馬遜提供一年的免費EC2服務器。

打開地址:https://aws.amazon.com/cn/ec2/?hp=tile&so-exp=below

點擊“免費試用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”ubuntu@ec2-xxx-xxx-xxx-xxx.ap-south-1.compute.amazonaws.com
webserver.pem: ssh密鑰
ubuntu: ec2服務器用戶名
ubuntu@ec2-xxx-xxx-xxx-xxx.ap-south-1.compute.amazonaws.com: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 update
sudo apt-get install curl

2. 安裝node.js

我們一般不建議使用apt-get node來安裝node.js,因為直接安裝會安裝最新版的,也許會和開發環境的不一致,照成一些兼容問題。

這里推薦一個管理不同版本node.js的工具:nvm,官網: https://github.com/creationix/nvm ;

使用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,

在阿里雲上申請一個域名: https://wanwang.aliyun.com/domain

搜索注冊一個你想要的域名,付款后,進入域名列表,選中你剛買的域名,點擊“解析”

在解析設置中,點擊添加記錄,在記錄值中填寫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網站部署就完成了。

 

 

 

參考資料:
https://blog.csdn.net/jjihuang/article/details/80777306
https://www.cnblogs.com/fengff/p/8892590.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM