【GCP】VM上にWebサーバーを構築する、その1
とりあえず、Flask+Nginxを使ってwebサーバーを構築して、HTTPSアクセスを通すところまで。
世間にある記事の多くが、サーバーインストールして「はいデフォルトページ表示できたね、おーわりっ」で終わってしまって困ったので、そのサーバー上にAPIをgitHub経由でデプロイするところまでメモを残しておきます。
VMを用意する
この記事で用意したVMの上にWebサーバーも載っけます。
HTTPSアクセスさせるのにドメインが必要なので、IPは固定しておきます。
このとき、IPv4のIPを発行してあります。v4発行したかv6発行したかで、ドメインの設定が変わるので注意。
SSH接続して、必要なコンポーネントをインストールする
python環境を作る
$ python3 --version
$ sudo apt install -y python3-pip python3-venv
以下、pythonのバージョンは3.8.5前提。
gitを使える様にする
長くなりすぎたので別記事にしました
ドメインを取得してIPアドレスと紐付ける
google domainなどのサービスを使ってドメインを取得します。サービスはどこでも良いですがgoogle domainのUI使いやすかった。
ドメインを取得したら、DNS(ドメインネームサーバー)にVMのIPアドレスを登録しておきます。反映には結構時間が掛かる場合があるので、先にやっておくとよいです。
とりあえず説明用に、yucco.example.comを取得したことにしておきます。
Nginxをインストールして設定する
Nginxはねぎっくすじゃなくてえんじんえっくすって読むそうです。(少なくとも、ねぎっくすじゃなくてねぎんくすだな)
インストール
$ sudo apt install nginx
$ nginx -v
バージョンが表示されてインストールされたことが確認できたら、ローカルのブラウザから「http://yucco.example.com」へアクセスしてみます。
Nginxのデフォルトページが表示されれば成功です。
※https接続はまだ設定していないので、http接続で試してみる
※chromeの設定で勝手にhttpsにリダイレクトされてしまうことがあるので…………その時は…………とりあえずあきらめてIPアドレスで接続してみる…………
※DNSに登録が反映されるまで時間が掛かることがあるので、暫く待ってみることも大事
※Nginxをインストールする前にApacheとかインストールしちゃってるとApacheのデフォルトページが出てくることがある。その場合は、Apacheのindex.htmlが残っているだけなので、index.htmlを消す。
設定ファイルを編集
$ sudo vi /etc/nginx/sites-available/default
でdefaultファイルを開いて編集する。sudo付け忘れると権限エラーで保存出来なくて面倒なことになるのでsudo忘れない。
viの最低限のコマンドメモ:
server{
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
}
と書いてあるところを探して、以下の様に編集する
server{
listen 80 default_server;
listen [::]:80 default_server;
# server_name _;
server_name yucco.example.com;
}
server_name _; の行をコメントアウトして、ドメインを指定する行を足します。
SSL証明書を設定して、HTTPS接続出来るようにする
Certbotをインストール
$ sudo snap install --classic certbot
Certbotを実行
$ sudo certbot --nginx
メアドの入力を求められるので入力する。その後、規約に同意してーとかメアド公開して良いーとか聞かれるので承諾する。最後に Witch names for HTTPS と聞かれるので、候補に出てくるyucco.example.comを指定する。
$ sudo certbot renew --dry-run
すると証明書が更新される。
これを行うと、Nginxの設定ファイルを更新してくれる。
これでやっと、URLにアクセスするとNingxのデフォルトページが表示されるようになる。
続きは次回。
おまけ。多用するLinuxコマンドをメモ
systemctl status nginx
↑nginxの起動状況を確認する
ss -antu
↑ポートの待機状況を確認する
ps ax | grep nginx
↑nginx関連のプロセスのリストを表示する
pkill nginx
↑nginxを強制終了する
この記事が気に入ったらサポートをしてみませんか?