どうもです、タドスケです。
こちらの記事で、ConoHa WINGのサーバー上にPython製のCGIを置いて実行できることができました。
次なる検証として、「ファイルの読み書き」ができるのかどうかを試してみたいと思います。
今更作ったマジカルバナナ
昔、マジカル頭脳パワーというクイズ番組がありまして…まあそんなことはさておき。
前の言葉から連想する単語を投稿するCGIプログラムです。
ConoHaWINGのサーバー上にテキストファイルを置いて、そこから読み書きする仕組みになっています。
↓ 他の方の投稿が表示されますので、場合によっては不愉快な言葉が含まれる可能性があります。ご注意ください。
言葉の重複チェックやファイルの排他制御などは厳密にやっていないので、そもそもルールを無視して投稿できたり、ファイルが突然消えたりするかも。
まあその辺は検証ということでご容赦くださいませ💦
ファイルを介して他のプレイヤーのデータをやり取りできるので、頑張れば非同期のオンラインゲームとかも作れるかもですね。
作成手順
作成は以下の手順で行いました。
- PyCharm上で実装する
- ファイル拡張子を.cgiに変更する
- CGIのパスを記載している箇所を.py→.cgiに修正する
- ConoHaWINGのファイルマネージャーから.cgiファイルをアップロードする
- .cgiの権限設定を「755」に変更する
作っていて思ったのが…
修正確認がめんどくさい!!!
PyCharm上で実行する際には
- CGIファイルの拡張子は.py
- cgi-bin/ フォルダ以下にファイルを置く
- ターミナルから python -m http.server –cgi を実行してローカルサーバーを立てる
という制約があるため、動作確認後にコードの一部(送信先のcgiのファイルパス部分)を書き換えないといけない手間があります。
ローカルサーバーの立て方は他にもあるようなので、もっと楽にできるやり方があるかも?
2022/08/14追記:ConoHaサーバー上でデプロイ用pythonを実行する
色々調べていたところ、以下の方法で少し楽になりそうです。
リネーム、権限変更を行うpythonファイルを作り、ConoHaサーバー上にアップする
以下のようなpythonファイル(仮にdeploy.pyとする)を作り、ConoHaのファイルマネージャーでサーバー上にアップします。
import os
os.rename('cgi-bin/hoge.py', 'cgi-bin/hoge.cgi') # リネーム
os.chmod('cgi-bin/hoge.cgi', 0o755) # 権限変更
ConoHaサーバーにSSHログインする
以下の記事のやり方を参考にしました。
僕の場合はPyCharmのターミナルを使用したかったので、以下のようにコマンドを入れました。
ssh [ユーザー名]@[ホスト名] -p [ポート番号] -i [DLしたプライベートキー名].pem
サーバー上でpythonコマンドを実行する
SSHログインが成功したら、お目当てのpythonファイルがあるディレクトリに cd コマンドで移動し、以下のコマンドを入力します。
python deploy.py
これで.py→.cgiへのリネームと権限の変更が一度にできるようになりました。
もっと楽にするには?
ConoHaへのファイルアップロード(FTPを使う?)やログイン操作も自動化(PowerShellスクリプトを書く?)できれば、もっと楽にできる余地はありそうです。
PowerShellでFTP接続ができるのと、ConoHaサーバーがFTP接続に対応していることがわかったので、これを組み合わせればうまくいきそう。
まとめ
Pythonでファイル読み書きを伴うCGIアプリを作ってみました。
とりあえずファイル読み書きは行えたものの、動作確認がしにくいこともあり、大人しくPyScriptのオフラインゲームを作っていく方が良さそうだという結論になりました。
コメント