やったこと:2020/9/21

SIRIUSからWordPressへの移行ツールの準備作業とか後処理作業とかも、できるところは自動化したいと考えて、SIRIUSのあるサーバーにCGIを置いて実行するように考えた。

とりあえず実験モードだけど、SIRIUSのサーバでCGIを動かすところまではできた。
プラグインのZIPファイルをWordPressのプラグインディレクトリへ展開までOK。

でもXサーバーでCGI動かして、動かないときに500で返ってきちゃうとお手上げなので、ローカルホストでのPythonのサーバーモードでの実行も試した。

ローカルホストの場合、CGIの置き場は「cgi-bin」じゃなきゃいけないし、CGIファイルの拡張子は.pyじゃなきゃいけない。

Xサーバーの場合は、置き場所は関係ないし、拡張子はむしろcgiの方が余分な設定がいらない。

.pyで動かす場合、.htaccesstに

AddHandler cgi-script .py

を追加してあげる必要がある。

CGIを動かすのに必要なことをだいたい調べてから、実際に行動に移すまで、ちょっとメンタルブロックがかかって、時間がかかったけど。

あとは影画像用で、確認用フォルダーに、済フォルダーにあるファイルと同じファイル名のファイルが存在したら削除するツールの修正。
済フォルダにのファイルには接頭語が付いている場合があるので、後ろからの文字列を比較して一致するかを確認。
'hogeboo.jpg'.endswith('boo.jpg') ⇒一致(戻り値:True)

とりあえずCGIを動かすのにハマったこと

ダブルコーテーション3つで囲った部分はコメントになるとあったのだけど、なぜかインデントがおかしいというエラーになって動かない。とりあえずダブルコーテーション3つは外したけど、これについてまだ深追いはしていない。

インデントはTABじゃなくてスペースで付ける必要がある。
PyCharmじゃなくて、普通のエディターでソース修正していて、タブがTABコードで入っていて、それだと実行できなかった。TABをすべてスペース4つに書き換えたら動いた。

日本語を表示するためのおまじないが必要。入れないとブラウザ画面に何も出てこない。(背景色だけなぜか変わる)

# -*- coding: utf-8 -*-
# 注1 エックスサーバーで漢字を表示するために必要
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
# ヘッダの出力
print("Content-type: text/html; charset=UTF-8")
print("")

タイトルとURLをコピーしました