Visual Studioで作ったPythonのBottle Web ProjectをXREAサーバーで動かしてみた話
勉強がてらpythonでwebサイトを構築してみたくなったのでやってみた。
以前個人的に使っていた統合環境がVisual Studio 2017@Windowsだったので、とりあえずこの環境にあるテンプレをサーバー上で動かすのを第一目標とした。
もう少し詳しい人は↓のほうがはるかに参考になる。
errormaker.blog.fc2.com
Visual Studio で Bottle Web Project を作る
とりあえずテンプレートからプロジェクトを作成。
テンプレート作成後、まずVisual Studioを介したデバッグで動くかを確認。
見れた。
XREAサーバーで動かすための編集
次に、テンプレートそのままではサーバーにアップロードしてもちゃんと動かないので、いくつか編集を加える。
http://ドメイン名/ というURLでアクセスされたときにスタートアップファイルであるapp.pyが起動するように、ファイル名をindex.cgiにリネーム。
index.cgiがpythonスクリプトとして実行されるよう、次のようなshebangを1行目に追加(これはXREAサーバー側で指定されているもの)。
#!/usr/local/bin/python3
index.cgiの末尾のBottleを起動する箇所で、サーバーアダプターがwsgirefでは動かないので、cgiに変更する。
#bottle.run(server='wsgiref', host=HOST, port=PORT) bottle.run(server='cgi', host=HOST, port=PORT)
※逆にcgiにしてしまうとVisual Studioからのデバッグ起動では動かなくなるようなので、PROJECT_ROOTでの分岐を入れたりする必要がありそうだが、ここでは割愛。
XREAサーバーへ転送
とりあえずこれだけの編集を施してサーバーへ転送。gitやFTPを介したファイル転送機能くらい統合環境なんだから付いていそうな気がするが、ぱっとは見つけられなかったのでFFFTPで普通に転送した。
index.cgiのパーミッションを705にする。
bottle.pyをサーバーに置く。Visual Studioを介して入手したものを使う。
※ただし、1行目にshebangとしてローカルパスが書き込まれてしまっているので、サーバー上では閲覧できないパーミッションにしたり、shebangを変えたりしたほうがいいと思う。
XREAサーバーで動作テスト
サーバー上で問題なく動くかテスト。
トップページは見れるが……。
それ以外のページは見れない。
.htaccessの設定
これは、"http://ドメイン名/home" ではなく "http://ドメイン名/index.cgi/home" というURLでアクセスしないと見れないようになっているのが原因なので、.htaccessにURLを書き換える処理を追加することで対処する。
.htaccess
DirectoryIndex index.cgi RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /index.cgi/$1 [L] <Files ~ ".(cgi|xcg)$> <Limit GET POST> order allow,deny allow from all </Limit> </Files> # https://errormaker.blog.fc2.com/blog-entry-54.html # /*** を /index.cgi/*** に書き換える処理と、 # 外国からのアクセスが集中したときの403エラーを回避する処理が書いてある
これでテンプレートがサーバー上で動くようになった。あとはテンプレートの内容から適当に編集していけばいろいろ出来そう。