使用Apache在Private Subnet上运行节点

我想做的事情

虽然图像不清晰,但我想做的是:
– 使用Apache作为反向代理,在端口80上监听,并运行端口3000上的Node。

我們會從建立AWS的EC2實例並在私有子網之間確認通訊的狀態開始。

请留个备忘录,如果有什么问题,请评论留言。

スクリーンショット 2018-07-12 17.08.52.png

安装Apache

sudo yum -y install httpd
sudo service httpd start

基本指令集

// Apacheを起動する
$ service httpd start
// Apacheを停止する
$ service httpd stop
// Apacheを再起動する
$ service httpd restart

请确认版本

$ httpd -v
Server version: Apache/2.4.33 ()

简述

如果不加sudo,就会被指责。没有任何.service文件提供了org.freedesktop.PolicyKit1的名字。

安装nodebrew。

安装nodebrew后,可以方便地切换node的版本。

curl -L git.io/nodebrew | perl - setup
export PATH=$HOME/.nodebrew/current/bin:$PATH
source ~/.bashrc

安装Node

nodebrew install stable
nodebrew use stable
node -v

安装npm

npm的概念是一个汇集了预先准备好的便捷功能的工具集合。

sudo yum install npm
npm -v

安装 Express

Express 是一个最小而灵活的 Node.js Web 应用程序框架,为Web应用程序和移动应用程序提供一系列稳定的功能。
由于可以自由使用数不尽的HTTP实用工具方法和中间件,因此可以快速而容易地创建稳健的API。
Express 使用户熟悉的Node.js功能更易于理解,并通过简单的层次结构提供基本的Web应用程序功能。

来自http://expressjs.com/ja/

$ npm install express --save

迷住了

安装失败了?

npm WARN saveError ENOENT: no such file or directory, open '/home/ec2-user/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/home/ec2-user/package.json'
npm WARN ec2-user No description
npm WARN ec2-user No repository field.
npm WARN ec2-user No README data
npm WARN ec2-user No license field.

似乎必须执行npm init。

当执行npm init命令时,会以交互形式要求输入各项内容,以创建package.json文件。

npm init

参考资料:https://qiita.com/sinmetal/items/395edf1d195382cfd8bc

请参考该网页链接。

再次使用这个链接在 express 上进行安装, 如果出现警告请参考:https://helen.hatenablog.com/entry/2016/05/22/003057

取决于个人的努力、毅力和智慧。

npm install express --save
+ express@4.16.3
updated 1 package and audited 119 packages in 3.162s
found 0 vulnerabilities

将apache的请求代理到node上。

$ sudo vi /etc/httpd/conf/httpd.conf
<IfModule mod_proxy.c>
    ProxyPass / http:// {IP} :3000
    ProxyPassReverse / http:// {IP} :3000
</IfModule>

将设置应用

$ service httpd restart

启动节点

$ node /var/www/node/app.js
Example app listening on port 3000!

我试着在80号询问,而不是3000号。

$ curl http://XXX.XXX.X.XX:80
// ちゃんと帰って来ることを確認
Hello World!

确认在3000号就不会回来。

$ curl http://XXX.XXX.X.XX:3000

结束?

广告
将在 10 秒后关闭
bannerAds