ロリポップのレンタルサーバでスプラトゥーン3の結果をstat.inkにアップする(cronでs3sを定期的に実行)

EOS R/RF24-105mm F4 L IS USM

みなさん最近、イカしてますか?

ヘタクソですが最近またやり始めました。前々からstat.inkを使わせて頂いていて、s3sをPCでローカル実行して成績をアップしていました。自分の成績を分析できるので結構面白いです。作ってくれた方に感謝です。

というわけで、本題です。私は組み込み系の仕事をやっていてエンジニアの端くれのようなことをしていますが、web系には弱く超初心者です。そんな自分が表題の環境を作ったときにハマった箇所を紹介していきたいと思います。

まずs3sを導入します。s3sはニンテンドーオンラインのイカリング3から成績データを取得し、stat.inkにアップするツールです。下記を参照してローカルで実行し、動作確認しておきます。

次にロリポップのSSHでサーバーに必要なモジュールをインストールします。
ロリポップの管理画面上でSSHを有効化し、下記を確認してください。
(※SSHはスタンダードプラン以上で利用できるようです。それ未満のプランでもcronは実行できるのでSSHがなくても頑張れば環境構築できるようです。)

SSHはwindowsのコマンドプロンプト上で下記のように入力するとパスワードの入力を求められます。
↑のSSHパスワードを入力(入力しても表示されませんが問題ないです)してエンターでログインできます。

$ ssh アカウント@ssh.lolipop.jp -p 接続ポート

SSHに入ったら下記ページを参考にpipをインストールし、PATHを通します。

上記ページと異なる点として、ロリポップサーバー上のpythonのバージョンは3.7.17でした。3.7で動くpipをインストールする必要があります。下記で適切なバージョンがインストールできます。

$ curl https://bootstrap.pypa.io/pip/3.7/get-pip.py -o get-pip.py
$ python3 get-pip.py --user

下記のように表示されればOKです。

$ pip3 list

# 実行結果
Package                Version
---------------------- -------
mysql-connector-python 8.0.33
mysqlclient            2.1.1
pip                    24.0
protobuf               3.20.3
PyMySQL                1.0.3
setuptools             47.1.0
wheel                  0.42.0

ここでFTPでs3sをアップします。ロリポップのFTPを使うなりFFFTP使うなりでアップします。
アップしたらs3sのフォルダに移動し、必要なモジュールをインストールします。

$ cd s3s
$ pip3 install -r requirements.txt

あとはs3sを実行すればよいのですが、下記のようにエラーがでます。

$ python3 s3s.py -r

# 実行結果
Traceback (most recent call last):
  File "s3s.py", line 10, in <module>
    import requests, msgpack
  File "/home/users/0/main.jp-hogehoge/.local/lib/python3.7/site-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/home/users/0/main.jp-hogehoge/.local/lib/python3.7/site-packages/urllib3/__init__.py", line 42, in <module>
    "urllib3 v2.0 only supports OpenSSL 1.1.1+, currently "
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips  26 Jan 2017'. See: https://github.com/urllib3/urllib3/issues/2168

どうやらurllib3ライブラリでOpenSSLが1.1.1以上でないとダメだそうです。
しょうがないので下記を参考にurllib3のバージョンを下げます。

$ /usr/local/bin/python3.7 -m pip install urllib3==1.25.11

これでs3sを実行できました。
ここまでくればあとはcronを設定するだけです。

上記ページを参考に下記のような.shファイルを作成し、ロリポップの管理画面上でcronを設定すればOKです。上記にも記載がありますが、.shファイルのパーミッションは700としてください。

#!/bin/sh
#
# cron script
#

cd /home/users/0/main.jp-hogehoge/web/s3s/  #hogehogeは自分のサーバー名
/usr/local/bin/python3 s3s.py -r

ここで注意点として、python実行時のコマンドはなぜかフルパスじゃないとうまく動かないみたいです。

これでやっとs3sを定期実行できるようになりました。先人たちに感謝です。
イカリング上に保存される結果は50件までなので50試合する前にs3sを実行しないといけません。私はそんなにできないので毎日夜に1回実行されるようにしています。

実施する場合は自己責任でお願いしますね。イカ、よろしく〜

2024-09-10|タグ: , , ,
関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です