亚马逊EC2服务器申请+NODE服务器部署+阿里云域名申请+SSL证书使用
2018-10-09 12:38
1291 查看
最近,由于项目需要,自己申请了一台亚马逊用于部署网站测试,在使用期间,发现网上没有一篇非常完整的文章讲解从服务器申请到域名解析,SSL证书申请的整个流程。所以自己总结一下,以供大家学习!
打开地址:https://aws.amazon.com/cn/ec2/?hp=tile&so-exp=below
进入选择实例类型界面
按照上图步骤操作后,
现在如果尝试ping这个ip会发现超时
如果要想可以正常ping IP,需要打开ICMP的入站规则
然后添加如下一条:
再次在自己的电脑终端中ping IP:
到目前为止,AWS EC2的一条免费的测试服务器就申请好啦。
还有一点切记,如果你不想付费,在免费到期前,一定要终止服务器,不然,会扣你信用卡中的美金的!
之后,就可以在SecureCRT中登录服务器啦。
先获取系统更新, 并且安装curl工具
这里推荐一个管理不同版本node.js的工具:nvm,官网: https://github.com/creationix/nvm ;
使用curl安装nvm
现在node服务就安装好啦,我们用最简单的代码来测试node是否可用, 创建一个test.js文件
当前服务器访问地址
但是我们在浏览器通过AWS EC2服务器的共有IP并不能访问成功,当我们在入站规则中开放3000端口后,就可以访问成功
安装nginx,并查看版本号
通过公有IP访问,页面返回如下信息:
这说明,我们的nginx服务安装成功,并且已经成功启动,现在来给http://127.0.0.1:3000做一个代理
在/etc/nginx中添加nginx配置
浏览器通过公网IP访问,页面正常返回
在阿里云上申请一个域名: https://wanwang.aliyun.com/domain
搜索注册一个你想要的域名,付款后,进入域名列表,选中你刚买的域名,点击“解析”
在解析设置中,点击添加记录,在记录值中填写AWS EC2的共有IP,点击“确定”。
现在我们在浏览器中输入域名,我们就会看到“welcome to nginx”的页面,这个说明域名已经解析成功。
之后修改nginx配置,将域名绑定到端口为3000的站点上即可
现在有一些机构提供一些免费的SSL证书供大家使用,推荐FreeSSL.org:https://freessl.org/
如果只是用于测试,免费证书完全可以满足我们的要求,输入你的域名,选择一个品牌,点击“创建免费的SSL证书”
之后选择证书类型,验证类型,点击“点击创建”
之后会生成DNS验证记录:
进入阿里云的域名管理,在解析设置中点击“添加记录”
在弹窗中添加freessl中的dns验证信息,点击“确认”按钮。
之后,回到FreeSSL.org的验证界面,点击“点击验证”按钮
验证成功后,会生成CA证书,证书文件,证书密钥
注意,这里点击“证书下载”,下载的文件必须保存好,不要丢失了
再次进入阿里云的域名列表,点击需要配置的域名,进入域名的基本信息页面,点击“免费开启SSL证书”
在申请证书的页面,点击右上角的“上传原有证书”按钮,打开弹窗,填写对应的 证书文件,证书密钥,点击上传
之后,点击“返回证书控制台”
点击“我的证书”
你会看到刚添加的指纹
修改nginx配置
点击安全,可以查看证书:
ok, 到此,一个基本的node网站部署就完成了。
参考资料:
https://blog.csdn.net/jjihuang/article/details/80777306
https://www.cnblogs.com/fengff/p/8892590.html
一、亚马逊EC2申请
为什么选择申请亚马逊的服务器?只是因为项目需要而已,我本意是想申请阿里云的的服务器的(毕竟是阿里的员工),并且亚马逊提供一年的免费EC2服务器。打开地址:https://aws.amazon.com/cn/ec2/?hp=tile&so-exp=below
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/ce57471c77cc432b0504b5ca62dcd950.png)
点击“免费试用Amazon EC2”之后会跳转到登录页面,自己注册一个账号即可,注册需要使用信用卡号。注册之后进入EC2 Dashboard,
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/71d99c83a5fa5311d67ac8495e55f948.png)
点击“启动实例”按钮
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/4c8897496ec4d5a01bf85199e703ae44.png)
勾选“仅免费套餐”然后选择合适你自己的服务器,我选择的是Ubuntu Server 18.04 LTS (HVM), SSD Volume Type ,
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/c8ed7f561788fe93c296b2cddc78f936.png)
进入选择实例类型界面
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/06660987e7ed85d2db632988f2280679.png)
全部使用默认的选择,直接点击“审核和启动”按钮进入到核查实例启动的页面:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/84f9fa169ecd326ba2911a40205d9b2d.png)
按照上图步骤操作后,
点击“启动实例”按钮
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/874382faa33f0028bc10acb61a2edffc.png)
点击“查看实例”,进入实例面板,这里可以查看服务器的静态IP,这个IP就是外网可访问地址
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/42e0653ca3d1f7a7f57437fa23505365.png)
现在如果尝试ping这个ip会发现超时
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/aa1e823f752055eccc2d839f840d4970.png)
如果要想可以正常ping IP,需要打开ICMP的入站规则
选择网络与安全-安全组,选中你的实例(launch-wizard-xxx),选中入站,点击“编辑按钮”
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/109d70d077e89e420e3e99a19a60b8b0.png)
然后添加如下一条:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/9944e4df0995bac6b461b307921607a5.png)
再次在自己的电脑终端中ping IP:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/80e02eee157d9a317a44b1abe91331c6.png)
到目前为止,AWS EC2的一条免费的测试服务器就申请好啦。
还有一点切记,如果你不想付费,在免费到期前,一定要终止服务器,不然,会扣你信用卡中的美金的!
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/5deebdc6dd187dd3d5ca2428370db137.png)
二、终端连接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)
登录成功后如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/885f75cf19f81e2f93157766c03656ea.png)
有些同学觉得直接使用终端不是很方便,有些功能,比如rz这种上传文件命令也用不了,那么推荐使用SecureCRT,链接方式如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/c1f5eaffcf99f23aa139ed1300863450.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/c12d54ebde874640daeb9c37768e3270.png)
Hostname:对应EC2 公有DNS(IPv4) Port:22 Username:ubuntu PublicKey:选择EC2配置中生成的ssh密钥当这些都完成后,你发现可能登录不成功,这个就是22的端口没有开,
在 网络与安全-安全组,入站规则中添加如下规则:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/7de50acfeeda5c7ff1e72aaab77e4260.png)
之后,就可以在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可以查看当前版本号
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/e8be006665aafece491919b519a63987.png)
现在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服务器:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/8579fe50e89a022cc9dc33192bdeadaa.png)
当前服务器访问地址
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/4385967c062044356e94461318b52c18.png)
但是我们在浏览器通过AWS EC2服务器的共有IP并不能访问成功,当我们在入站规则中开放3000端口后,就可以访问成功
3. 安装nginx
但是我们通常访问网站是直接域名访问,也就是外部只请求80端口。那么这里,我们就需要通过反向代理来实现多端口的分发工作。安装nginx,并查看版本号
sudo apt-get install nginx nginx -v进入nginx配置目录(/etc/nginx),查看文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/ee0c7d44bee10b4b4e8abcb0358d6dee.png)
通过公有IP访问,页面返回如下信息:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/e12137d693c8c0df02d83da98d798ac9.png)
这说明,我们的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执行结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/2bbbe402d68939347b6e0238d3c7256a.png)
浏览器通过公网IP访问,页面正常返回
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/dabde5b3f99b9670e7be2bfea7a7340f.png)
四、阿里云域名申请
上面可以通过IP访问网站已经成功,但是IP不是一个实用易记的地址,现在就需要通过申请域名来绑定当前服务器IP,在阿里云上申请一个域名: https://wanwang.aliyun.com/domain
搜索注册一个你想要的域名,付款后,进入域名列表,选中你刚买的域名,点击“解析”
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/4d7caf4b077470f511cdb03e3f512b91.png)
在解析设置中,点击添加记录,在记录值中填写AWS EC2的共有IP,点击“确定”。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/1d4f8fff6ac73c7f9bea0107389fd8ca.png)
现在我们在浏览器中输入域名,我们就会看到“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证书”
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/f31fe7d3f1b2681c04f266d94da063c6.png)
之后选择证书类型,验证类型,点击“点击创建”
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/4cd5d7383d6a0b922a189d214736ac3f.png)
之后会生成DNS验证记录:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/bcc22cc93d37321538063604b5748258.png)
进入阿里云的域名管理,在解析设置中点击“添加记录”
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/36a0cb8887bb1a563383041c3f8b74e8.png)
在弹窗中添加freessl中的dns验证信息,点击“确认”按钮。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/715bd39d6415a16e9322c9895b0e9814.png)
之后,回到FreeSSL.org的验证界面,点击“点击验证”按钮
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/45ef065ff9f7d3940a3bc05cf5097b5b.png)
验证成功后,会生成CA证书,证书文件,证书密钥
注意,这里点击“证书下载”,下载的文件必须保存好,不要丢失了
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/cd6486ffb5a34b5f7c43721fde207045.png)
再次进入阿里云的域名列表,点击需要配置的域名,进入域名的基本信息页面,点击“免费开启SSL证书”
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/859aad3d486dde252c95042e03ba5b82.png)
在申请证书的页面,点击右上角的“上传原有证书”按钮,打开弹窗,填写对应的 证书文件,证书密钥,点击上传
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/0de3133d6250d3047137a6ba1d06c699.png)
之后,点击“返回证书控制台”
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/c290d7bca4cbd12602018d76b7861f90.png)
点击“我的证书”
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/7cc6afe573e40491a64839bd3ef42d24.png)
你会看到刚添加的指纹
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/161e334cae5453d6cff13fdaabe810d3.png)
2. AWS EC2中添加https入站规则
先在入站规则中添加类型为https,端口为443,来源为任意位置的规则![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/b3dce2212809d065a9e19426aa1836cc.png)
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服务器,这时再通过域名访问,就会看到安全的状态
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/8da56a134759615207767126ec4ef555.png)
点击安全,可以查看证书:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201810/3c2e1c6f68e88891c1b4d835bdce550f.png)
ok, 到此,一个基本的node网站部署就完成了。
参考资料:
https://blog.csdn.net/jjihuang/article/details/80777306
https://www.cnblogs.com/fengff/p/8892590.html
相关文章推荐
- 阿里云ECS申请免费ssl证书,实现Tomcat访问域名,使用Https访问
- 使用阿里云域名api申请Let’s Encrypt泛域名免费ssl证书
- 如何在阿里云远程主机上部署node.js服务器
- 详解把Node.js项目部署到阿里云服务器(CentOs)
- 阿里云服务器使用免费个人DV证书部署nginx+https站点
- 从零开始部署Node.js服务至阿里云ECS服务器并实现外网IP访问
- 阿里云ecs服务器中安装部署node.js的步骤
- 把Node.js项目部署到阿里云服务器(CentOs 7)
- 微信小程序基于node.js的websocket服务器搭建和SSL证书申请、配置全家桶
- 【配置阿里云 I】申请配置阿里云服务器,并部署IIS和开发环境,项目上线经验
- Linux----阿里云服务器 https 配置(目前用的是1年免费 SSL证书申请)
- 使用 Cerbot 部署 Let's Encrypt免费证书 简单 升级 http 到 https 申请单域名ssl证书
- 在阿里云主机上搭建JBOSS服务器并部署项目,通过域名:端口号访问项目
- GitBook的安装/使用和阿里云服务器部署GitBook
- 阿里云服务器linux环境,从启动tomcat服务器外网访问--->绑定域名--->Navicat远程连接mysql--->阿里云服务器部署项目过程中,一定会遇到的五大问题;
- 阿里云上部署webservice或者网站,服务器本身测试可以整成使用,但是在其他机器上调用时找不到网页或者webservice
- 阿里云 云解析使用方法/在阿里云ESC服务器解析域名并绑定服务器IP后上传文件通过域名访问步骤教程
- 阿里云服务器-百度开放云域名-WordPress网站部署踩的坑
- 阿里云部署,ubuntu, 连接服务器 |更新源| 安装node |安装mysql
- 阿里云windows2008服务器部署node.js网站遇到的问题