Apache動いてるCentosにnode入れてnodeも動かす
環境
node入れる
nodeのサイトを見ると6.xバージョンが現在安定版ぽいので、そちらを入れる。
$ sudo su $ curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - $ yum -y install nodejs $ yum install gcc-c++ make $ node -v // 確認 $ npm -v // 確認
参考: パッケージマネージャを利用した Node.js のインストール | Node.js
node動かしてみる
$ mkdir nodeApp $ cd nodeApp $ npm init $ npm install express --save // express入れて動かす $ vim app.js // expressのhello worldのコード書いとく $ ln -s ~/nodeApp /var/www/node // /var/www側にリンク貼る $ node /var/www/node/app.js // 動かす
apacheからnodeへproxyする
/etc/httpd/conf.d/node.conf
に書くのもあるっぽいけど、今回は
/etc/httpd/conf/httpd.conf
に
<IfModule mod_proxy.c> ProxyPass /nodeApp http://127.0.0.1:3000 ProxyPassReverse /nodeApp http://127.0.0.1:3000 </IfModule>
書いとく。この中にdeny, allow制限してもいいけど、今回はそのまま。
*注:上の設定のポート3000の後ろに/
を付けてると、ルートはうまく表示されるけど、ルート以下の他のパスがうまく表示されなくなるので注意。
設定を反映、
$ service httpd restart
で、アクセスで確認!が、503エラー、、、、error_logには
[Mon Jan 23 17:43:43 2017] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:3000 (localhost) failed [Mon Jan 23 17:43:43 2017] [error] ap_proxy_connect_backend disabling worker for (localhost)
で、selinuxあたりで限定されてるらしい。
参考:
・Linux:CentOS6でmod_proxyが動かない - HiiHahWIKI - making some notes for... -
・Apache Mod_proxy '[Error] (13)Permission Denied' Error on RHEL - SysAdmin's Journey
$ sestatus -b | grep httpd // 設定を確認
たしかにhttpd_can_network_connect
がoff
になっている。これをon
にする。
$ /usr/sbin/setsebool -P httpd_can_network_connect 1 $ service httpd restart $ sestatus -b | grep httpd // onになってるの確認
これでアクセスすると、ちゃんとアクセスできた。OK
おまけ
node動かすのに、forever使って常駐させる。
www.npmjs.com
$ npm install forever -g $ forever start app.js