プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

ubuntu node.js express-generator nginx環境構築

  • 2019年9月6日
  • 2021年3月11日
  • Linux
  • 572view
  • 0件

構築経験がある方向けに最低限の手順のみ記載していきます。

今回はAWS上のubuntuを利用。
一般ユーザーを作ってsshできるように先にしておく。

準備

一般ユーザーの作成

ルートユーザーでsshし、一般ユーザー「master」を作成

sudo adduser master

sudo権限を付与するためにvisudoコマンド以下を追記

sudo gpasswd -a USER_NAME sudo

ローカル環境でteratermなどのSSH鍵生成などを使って公開鍵と秘密鍵を作成し、作成したユーザーでログインし以下の設定をする。

mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys

// id_rsa.pubの中身をコピペ。

chmod 600 ~/.ssh/authorized_keys

ルートユーザーで作業した場合は所有者を一般ユーザーに変更

chown -R USER_NAME:USER_NAME .ssh

一般ユーザーで鍵認証によるSSHできるか確認できたら、初期のユーザーを削除(AWSなどの場合)。

sudo userdel -r ubuntu

VPSなどではrootでのsshを無効化してあげる。

# vi /etc/ssh/sshd_config
#rootログインを禁止にする
PermitRootLogin yes
↓
PermitRootLogin no #[yes]を[no]に変えます

#パスワードログインを禁止にする
PasswordAuthentication yes
↓
PasswordAuthentication no #[yes]を[no]に変えます
systemctl reload sshd

node.jsのインストール

sudo apt install -y nodejs npm
sudo npm install n -g
sudo n latest
sudo apt purge -y nodejs npm
exec $SHELL -l
node -v

express-generatorをインストール

npm i -g express-generator

任意の場所にアプリケーションを作成する

sudo express --view=pug ./firstapp
cd firstapp
npm i

起動してみる

npm start

IPアドレス+3000番で外部からexpressの初期画面が表示されればOK。
AWSの場合はセキュリティグループのインバウンドに3000を追加する必要がある(あくまでテスト用のため後で削除していい)

nginxのインストールと設定

上記のnodeのwebサーバーでそのまま運用するよりは、 nginxが動いているサーバーでリバースプロキシを設定して動かすというほうが多い(というかセオリー)のようなので、そちらの設定。

wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key

公開リポジトリURLを追記

$ sudo vi /etc/apt/sources.list

# 以下2行を末尾に追加
deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/ bionic nginx
sudo apt install nginx
nginx -v

自動起動の有効化

sudo systemctl enable nginx

nginxの起動

sudo systemctl start nginx

確認

systemctl status nginx

IPアドレスでブラウザからアクセスし、Welcome to nginx!の文字が見えればOK

nginxをリバースプロキシとして連動

nginxの設定ファイルを弄るときはリネームしてオリジナルを退避した状態でおこなう。

sudo vim /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_pass http://{ip}:3000/;
    }

...

nginxを再起動して、IPアドレスだけでアクセスすると、先ほどはnginxの初期ページが表示されていたのが、きちんとexpressの初期画面に変わっているのが確認できる