Xserver+PHP+CronでTwitterの定期botを作る

XserverでTwitterの定期bot環境を構築するメモ

開発環境

MacOS:Catalina 10.15.7

XserverのPHP:7.4.28

XserverのComposer:2.2.17

PHPでツイート出来るようにする

まずはPHPでツイートできるようにする

Twitter Develperに登録する

Twitterアカウントの電話番号が未登録だとデベロッパー登録できないので、事前に電話番号登録を済ましておくこと。

Consumer Keys(=API Key)やbearer_token、Access_tokenは、すぐローカルにコピーすること。後で確認できなくなる。

◆User authentication settingsについて

  • OAuth 1.0aをON(OAuth 2.0はOFFで良い)
  • App PermissionsはRead and Write
  • Callback URI / Redirect URLは適当な自身のWebサイトURLを入れる
  • Website URLも適当な自身のWebサイトURLを入れる
  • 以下は空欄でOK

SSHでXserverにアクセスする

PHPでツイートするために必要な「twitter-api-v2-php」を、XserverにインストールするためにSSHでXserverにアクセスする。

①XserverのサーバーコントロールでSSHの秘密鍵を作成してダウンロードする。
(参考)https://www.xserver.ne.jp/manual/man_server_ssh.php
②ダウンロードした秘密鍵を使ってターミナルからSSH接続する。
(参考)https://qiita.com/ryo2132/items/38b5a93b3df476dd2b44

アクセスする際のコマンドはこんな感じ
$ ssh -l (ユーザーID) -i (秘密鍵ファイル名) (サーバー名).xserver.jp -p 10022

ポート番号が10022であることに注意すること。

XServerのComposerを最新にする

「twitter-api-v2-php」をインストールするためにはComposerと呼ばれるパッケージ管理ツールが必要となる。
XserverにはデフォルトでComposerがインストール済みだが、一応最新のバージョンにする。(しなくても大丈夫かも知れない)
(参考)https://analyzegear.co.jp/blog/1694

XServerにtwitter-api-v2-phpをインストールする

(参考)https://blog.yublog.com/entry/2022/03/11/213138

※twitter-api-v2-phpをインストールした際、phpのバージョンが古いといったエラーメッセージが出たら…
ここ(https://forums.concretecms.org/t/x-php/1625)を参考にしてphpのバージョンを適切に切り替える。
サーバーコントロールで設定したphpのバージョンは7.4.28なのに php -v コマンドを実行して表示されるphpのバージョンが5.4.16だったりした場合、サーバーコントロール設定したPHPバージョンと実際のPHPバージョンが異なっているので、上記のリンク先を参考に設定する。

 

botプログラムを書いたPHPファイルにブラウザでアクセスして、Twitterに投稿されたらOK

 

Cronを使ってスケジューラー登録する

定期的にphpプログラムを実行させるためには、Xserverのcronという仕組みを使う。

Cronの設定

ここ(https://www.xserver.ne.jp/manual/man_program_cron.php)を参考にCronを設定する。

上記リンク先の設定例を引用すると

(例)abc.phpをPHP 7.2 で実行する場合
/usr/bin/php7.2 /home/サーバーID/独自ドメイン名/public_html/abc.php

となっているように、php○.○の後は半角スペースが入るのと、自分の環境ではなぜかphp-fcgi7.4 のように-fcgiを付けてFastCGIとしないとCronが動作しなかった。

設定上の注意

Cronの日付設定と曜日設定はorで判別されることに気をつけること。
特定の日付だけ動かしたいのに、曜日指定も入れるとその曜日にも必ず動いてしまうため意図しない日付で動いてしまう。

以上。

コメントを残す

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

CAPTCHA


ABOUTこの記事をかいた人

子どもが産まれたことをきっかけに働き方を見直し、フリーランスSEになった30代の父親。 埼玉県某市在住。 妻と娘(5歳)とペット(フェレット)で、日々悩みながらも楽しく過ごしています。