さくらインターネットのレンタルサーバーは、OSがFreeBSDのためChromedriverやGeckodriverの公式バイナリが提供されていない。
このためLinux用のバイナリを利用してもFreeBSDのアーキテクチャと互換性がないため、Exec format error
が発生する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ELF binary type "0" not known. Traceback (most recent call last): File "capture.py", line 34, in <module> main() File "capture.py", line 14, in main driver = webdriver.Chrome(service=service, options=options) File "/home/xxxx/.local/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 45, in __init__ super().__init__( File "/home/xxxx/.local/lib/python3.8/site-packages/selenium/webdriver/chromium/webdriver.py", line 55, in __init__ self.service.start() File "/home/xxxx/.local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 104, in start self._start_process(self._path) File "/home/xxxx/.local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 214, in _start_process self.process = subprocess.Popen( File "/usr/local/lib/python3.8/subprocess.py", line 858, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/local/lib/python3.8/subprocess.py", line 1704, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) OSError: [Errno 8] Exec format error: '/home/xxxx/.local/bin/chromedriver' |
ローカルPCでSeleniumを動かし続けるのは停電などで止まる可能性があるのでサーバーで稼働させたい。
一つの選択肢としてはGCE(Google Compute Engine)。
e2-microインスタンスであれば、1 GBのメモリを提供した30 GBの標準永続ディスク(HDD)または32 GBのSSD永続ディスクが無料枠で使える。

タダでもらえるんなら、もろうとけばいいんや!
ということで使ってみた。
GCE(Google Compute Engine)の無料枠の設定
基本的には次のサイトを参照した。

プロジェクトを選択
まず、[Google Cloud Platform]にログインする。

そして作成済みのプロジェクト or 新規プロジェクトを選択する。
Compute Engineの有効化
- メニューから「Compute Engine」を選択し、「VMインスタンス」をクリック
- Compute Engine APIを有効にします(プロジェクトごとに有効化が必要)
で、インスタンスの設定を行う。
- 名前: 任意の名前を指定(例:
selenium-test
) - リージョンとゾーン: デフォルトのままでOK
- マシンタイプ:
e2-micro
(無料枠に含まれる) - ブートディスク:
Debian
またはUbuntu
を選択
ただしディスクサイズは30GBまで無料枠なので貰えるものは貰っておく。
次に「外部IPv4アドレス」の欄をクリックして「静的外部IPアドレスを予約」を選択する。
設定をしないと、再起動するたびにIPアドレスが変わってしまう。
Putty/WinSCPでのアクセス方法
まず、ターミナルで以下のコマンドを実行してSSHキーを生成する。
1 |
ssh-keygen -t rsa -b 2048 -f ~/.ssh/google_compute_engine -C "アカウント名" |
その後、生成した公開鍵 (~/.ssh/google_compute_engine.pub) をテキストで開き、Google Cloud ConsoleのVMインスタンスのSSHキー設定に追加する。
PuTTYgenを使用して鍵を変換する手順
- 1. PuTTYgenの起動する
- 2. PuTTYgenの画面で「読み込み(L)」をクリックし、手元にある秘密鍵ファイル(google_compute_engine)を選択する
- 3. 鍵が読み込まれたら、「秘密鍵を保存」をクリックして、PuTTY形式の秘密鍵(google_compute_engine.ppk)を保存する
puttyでの接続
「Session」カテゴリでHost名とポートを入力し、左側のカテゴリリストから「Connection > SSH > Auth」を選択する。
次に、「認証のための秘密鍵ファイル(K)」で、PuTTY形式の秘密鍵(google_compute_engine.ppk)を指定する。
ログインできた。
WinSCPでの接続
WinSCPを起動し「新しいセッション」を作成する。
次に 「SSH > 認証」で「秘密鍵ファイル」を選択し、PuTTY形式の秘密鍵ファイル(google_compute_engine.ppk)を指定する。
そして「保存」をクリックして設定を保存し、「ログイン」をクリックして接続する。
こちらもログインできる。
【その他】LibreOfficeとフォントのインストール方法
Officeの代わりには「LibreOffice」を利用している。
まず、公式サイトから deb ファイルが同梱された *.tar.gz ファイル、翻訳パック LibreOffice_xxx_Linux_x86-64_deb_langpack_ja.tar.gzをダウンロードする。
1 2 3 4 5 |
(myenv) $ tar zxvf *.tar.gz (myenv) $ cd DEB (myenv) $ sudo apt install ./*.deb (myenv) $ libreoffice25.2 --version LibreOffice 25.2.2.2 |
フォントは「源泉丸ゴシック」を利用。
1 2 3 4 5 6 |
(myenv) $ sudo mkdir -p /usr/share/fonts/truetype/gensen (myenv) $ sudo mv ~/cron/GenSenRounded-H.ttc /usr/share/fonts/truetype/gensen/ (myenv) $ sudo fc-cache -fv (myenv) $ fc-list | grep "GenSenRounded-H" /usr/share/fonts/truetype/gensen/GenSenRounded-H.ttc: GenSenRounded JP,源泉丸ゴシック,GenSenRounded JP H,源泉丸ゴシック H:style=H,Regular /usr/share/fonts/truetype/gensen/GenSenRounded-H.ttc: GenSenRounded TW,源泉圓體,源泉圓體 H,GenSenRounded TW H:style=H,Regular |
おわりに
今はLLMに質問しながら時にはスクリーンショットを渡してあげれば教えてくれる。とても便利。
サーバーにアプリから接続さえできてしまえば、あとは好きな事をすれば良い。