怎么在亚马逊云服务器上部署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 查看端口使用情况

相关推荐
playboy1348 分钟前
监控硬盘循环覆盖,监控数据恢复哪些情况还能找回录像
服务器·门控循环单元·智能硬件
Promise微笑9 分钟前
红外热像仪选型:3~5μm中波与8~14μm长波探测机理解析
运维
承渊政道12 分钟前
飞牛NAS部署Immich:搭建家庭相册并实现远程访问
运维·服务器·docker·内网穿透·cpolar·nas·immich
橘色的喵32 分钟前
EventPool 32-bit 带标签 CAS 池:RT-Thread 单核 + Linux 双平台无锁
linux·运维·服务器
艾莉丝努力练剑38 分钟前
【Qt:问题解决】Qt程序入口点错误修复:MinGW ABI兼容问题
java·服务器·开发语言·qt·文件系统·动静态库
buhuizhiyuci1 小时前
【Linux 网络篇】数据的 “循环系统“:协议认识与网络传输的流程
linux·运维·服务器·网络·vscode
雾时之林1 小时前
Linux------磁盘管理
linux·运维
数智工坊9 小时前
Zotero自建Ubuntu WebDAV附件同步方案(完美解决存储空间不足)
linux·运维·ubuntu
江畔柳前堤10 小时前
HBM:大语言模型时代的「算力血液」——从内存墙到带宽革命的深度拆解
服务器·人工智能·windows·目标检测·语言模型·自然语言处理·软件工程
独隅11 小时前
GitHub Actions 自动化运维实战:CI/CD 流水线一体化效果展示
运维·自动化·github