書いておかないと忘れるので、私がやった手順をここに記する。
はじめに
やりたいこと
Google Cloud Platform (GCP) の無料枠内で仮想マシンを作って、定期的に指定したウェブサイトのスクリーンショットを撮って Discord に送信したい。
GCP の無料仮想マシンは、低スペックで使ってみるまでは大丈夫か不安だったが、使ってみたら意外と普通に使えたので驚いた。公式サイトに書いてある通りの設定で VMインスタンスを作れば無料で使える。
デスクトップを搭載していないコンソールのサーバでも、ブラウザを使ってスクリーンショットが撮れた。
前提
- GCP に仮想マシン (VMインスタンス) があること
- マシンタイプ: e2-micro
- ブートディスク: Ubuntu 20.04 LTS
環境構築
Chrome をインストール
Chrome がインストールされているか確認
1 | apt list --installed google* |
Chrome のリポジトリを追加
1 | sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' |
正常にリポジトリが追加されたか確認
1 | ls -l /etc/apt/sources.list.d |
リポジトリの鍵情報を追加
1 | sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - |
パッケージ一覧の更新(リポジトリを追加した後は必ず実行すること)
1 | sudo apt update |
Chrome をインストール
1 | sudo apt-get install google-chrome-stable |
Chrome がインストールされたか再確認
1 | apt list --installed google* |
Python をインストール
Python をインストール
1 | sudo apt install python3 |
Python のパッケージをインストール
1 | pip install selenium |
ChromeDriver をインストール
まず、インストールした Chrome のバージョンを調べる。
1 | google-chrome --version |
調べたバージョンと同じか1つ大きいバージョンの ChromeDriver をインストール
1 | pip install chromedriver_binary==94.0.4606.61.0 |
ここまでの作業で、ウェブサイトのスクリーンショットを撮って Discord に送ることができる。
定期実行の設定
ここからは、指定した Python を定期的に実行する設定をしていく。
インストールした Python のパスを調べる。
1 | which python3 |
実行したい Pythonファイルのパスを調べる。
1 | readlink -f example_1.py |
crontab (クロンタブ) エディタを開く。
1 | crontab -e |
crontab に定期実行する設定を書き込む。
1 | 0 8 * * * /usr/bin/python3 /home/user/example_1.py |
cron のサービス状態を確認
1 | service cron status |
cron を開始
1 | service cron start |
cron を再起動
1 | sudo /etc/init.d/cron restart |
サーバ日時の設定
GCP の仮想マシンは海外にあるので、タイムゾーンを日本標準時 (JST) に変更
1 | ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime |
仮想マシンのタイムゾーンを確認
1 | date |
おわりに
今回は流儀に反して画像が少なめになっちゃいました。ごめんなさい。
とりあえず、私が使ったコマンドと説明を書いただけです。
やっぱコマンドは慣れませんね。覚えるのも大変ですし。