GCE × CentOS 7 × nginx × Let's Encrypt(certbot) × Node.js × Git 備忘録


やること

Google Cloud Platform の
Google Compute Engine に
CentOS 7 でインスタンスを構築して
freenom で無料ドメインを取得して
certbot で無料SSL証明書を発行して
nginx でWebサーバーを立ち上げて
Node.js を公開する(nginxのリバースプロキシ使用)

個人的備忘録のため、説明不足で申し訳ないです。。。
そのうち、もう少しわかりやすくまとめます。

Google Compute Engine を作成

Google Cloud Platform にログインして
VMインスタンスを生成(ブートディスクは CentOS 7 を選択)

  • ファイアウォールは HTTP/HTTPSともに許可する
  • その他はご自由に

できるだけ安くするなら、

  • リージョン/ゾーンは us-XXXX
  • マシンタイプは f1-micro
  • ブートディスクのサイズは 30GB以下

生成したら外部IPを確認

ただし、node.jsで運用するとなるとマシンタイプがf1-microだと厳しいと思われます。

freenomで無料ドメイン取得

freenom

ドメインを取得したらDNSの設定をGCEの外部IPに設定する

なお、VMインスタンスはマシンタイプを変更するなどした場合に、
外部IPアドレスが変更されることがありますので、
その場合は、改めてfreenomのDNS設定を変更する必要があります。

GCEにSSH接続

SELinuxを無効化(config)

*リバースプロキシがうまく作動しないため

移動

cd /etc/selinux/

念のためバックアップ

sudo cp config config_back_up

編集

sudo vi config
config.
SELINUX=enforcing

config.
SELINUX=disabled

編集が終わったらインスタンスをリセット

nginxのインストール

nginxのインストール

sudo yum install nginx

確認のためにnginxを起動

sudo service nginx start

起動後、外部IPにHTTPアクセスして確認

Let's Encrypt(certbot)でSSL証明書取得

参考

certbotのインストール

sudo yum install certbot-nginx

移動

cd /etc/nginx/

念のためバックアップ

sudo cp nginx.conf nginx_back_up.conf

nginxの設定を変更

sudo vi /etc/nginx/nginx.conf
nginx.conf
server_name _;

nginx.conf
server_name example.com www.example.com;

設定チェック

sudo nginx -t

SSL証明書発行

sudo certbot --nginx -d example.com -d www.example.com

同意しますか? → A
メール送りますか? → N
HTTPをHTTPSにリダイレクトしますか? → 2

dhparam.pemを作成

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

nginxの設定を変更

sudo vi /etc/nginx/nginx.conf
nginx.conf
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
nginx.conf
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

設定チェック

sudo nginx -t

nginxを再起動

sudo systemctl reload nginx

再起動後、外部IPにHTTPSアクセスして確認

クーロンで毎月1日の午前4時に自動更新

*有効期間が3ヶ月のため

sudo crontab -e
00 04 01 * * /usr/bin/certbot renew --quiet

Gitのインストール

パッケージをインストール

sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker autoconf

Node.jsのインストール

nvmのインストール

sudo git clone git://github.com/creationix/nvm.git ~/.nvm
source ~/.nvm/nvm.sh

node.jsのインストール

nvm install vX.X.X

*お好きなバージョンをインストール

nvm確認

nvm --version

node.js確認

node -v

npm確認

npm -v

Node.jsファイルをGitでクローン

ホームディレクトリ内にnode.jsファイルをクローン

cd ~
mkdir XXXX
cd XXXX
sudo git clone https://github.com/********/****.git ./

node実行(適当なポートで受付)

例.設定による
npm start

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

sudo vi /etc/nginx/nginx.conf
nginx.conf
location [node.jsに振りたいパス(ルートなら / )] {
    proxy_pass http://localhost:[ポート番号]/;
    proxy_cookie_path /XXXX/ //;
    proxy_set_header X-Forwarded-For $remote_addr;
}

*https(443)で受けているserver{}内

以上

お疲れさまでした。