見出し画像

【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の最低限のコマンドメモ:

i→入力モードに切り替える。(編集したい箇所にカーソル合わせてiを押すと編集出来るようになる)
[esc]→(入力モード中に)入力モードを終わる
:wq → 保存して終了
:q! → 保存せず終了

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を強制終了する


この記事が気に入ったらサポートをしてみませんか?