今まで Google App Engine Node.js Standard Environment (GAE/Node.js SE) で動かしていた comame.xyz を、Compute Engine に移しました。
Nginx をいじってたら楽しくなってきちゃったから。
GAE/Node.js SE は GAE に依存する部分が少ないため、ほぼそのままコードを移すだけで完了。静的なファイルを配信する部分だけ、Nginx 側に処理を回すためにコードを削除。
こんな感じ。80 版ポートの方は省略。
# /etc/nginx/sites-enabled/comame.xyz
server {
server_name comame.xyz;
listen 443 http2 ssl;
# ....
}
多分落ちたときに自動再起動してくれると思う。まだ落ちてないからわからん。
# /etc/systemd/system/nodejs.service
[Unit]
Description=Node.js server
[Service]
WorkingDirectory=/home/hoge
Type=simple
ExecStart=/usr/bin/node /path/to/script.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node
User=hoge
Group=hoge
[Install]
WantedBy=multi-user.target
$ systemctl start nodejs.service
でサービスを起動。$ systemctl enable nodejs.service
で OS の起動時にサービスを起動するよう設定。
# /etc/nginx/sites-enabled/comame.xyz
upstream node {
# Node.js は 3000 番ポートで動かすことにした
server 127.0.0.1:3000;
}
server {
# ...
location / {
proxy_pass http://node;
}
}
コマンド叩くだけで電子証明書が取得できるの、本当にすごいよね。あとは Nginx 側で証明書のパスを指定するだけ。
$ certbot certonly --nginx