契約しているXserverでプログラムを定期実行し、Twitterのbotを作成しました。
その際に設定したことを備忘録としてまとめておきます。
定期実行したいファイルを作成してある状態から記述します。
1. ファイルをXserver上に配置
まずはXserver上にファイルを配置します。このファイルを実行するとTwitterのAPIを通してツイートされるようになっている状態のファイルです。
自分はWindowsならFFFTP、Macならcyberduckを使いますが、Xserverはブラウザからでもファイル管理ができます。
public_html
以下の任意の場所に置きましょう。
2. ファイルのパーミッションを設定
これができていなくて引っかかることが多いと思います。
FTPソフトからでもブラウザからでもいいので、実行したいファイルのパーミッションを755にします。
書き込みは自分だけ、それ以外は誰でものパーミッションです。
755と入力してもチェックボックスで入力してもOK
3. Cronを設定
Xserverのサーバー管理パネルにログインします。
上の画像の例は毎日21時0分に実行するCron設定です。
分、時間、日、月、曜日
アスタリスク(*)
「毎~」のときに使います。(毎月、毎日、毎時など)
試してないですが、おそらく「分」を(*)にすると毎分実行されると思うので気をつけましょう。
複数指定したいとき
コンマ(,)区切りで指定します。
0分と30分に実行したいときは0, 30
と指定します。
曜日
曜日の数字は以下のように指定します。
0=日曜日
1=月曜日
2=火曜日
3=水曜日
4=木曜日
5=金曜日
6=土曜日
7=日曜日
月木で実行したいなら1, 3
と指定します。
コマンド
コマンドには定期実行させたいコマンドとファイルを指定します。
hoge.phpを定期実行させたいときは以下のようになりますが、これだとダメです。
php7.2 hoge.php // phpバージョン7.2のコマンドでhoge.phpを実行する
php以外の言語でももちろんOKです(インストールされている場合は)
絶対パスを指定すること
コマンドもファイルも絶対パスを指定します。(コマンドは絶対パスじゃなくても良いかも)
先程の例だと以下のようになります。(hoge.phpがpublic_htmlの直下にある場合)
/usr/bin/php7.2 /home/サーバーID/ドメイン名/public_html/hoge.php
コマンドの絶対パスはネットで調べれば出ると思います。
ファイルの絶対パスはpublic_html
の絶対パスが/home/サーバーID/ドメイン名/public_html/
なのでそこから考えましょう。
または、実行したいファイルと同じ場所にecho __DIR__
と書いたファイルを置いてブラウザからそのファイルにアクセスすると、そこの絶対パスが表示されます。
以上
本当はAWSとかで作りたいんですが、せっかくXserver契約してるから、、、とこっちばっか使っちゃいます。