怎么在亚马逊云服务器上部署Node.js?

目录

[一 .为了方便文件传输 需要安装两个软件](#一 .为了方便文件传输 需要安装两个软件)

内置文本编辑器

可选地存储会话信息

[二 .linux实例中安装nodeJs环境](#二 .linux实例中安装nodeJs环境)

[三 .拷贝源代码到服务器](#三 .拷贝源代码到服务器)

下载并安装WinSCP工具

开启测试程序

[forever 常用命令](#forever 常用命令)

文件改动监听并自动重启

显示所有运行的服务

重启操作

后记


首先需要使用ssh或者putty登陆AWS ec2的linux实例(在Windows中使用putty连接linux实例参

一 .为了方便文件传输 需要安装两个软件

  1. winscp WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。

支持基于SSH-1、SSH-2的SFTP和SCP协议

支持批处理脚本和命令行方式

多种半自动、自动的目录同步方式

内置文本编辑器

支持SSH密码、键盘交互、公钥和Kerberos(GSS) 验证

通过与Pageant(PuTTY Agent)集成支持各种类型公钥验证

提供Windows Explorer与Norton Commander界面

可选地存储会话信息

可将设置存在配置文件中而非注册表中,适合在移动介质上操作

2.Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作

二 .linux实例中安装nodeJs环境

在控制台输入nodejs指令下载源代码到服务器本地。

在控制台输入"tar -zvxf node-v5.3.0.tar.gz"解压缩源代码。

在控制台输入"cd node-v5.3.0/ && ./configure && make"转到源代码根目录、配置编译选项并开始编译NodeJS源代码(可能需要先安装好编译工具如gcc、g++、make,ubuntu可以使用命令"sudo apt-get install build-essential"安装好C/C++编译环境)。

在控制台输入"sudo make install"安装编译好的NodeJS程序,输入"node -v"以测试是否安装成功,成功则会显示当前的版本(本例中应为v5.3.0)

三 .拷贝源代码到服务器

本例中在Windows使用WinSCP来拷贝文件,接下来介绍WinSCP的配置。 配置WinSCP过程如下:

下载并安装WinSCP工具

打开WinSCP并点击新建站点。

在文件协议选项中选择"SCP"。

填写主机名(可以为实例的公共DNS或者公共IP),端口使用默认的22。

填写用户名为ubuntu(其他linux实例为ec2-user)。

打开"高级",在SSH->验证->密钥文件中选择服务器.ppk密钥文件,点击确定完成设置。

最后点击登录即可连接到服务器,支持拷贝本地文件到远程服务器。

按照上述步骤执行配置过程成功后,把本地的源代码拷贝至服务器,本例中工程目录名为"Hello",包含"hello.js"以及"package.json"两个文件。

hello.js

package.json

开启测试程序

在服务器控制台下转到源代码目录执行"npm start"即可开始执行程序(如果代码还依赖其他的NodeJS模块,需要先执行"npm intsall"来安装依赖的模块)。

在浏览器中输入实例的公共DNS或者公共IP加上端口号访问测试程序,即可获得"Hello World!"响应。

常连接

为了保持服务器一直在线 使用forever

    sudo npm install -g forever;

    sudo forever start bin/www

    sudo forever stop bin/www

forever 常用命令

// 1. 简单的启动

forever start app.js

// 2. 指定forever信息输出文件,当然,默认它会放到~/.forever/forever.log

forever start -l forever.log app.js

// 3. 指定app.js中的日志信息和错误日志输出文件,

// -o 就是console.log输出的信息,-e 就是console.error输出的信息

forever start -o out.log -e err.log app.js

// 4. 追加日志,forever默认是不能覆盖上次的启动日志,

// 所以如果第二次启动不加-a,则会不让运行

forever start -l forever.log -a app.js

// 5. 监听当前文件夹下的所有文件改动

forever start -w app.js

文件改动监听并自动重启

// 1. 监听当前文件夹下的所有文件改动(不太建议这样)

forever start -w app.js

显示所有运行的服务

forever list

停止操作

// 1. 停止所有运行的node App

forever stopall

// 2. 停止其中一个node App

forever stop app.js

// 当然还可以这样

// forever list 找到对应的id,然后:

forever stop id

重启操作

重启操作跟停止操作保持一致。

// 1. 启动所有

forever restartall

上面的一些解释足够平常使用,还有待之后继续补充。

开发和线上建议配置

// 开发环境下

NODE_ENV=development forever start -l forever.log -e err.log -a app.js

// 线上环境下

NODE_ENV=production forever start -l ~/.forever/forever.log -e ~/.forever/err.log -w -a app.js

上面加上NODE_ENV为了让app.js辨认当前是什么环境用的。不加它可能就不知道哦?

一些注意点

有可能你需要使用unix下的crontab(定时任务)

这个时候需要注意配置好环境变量。

SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

后记

毋庸置疑,拥有了Github就拥有了世界。

参考

https://github.com/nodejitsu/forever

http://blog.nodejitsu.com/keep-a-nodejs-server-up-with-forever

https://github.com/nodejitsu/forever/issues/116

打包 压缩 tar -czvf nodePro.tar.gz nodePro/

netstat -ntlp 查看端口使用情况

相关推荐
糖拌西瓜皮8 小时前
TypeScript 进阶:泛型、条件类型、类型守卫与装饰器
javascript·node.js
SelectDB1 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
zzzzzz3102 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
米丘3 天前
vite8 vite preview 命令做了什么?
node.js·vite
blanks20204 天前
生成 公钥私钥 笔记
node.js
A小辣椒4 天前
AWS Clould Support Engineer就职面试题
aws
糖拌西瓜皮5 天前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai