从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

大致步骤(2017.07.25):

1、购买阿里云服务器

2、在云服务器上搭建node环境

3、上传Node.js代码,并测试通过

一、购买阿里云服务器

1、登陆阿里云

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

2、选择控制台

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

3、选择云服务器ECS -> 实例 -> 创建实例

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

4、选择所需要的服务

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

(截图只是部分服务选择)

Tips:

(1)、网络服务选项

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

公网IP地址可以选择分配和不分配,两者的区别在于

选择分配IP:则此IP不能与ECS实例解绑,优点是不需要再独立申请公网IP(申请IP是要花费流量费用以及配置费用的)

选择不分配IP:则需要自己另行申请公网IP,优点是拥有一个独立的弹性公网IP(选择按流量付费其实费用也还能接受),假如你有多个ECS服务器,则可以弹性的将IP绑定在不同的ECS上,你就可以只通过一个IP访问不同的后台服务器 -- ps: 我是这样理解的,理解错误还望指出

建议花两分钟了解一下弹性公网IP:什么是弹性公网IP - 弹性公网 IP - 阿里云

安全组选项可以选择默认的安全组选项(安全组选项中涉及之后公网访问的端口,文后会提)

(2)、实例服务选项

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

系列III实例比较便宜,适合个人开发者

(3)、公网带宽服务选项

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

其中选择按使用流量后,费用清单中的 配置费用:¥ 0.79 / 时 , 我问过阿里云的客服,意思是一天 24 小时,每小时计费并收取 0.79 元

(4)、镜像服务选项(如图)

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

(5)、用户数据(并不明白,所以选择默认的)和安全设置服务选项

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

安全设置选择设置密码,牢记用户名为root,然后设置密码,该密码是用于登陆ECS服务器的,(连接以及登陆后文会提到)

5、立即购买,购买完成之后,如果选择了不分配IP服务,则需要继续申请弹性公网IP

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

(1)选择申请弹性公网IP

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

(2)选择需要的服务(截图是笔者的选择)

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

注意地域选项,选择跟你的ECS服务器相同的地域即可

(3)购买之后,回到IP管理控制台,将该弹性IP绑定到ECS实例

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

我的IP已经绑定过了,所以显示的是灰色的,点击绑定之后会弹框让你选择需要绑定的ECS实例,选择绑定即可,然后状态会变成已分配状态

6、至此,购买云服务已经完成

二、在云服务器上搭建Node服务器

1、登陆ECS服务器(有两种方式,一是直接在网页中操作,二是在客户端中操作,其中MAC自带ssh客户端,Window需要使用Putty客户端,连接帮助可在:云服务器ECS -> 实例 -> 管理 -> 基本信息 -> 更多 -> 连接帮助 中查看)

(1) 网页登陆ECS服务器

首次登陆的时候,会弹出连接密码,记住该连接密码,以后每次连接都需要输入该连接密码

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

再次登陆的时候,弹框如下,输入连接密码,通过之后,便登陆了ECS服务器

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

输入连接密码成功之后:输入用户名:root 密码:购买ECS服务器时设置的密码

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

登陆成功

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

(2)ssh客户端登陆ECS服务器(笔者电脑为MAC,所以以MAC中的操作为例,Windows中应该大同小异)

终端 -> shell -> 新建远程连接 -> 安全Shell(ssh) ,点击右侧下方 + 号 添加新的远程连接,输入 申请的弹性公网IP,

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

用户名填写: root,然后点击连接,同样要输入 登录密码(购买ECS服务器时填写的密码),登陆成功

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

2、开始配置环境(严格遵循以下文章中的“开始配置环境”之后的配置教程)

==============请打开查看教程================

部署Node.js环境(CentOS 7) - 云服务器 ECS - 阿里云

========================================

强烈建议使用 nvm 的方式安装node,因为如果使用第一种解压安装包安装的方式,可能会面临 npm 全局安装的模块不能使用的问题,提示找不到命令,况且使用 nvm 安装能很方便的切换 node 的版本

三、上传Node.js代码,并测试通过

1、代码存储路径为 /home 文件夹下, 进入该文件夹

cd /home

Tips: 查看服务器中的文件夹目录架构,使用 ls -a 命令,

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

此处并没有观察到所谓的 /home 目录,因为这并不是服务器的根目录,需要:

cd .. #返回上一级

ls -a #查看全部

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

2、使用你能想到的一切手段,将你的Node项目文件拷贝到 /home 目录下

笔者使用的是git,将git仓库中的Node项目文件clone到了 /home 目录下

大概流程是:

(1)、新建一个文件夹(Node项目文件夹)-> 新建一个 Node.js 文件 index.js,配置一些基本信息(本地git客户端)

从零开始部署Node.js服务至阿里云ECS服务器并通过express框架实现外网IP访问html项目

其中最重要一点,就是红圈中的监听端口,3389 是阿里云默认放出的监听端口,这个监听端口是在购买ECS服务的以后,选择默认的安全组之后安全规则设定的,很多配置完之后,不能公网IP访问服务器(503 error)的原因就出在这里。(安全组查看:云服务器ECS -> 实例 -> 更多 -> 安全组配置)

(2)、git init 文件夹,并将该工程上传到 git 服务器(本地git客户端)

(3)、clone你的项目文件到 /home 目录下(远程ssh客户端)

首先进入 /home 目录,

cd /home

然后clone你的git项目

git clone https://github.com/YourGitAccount/tempGitProject.git //你的repo地址

(4)、然后进入tempGitProject文件夹(远程ssh客户端),安装pm2启动Node服务(pm2能保证Node服务永远在线,而不会因为关闭ssh客户端之后Node服务就停止了)

npm install -g pm2

安装完成后

pm2 start index.js --name uops

3、测试后台是否连通公网IP

(1)、在浏览器中打开: IP:3389 (例如:192.168.0.1:3389),查看是否返回字符串 "{userName: 'helloWorld'}"

4、修改Node项目文件

(1)、在ssh客户端中pull一下代码,然后运行

pm2 start index.js --name uops -f

即可,不需要重启ECS服务器

四、搭建express框架访问 HTML 页面

1、新建一个存放 npm 项目的文件夹 npmProFile

mkdir npmProFile

2、进入该创建的文件夹,新建一个 npm 项目

cd npmProFile

npm init 

一路确定即可

3、安装 express 框架

npm install express --save

此时该 npmProFile 文件夹里面就是一个 npm 项目,包含一个 package.json 文件和一个 node-module 文件夹

4、新建一个 server.js 文件用于启动 node 服务

touch server.js

vim server.js

将如下代码输入,并保存(需要懂得 vim 的操作):


  1. const express = require('express')

  2. const path = require('path')

  3. const app = express()

  4. app.use(express.static(path.join(__dirname, 'public')))

  5. app.listen(3389, () => {

  6. console.log(`App listening at port 3389`)

  7. })

5、 新建一个存放 html 项目的文件夹 public,并且创建一个 html 文件

mkdir public

cd public

touch index.html

输入如下测试代码:


  1. <!doctype html>

  2. <html lang="en">

  3. <head>

  4. <meta charset="UTF-8">

  5. <title>Web管理平台</title>

  6. </head>

  7. <body>

  8. <h1>Web管理平台</h1>

  9. </body>

  10. </html>

6、返回上一级,启动 node 服务

node server.js

7、访问页面即可

在浏览器中打开: IP:3389 (例如:192.168.0.1:3389),查看html效果

云服务器搭载业务,选择合适的平台最重要!

从目前国内云计算市场的格局来看,国内云计算前三强分别是阿里云、腾讯云和华为云,阿里云、腾讯云作为背靠互联网平台的企业,更偏向于B端用户;华为与作为传统的通信巨头,更偏向于G端。

当然如何选择服务器机型,这里有篇文档汇总的比较详细,文档地址:

云服务器哪家好!2021年阿里云、腾讯云、华为云的服务器配置及价格对比?​

如果是高并发,高IO业务场景,需要确定服务器规格,可让业务应用性能发挥到最佳,参考官方文档:

阿里云服务器规格:规格实例族 - 云服务器 ECS

腾讯云服务器规格:规格实例族 - 云服务器CVM

上一篇:ajax 第十五节 AJAX-同源策略


下一篇:ajax 第十三节 AJAX-Axios (通用方法) 函数发送AJAX请求 04:36