CentOS8にTypeScript+Express+Node.jsで作ったWebAPIをリリースしてみた
はじめに
TypeScript+Express+Node.jsでWebAPI作ってみたで作ったものをCentOS8にリリースしてみました。
CentOS8の設定
– ファイアウォールの無効化
– SELinuxの無効化
– アップデート
をやっていきます。
この辺の手順は過去の記事のGCE(Google App Engine)にデプロイを参照
プログラムの配置
– /home/user/wepapi
に置いてあるものとします。
以下のコマンドで
– /var/webapi
にコピーします。
$ sudo mkdir -p /var/webapi
$ sudo cp -r /home/user/wepapi/* /var/webapi1
Node.jsのインストール
[d]はdefaultの事です。
$ sudo dnf module list nodejs
Name Stream Profiles Summary
nodejs 10 [d] common [d], development, minimal, s2i Javascript runtime
nodejs 12 common, development, minimal, s2i
今回はnode.jsの12をインストールする事にします。
$ sudo dnf module enable nodejs:12 -y
$ sudo dnf install nodejs -y
nodeがインストールされたか確認します。
$ node --version
v12.18.2
npmがインストールされた事も確認します。
$ npm --version
6.14.5
TypeScriptのインストール
$ npm install typescript -g
$ tsc -v
Version 4.0.3
nginxの設定
nginxのインストール
$ sudo dnf -y install nginx
$ sudo systemctl enable --now nginx
nginxの設定ファイル関連
/etc/nginx/nginx.conf
$ sudo vi nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
webapi_nginx.confの編集
$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled
$ cd /etc/nginx/sites-available
$ sudo vi webapi_nginx.conf
server {
listen 80;
server_name localhost;
location / {
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;
proxy_pass http://localhost:3000/;
}
}
シンボリックリンクの設定
$ sudo ln -s /etc/nginx/sites-available/webapi_nginx.conf /etc/nginx/sites-enabled/
起動
$ cd /var/webapi
$ sudo npm start
終了
$ ps -ef
root 155950 153955 0 16:15 pts/0 00:00:00 sudo npm start
root 155951 155950 4 16:15 pts/0 00:00:00 npm
root 155962 155951 5 16:15 pts/0 00:00:00 node /var/webapi/node_modules/.bin/concurrently tsc -w nodemon ./dist/app.js
root 155969 155962 99 16:15 pts/0 00:00:10 node /usr/local/bin/tsc -w
root 155970 155962 6 16:15 pts/0 00:00:00 node /var/webapi/node_modules/.bin/nodemon ./dist/app.js
root 155988 155970 5 16:15 pts/0 00:00:00 /usr/bin/node ./dist/app.js
$ sudo kill 155950
補足(少しはまったところ)
sudoでtscを実行するとcommand not foundになる
$ sudo visudo
を実行し、
# Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin // コメント
Defaults env_keep += "PATH // 追加
とすればOK
ディスカッション
コメント一覧
まだ、コメントがありません