node.js

さくらVPS上にNode.jsとExpressをインストールしてnginxでリバースプロキシするまで

環境

ホスティングサービス: さくらのVPS
CentOS Linux release: 7.6.1810 (Core)
node: v6.17.1
express: 4.16.1
nginx: 1.20.1

全般的にこちらのサイトを参考にさせてもらいました。

さくらのVPSにnginxとNode.jsの環境を構築したメモ – Qiita

nginxのインストール

既にファイヤウォールの設定などは終わっているものとして。

sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
sudo yum -y install nginx

nginxの起動

sudo systemctl start nginx

これでサーバーのドメインを叩けばnginxに接続できる。

Node.jsとnpmのインストール

curl -L https://www.npmjs.com/install.sh | sh
sudo npm update -g npm
sudo npm cache clean
sudo npm install -g n
sudo n stable
sudo node -v
sudo npm -v

Expressのインストール

sudo npm install -g express
sudo npm install -g express-generator

元記事ではpm2のインストールが行われているが、私の環境では入らなかった。
pm2は自動でExpressの再起動をかける機能があるよう。
私はこれについて、かつてはnodemonを使っていた記憶がある。
ここはひとまずスキップ。

Expressでサンプルプロジェクトを立ち上げる

express sample_app

サンプルプロジェクトの起動

cd sample_app
./bin/www

これにて、サーバーのドメインの:3000ポートにアクセスすることで、Expressのウェルカムページが表示される。

nginxのリバースプロキシの設定

ここから、通常のhttp80ポートにアクセスすることで、Expressの3000ポートに接続するようにしたい。
nginxのリバースプロキシを以下の様に設定する。

sudo vi /etc/nginx/conf.d/default.conf
#/etc/nginx/conf.d/default.conf

upstream node-backend {
    server localhost:3000;
}

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
    charset utf-8;
    access_log /var/log/nginx/default.access.log main;
    error_log /var/log/nginx/default.error.log;

    proxy_redirect                      off;
    proxy_set_header Host               $host;
    proxy_set_header X-Real-IP          $remote_addr;
    proxy_set_header X-Forwarded-Host   $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;

    location / {
        #root   /usr/share/nginx/html;
        #index  index.html index.htm;
        proxy_pass http://node-backend;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    #(以下略)
}

nginxの再起動

sudo systemctl restart nginx

これで、ポートを指定せずにサーバーのドメインを叩くと、Expressのページが表示されるようになった。

ロリポップサーバーのデータベースのアップデート前のページ

nodenvのインストール次のページ

最近の記事

Twitter

PAGE TOP