【GCP】定期的に通知を飛ばすサーバを構築する

アプリ開発

書いておかないと忘れるので、私がやった手順をここに記する。

はじめに

やりたいこと

Google Cloud Platform (GCP)無料枠内で仮想マシンを作って、定期的に指定したウェブサイトのスクリーンショットを撮って Discord に送信したい。

GCP の無料仮想マシンは、低スペックで使ってみるまでは大丈夫か不安だったが、使ってみたら意外と普通に使えたので驚いた。公式サイトに書いてある通りの設定で VMインスタンスを作れば無料で使える。

デスクトップを搭載していないコンソールのサーバでも、ブラウザを使ってスクリーンショットが撮れた。

前提

  • GCP に仮想マシン (VMインスタンス) があること
  • マシンタイプ: e2-micro
  • ブートディスク: Ubuntu 20.04 LTS

環境構築

Chrome をインストール

Chrome がインストールされているか確認

apt list --installed google*

Chrome のリポジトリを追加

sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

正常にリポジトリが追加されたか確認

ls -l /etc/apt/sources.list.d

リポジトリの鍵情報を追加

sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

パッケージ一覧の更新(リポジトリを追加した後は必ず実行すること)

sudo apt update

Chrome をインストール

sudo apt-get install google-chrome-stable

Chrome がインストールされたか再確認

apt list --installed google*

Python をインストール

Python をインストール

sudo apt install python3
sudo apt install python3-pip

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

pip install selenium
pip install discordwebhook

ChromeDriver をインストール

まず、インストールした Chrome のバージョンを調べる。

google-chrome --version

調べたバージョンと同じか1つ大きいバージョンの ChromeDriver をインストール

pip install chromedriver_binary==94.0.4606.61.0

ここまでの作業で、ウェブサイトのスクリーンショットを撮って Discord に送ることができる。

定期実行の設定

ここからは、指定した Python を定期的に実行する設定をしていく。

インストールした Python のパスを調べる。

which python3

実行したい Pythonファイルのパスを調べる。

readlink -f example_1.py

crontab (クロンタブ) エディタを開く。

crontab -e

crontab に定期実行する設定を書き込む。

0 8 * * * /usr/bin/python3 /home/user/example_1.py

cron のサービス状態を確認

service cron status

cron を開始

service cron start

cron を再起動

sudo /etc/init.d/cron restart

サーバ日時の設定

GCP の仮想マシンは海外にあるので、タイムゾーンを日本標準時 (JST) に変更

ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

仮想マシンのタイムゾーンを確認

date

おわりに

今回は流儀に反して画像が少なめになっちゃいました。ごめんなさい。

とりあえず、私が使ったコマンドと説明を書いただけです。

やっぱコマンドは慣れませんね。覚えるのも大変ですし。

タイトルとURLをコピーしました