最近,由于项目需要,自己申请了一台亚马逊用于部署网站测试,在使用期间,发现网上没有一篇非常完整的文章讲解从服务器申请到域名解析,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 ;
server_name xxx.xxx.xxx.xxx; #当前使用ip访问,所有直接配置共有IP
location / {
proxy_pass https://127.0.0.1:; # 被代理的服务器的域名
}
} 

在目录 /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 ;
server_name www.yourdomain.com; # 这里改成你的域名
location / {
proxy_pass https://127.0.0.1:;
}
}  

现在通过浏览器访问,你就可以看到熟悉的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 ;
server_name www.yourdomain.com;
return https://$host$request_uri;
}
server {
listen ;
server_name yourdomain.com;
return https://$host$request_uri;
} server {
listen ;
server_name www.yourdomain.com;
ssl on; location / {
proxy_pass http://127.0.0.1:;
} 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. TLSv1.;
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

亚马逊EC2服务器申请+NODE服务器部署+阿里云域名申请+SSL证书使用的更多相关文章

  1. 阿里云域名的ssl证书申请与腾讯服务器域名的证书安装

    阿里云域名中的SSL证书申请,腾讯云服务器中的证书安装: 因为公司的与域名都在阿里云上面,服务器却用的是腾讯云的.记得前2年用阿里云管理平台的时候,域名的SSL证书都很好找,也许是长时间不用,找SSL ...

  2. 亚马逊EC2

    亚马逊EC2编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 亚马逊弹性计算云(EC2,Elastic Compute Cloud)是一个让使用者可以租用云端电脑运行所需 ...

  3. 亚马逊EC2服务器登录方法

    1.根据官网提供的方法登录连接到EC2服务器(官网推荐windows用户使用PUTTY连接) 2. 创建root的密码,输入如下命令: sudo passwd root 3.然后会提示你输入new p ...

  4. 亚马逊EC2构建代理服务器心血历程

    1.亚马逊上申请一台免费的EC2服务器,有相应的教程,绑定信用卡,预支付1美元,据说可以退回(防止到期后直接扣款,支付后通过修改卡信息,但好象有提示了,说卡不对了,也不管它了,到期后再说,美国人也不是 ...

  5. 亚马逊EC2弹性IP收费

    刚收到亚马逊云账单,被扣了4.44刀,吓尿,麻溜的去查账单详情,发现之前弃用的美国实例有个弹性IP没释放掉,占着茅坑还不拉屎,被扣钱宝宝无话可说,赶紧释放... $0.005 per Elastic ...

  6. sdm 使用阿里云域名申请 Let’s Encrypt 通配符 域名证书

    安装acme 进入 套件中心 点击安装 Git Server 之后进入SSh会使用git命令 方法1--------------------------------------- 获取代码 git c ...

  7. vue+express+mysql项目总结(node项目部署阿里云通用)

    原文发布于我的个人博客上:原文点这里   前面经历千辛万苦,终于把博客的所有东西都准备好了,现在就只等部署了.下面我介绍下我的部署过程: 一.购买服务器和域名   如果需要域名(不用域名通过ip也可以 ...

  8. 亚马逊ec2服务器上无法使用sudo执行npm命令的解决办法

    sudo ln -s /usr/local/bin/node /usr/bin/node sudo ln -s /usr/local/lib/node /usr/lib/node sudo ln -s ...

  9. 如何使用XShell登录亚马逊EC2云服务器

    http://jingyan.baidu.com/article/a3a3f811d5fc338da2eb8a00.html

随机推荐

  1. LoadRunner学习笔记(1)--异常处理方法

    1.查看端口号占用情况 cmd  -> netstat  -ano  找到进程关闭后在重启网站 2.LR录制脚本时为何不弹出IE浏览器 启动浏览器,打开Internet选项对话框,切换到高级标签 ...

  2. [转载] HBase入门

    转载地址:https://dxer.github.io/2016/03/18/hbase/ HBase一些基本概念 1.Row key 行主键,在对HBase进行查询时候只能依靠Row key,HBa ...

  3. 【sem竞价】点击量较多、咨询少怎么解决?

    点击量较多咨询少可能这种情况对于竞价技术专员来说比较常见的现象之一,在搜客大伟看来主要取决于两方面因素:一方面是外界环境因素影响:另一方面也就是我们下面主要介绍的sem竞价推广账户内部因素. 如下图, ...

  4. Matlab中的rectangle函数

    rectangle函数功能:创建二维矩形对象. rectangle('Position',[x,y,w,h])从点(x,y)开始绘制一个宽w高h的矩形,对坐标轴数据单元指定值.注意,按指定的比例显示矩 ...

  5. JSP中重定向页面没有全屏显示的问题解决

    <script type="text/javascript"> window.onload=function(){ if(window.parent != window ...

  6. google搜索引擎使用

    部分引用 http://yearslater.me/2017/06/15/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%90%9C%E7%B4%A2%E5%BC%95 ...

  7. 初学io

    IO流: 01.File 创建文件 //创建文件夹 private static void mkdirs() { System.out.println("请您输入创建的文件夹名称:(默认是E ...

  8. 我的代码- rf sampling

    # coding: utf-8 # In[6]: import pandas as pdimport numpy as npfrom sklearn import treefrom sklearn.s ...

  9. zoj 2524 并查集裸

    Description There are so many different religions in the world today that it is difficult to keep tr ...

  10. AssetBundle-----资源包划分

    资源包划分 经常更新的资源放在一个单独的包里面,跟不经常更新的包分离;需要同时加载的资源放在一个包里面;其他包共享的资源放在一个单独的包里面;需要同时加载的小资源打包成一个包;对于一个同一个资源有两个 ...