Apache経由でExpressに接続する方法
環境
- CentOS 7.7
- Apache 2.4.6
- node v12.13.1
- express-generator 4.16.1
イメージ
設定手順
1. httpdの設定ファイルを編集する
サーバにhttpdがインストールされていない場合は、以下のコマンドでインストールし、有効化します。
$ sudo yum update
$ sudo yum install httpd
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
/etc/httpd/conf.d/
の直下に、hoge.conf
というファイルを作ります。(hoge
は変更可能)
今回はApacheをプロキシのような中継サーバとして使うので、proxy.conf
とつけました。
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
3000
はExpressが使用するデフォルトのポート番号です。
httpdを再起動し、設定を反映します。
$ sudo systemctl restart httpd
2. Expressサーバを起動する
node
がインストールされていない場合は、以下の手順でインストールします。
(2019年12月現在LTSのv12系を使います。)
$ curl -sL https://rpm.nodesource.com/setup_12.x | bash -
$ sudo yum install nodejs
処理が終了したら、バージョンを確認して正常にインストールされたか確認します。
$ node --version
v12.13.1
express-generator
がインストールされていない場合は、以下の手順でインストールします。
$ npm install express-generator -g
express
の新しいプロジェクトを作成します。
$ express exp-app
$ cd exp-app
$ npm install
$ npm start &
以降もターミナルで操作を続けるために、npm start
は&
を付けてバックグラウンドで実行します。
http://localhost:3000
とブラウザに入力すると、以下のようなページが表示されます。
コマンドラインなら、curlで確認しても良いです。
$ curl http://localhost:3000
<!DOCTYPE html><html><head><title>Express</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Express</h1><p>Welcome to Express</p></body></html>
Expressが正常に起動していることを確認できました。
3. httpでアクセスする
HTTPでローカルからリモートにアクセスするにあたり、以下の2つの設定を変更します。
- FWの設定
$ sudo firewall-cmd --add-service=http --zone=public --permanent
$ sudo firewall-cmd --reload
HTTPリクエストを受け付けます。
- SElinuxの設定
$ sudo setsebool -P httpd_can_network_connect on
httpdがネットワーク通信できるように設定します。
4.アクセス確認
ローカルのブラウザでhttp://x1.y1.z1.w1
(リモートのIPアドレス)と入力し、Expressのウェルカムページが表示されることを確認します。
以上で、ApacheとExpressの連携が完了しました!
注意
- 上記の方法では、
npm start &
を実行したターミナルからログアウトすると、Expressサーバも止まってしまいます。Expressサーバを常駐させておくためには、サーバ側にforever
をインストールすると良いです。 (参考:Node.jsアプリをLinux環境で常駐化させる forever編) - ローカルとリモートが同じプライベートネットワーク上にあると、Edge では正常にアクセスできないことがあるようです。以下のサイトの設定を行うと解決します。 (参考:Windows10 バージョン1809 Edge でローカルIPアドレスにアクセスできません!)
参考
Author And Source
この問題について(Apache経由でExpressに接続する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/polarbear08/items/1f755476ab2555642b42著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .