jupy2wp:ロリポップでxmlrpc.phpを使う時の注意点

jupy2wpを使ってjupyter notebookをxmlrpc.php経由でwordpressに投稿しようとしたら下記のようなエラーが出た。

xmlrpc.client.ProtocolError: <ProtocolError for xmlrpc.php: 403 Forbidden>

いつものロリポップのWAF設定が原因だろうと思って、ロリポのサイトのWAF設定を無効にしてもこのエラーが消えることはなかった。他に何か未知の設定があるのかと色々調べてみたが、特に何が原因になっているのか自力で見つけ出すことができなかったので、いつものようにネットであれこれ検索してみた。

考えられる原因:

  1. そもそもxmlrpc.phpが使えない(ロリポは使える)
  2. サーバーの設定(WAF以外は特に見当たらなかった)
  3. jupy2wp自体の問題(semi-abondoned、2年間放置状態)
  4. セキュリティ関連のプラグイン(無効にしてもダメだった)

一番怪しいのが3番だったのでjupy2wp.pyを見てみたが、当然、分かるはずもなく、途方に暮れながらネットを検索し続けると、.htaccessが一番怪しいことが分かった。

一応、.htaccessを見てみたところ、

<Files xmlrpc.php>
    order deny,allow
    deny from all    
</Files>

こんなんがあったのを発見した。どうやらこいつが原因だったらしい。ここの部分を以下のように書き換えてから再度jupy2wpを実行してみた。

<Files xmlrpc.php>
    order deny,allow
    deny from all
    allow from 自分のIP Address
</Files>

jupy2wpは以下のようなメッセージを出してくれたので成功したらしい

It seems all worked fine!! Check your wordpress site admin.

admin siteで確認してみると、jupyter notebook file(ipynb)がhtmlに変換されて下書きサイトに投稿されていた。これで、jupyter notebookでブログを書いてjupy2wpを使ってワードプレスに直接投稿できるのでかなり便利になった。

ちなみに、jupy2wpをロリポで使う時は、WAF設定を無効にしておく必要があることは言うまでもないだろう。

スポンサーリンク