はじめまして!5月にG-genにジョインした片岩です。
まだGoogle Cloud(旧称GCP)をあまり触ったことがない方も多いと思います。Compute EngineとCloud SQLを利用したWebアプリを動かしてみたので、今回はその手順についてご紹介します。WebアプリにはMattermostというチャットアプリを利用しました。
Compute Engine および Cloud SQL とは
Compute Engine および Cloud SQL のサービスの解説は、以下の記事をご参照ください。
構成イメージ
今回の構成は以下のとおりです。
全体の流れ
全体のざっくりした流れは以下になります。
- Cloud SQLインスタンスを作成します。(PostgreSQLを利用)
- Cloud SQLインスタンス上にデータベースを作成します。
- VMインスタンスを作成します。
- VMインスタンスにPostgreSQLクライアントをインストールします。
- VMインスタンスにMattermostサーバーをインストールします。
- Webアプリ(Mattermost)が起動していることを確認します。
重要なポイント
重要なポイントは以下の2点です。
- Cloud SQLのプライベートIPを有効にする
- VMインスタンスにファイアウォールルールを適用する
Cloud SQLのプライベートIPを有効にすることでVMインスタンスからCloud SQLへの通信を可能にしています。また、外部からVMインスタンスへの通信を許可するために、VMインスタンスにファイアウォールルールを適用しています。
それでは実際の手順を見ていきましょう。
構築手順
Cloud SQL
まずコンソールからCloud SQLインスタンスを作成します。
その際、ネットワーキングの設定でプライベートIPを有効にします。パブリックIPは無効で構いません。
Cloud SQLインスタンスができたらデータベースを作成します。データベース名をmattermostとします。
Compute Engine
今回のアプリではTCP8065ポートを利用します。
外部からTCP8065ポートにアクセスできるよう、ファイアウォールルールを作成します。
ファイアウォールルールのタグを付与したVMインスタンスを作成します。
VMインスタンスにPostgreSQLクライアントをインストールします。 VMインスタンスにSSHで接続し、以下のコマンドを実行します。
sudo apt-get update sudo apt-get install postgresql-client
wgetコマンドを有効にします。
sudo apt install wget
Mattermostをインストールします。詳細はインストールガイドをご参照ください。
sudo apt install wget wget https://releases.mattermost.com/6.7.0/mattermost-6.7.0-linux-amd64.tar.gz tar -xvzf mattermost*.gz sudo mv mattermost /opt sudo mkdir /opt/mattermost/data sudo useradd --system --user-group mattermost sudo chown -R mattermost:mattermost /opt/mattermost sudo chmod -R g+w /opt/mattermost
管理者権限で/opt/mattermost/config/config.json
ファイルを開き、MattermostサーバーからCloud SQLへ接続するように以下の設定を変更します。
<パスワード>にはご自身のPostgreSQLのパスワードを、<IPアドレス>にはCloud SQLインスタンスのプライベートIPアドレスをご利用ください。
key | value |
---|---|
"DriverName" | "postgres" |
"DataSource" | "postgres://postgres:<パスワード>@<IPアドレス>/mattermost? |
Cloud SQLへの疎通を確認します。
cd /opt/mattermost sudo -u mattermost bin/mattermost
Server is listening on :8065 と出力されれば問題なく起動しています。Crlt + C で停止させます。
次にデーモンがサービスを起動するように設定変更作業を進めます。
sudo touch /lib/systemd/system/mattermost.service
作成した/lib/systemd/system/mattermost.serviceを開いて以下の内容をペーストします。
[Unit] Description=Mattermost After=network.target [Service] Type=notify ExecStart=/opt/mattermost/bin/mattermost TimeoutStartSec=3600 KillMode=mixed Restart=always RestartSec=10 WorkingDirectory=/opt/mattermost User=mattermost Group=mattermost LimitNOFILE=49152 [Install] WantedBy=multi-user.target
ファイルを保存したら以下のコマンドを実行します。
sudo systemctl daemon-reload sudo systemctl status mattermost.service sudo systemctl start mattermost.service curl http://localhost:8065
HTMLが返却されれば問題ありません。
動作確認
別のPCからブラウザを起動し、http://IPアドレス:8065
にアクセスします。
Mattermostの画面が表示されました。
問題なく動作しているようですね。
片岩 裕貴 (記事一覧)
データアナリティクス準備室
2022年5月にG-gen にジョイン。
AI/ML系に関心が強く、ディープラーニングE資格とProfessional Machine Learningを取得。最近話題のGenerative AIにも興味がある。毎日の日課は三人乗りの電動自転車で子供を幼稚園に送り迎えすること。和歌山県在住。