LoginSignup
7
2

More than 5 years have passed since last update.

PrivateSubnetからApacheを用いてnodeを動かす

Last updated at Posted at 2018-07-12

やりたいこと

超ざっくりした画像ですが、やりたいこととしては、
・ 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 つけないと怒られる
The name org.freedesktop.PolicyKit1 was not provided by any .service files

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のインストール

Node Package Managerのこと
予め用意された便利な機能をまとめたもの。

sudo yum install npm
npm -v

expressのインストール

Express は、Web アプリケーションとモバイル・アプリケーション向けの一連の堅固な機能を提供する最小限で柔軟な Node.js 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はprojectの初期設定を行うためのcommand
実行すると対話形式で項目を入力して、package.jsonを作成する。

npm init

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

これで再度 expressのインストールを行う
WARN出たらこちらを参考にする: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へproxyする

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

設定を反映

$ service httpd restart

nodeを起動

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

3000番ではなく80番で問い合わせてみる

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

3000番では帰ってこないことを確認

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

END🚀

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2