普段fastapiを使っていてるためfastapiでapiサーバ構築したいが
とりあえずサクラのレンタルサーバの中でflask使ってapiサーバ構築している記事が多かったので
試してみた、備忘録です。
参考 https://qiita.com/ninoko1995/items/8b01fd02bada3a2fa794
ゴール
https://abcrossdominance.sakura.ne.jp/flask-cgi/hello/
こちらにアクセスしてレスポンスが返ることの確認
手順
レンタルサーバー内に接続し
/home/(UserName)/www/flask-cgi/hello/ 以下に.htaccess, app.py, index.cgiを作成
.htaccess
1 2 3 4 5 6 7 |
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /flask-cgi/hello/index.cgi/$1 [QSA,L] <Files ~ "\.py$"> deny from all </Files> |
app.py
1 2 3 4 5 6 7 8 9 |
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "Hello aaaa" if __name__ == '__main__': app.run() |
index.cgi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#!/home/abcrossdominance/www/flask-cgi/venv/bin/python3 import cgitb cgitb.enable() from wsgiref.handlers import CGIHandler from app import app # from sys import path path.insert(0, '/abcrossdominance/www/flask-cgi/hello/') from app import app class ProxyFix(object): def __init__(self, app): self.app = app def __call__(self, environ, start_response): # ※要書き換え environ['SERVER_NAME'] = "abcrossdominance.sakura.ne.jp" environ['SERVER_PORT'] = "80" environ['REQUEST_METHOD'] = "GET" environ['SCRIPT_NAME'] = "" environ['PATH_INFO'] = "/" environ['QUERY_STRING'] = "" environ['SERVER_PROTOCOL'] = "HTTP/1.1" return self.app(environ, start_response) if __name__ == '__main__': app.wsgi_app = ProxyFix(app.wsgi_app) CGIHandler().run(app) |
詰まったところ
- index.cgi に実行権限を与えないとエラーになるので
1chmod 744 index.cgi
を実行した。 - index.cgi の最初の一行目でシバンを記述しなかったためスクリプトが実行できていなかった。(インタプリンタの指定をしないスクリプトの種類が認識できないため?)
- vscodeのremote sshプラグイン使用してサーバーに入れないこと
(FreeBSDは未対応。localでコード書いてscpで転送した。)
最後に
fastapiでもサーバー立ち上げられるか確認する。
料金怖いけどAWSのラムダ使おうかな〜、それが一番楽。
コメント