Xserverで独自ドメインに追加したサブドメインを使って、Webアプリのバックエンド処理をPythonでホスティングする方法です。GCPやAWSなどクラウドでホスティングする方法が最近は一般的だと思いますが、今回は費用と性能を鑑みてXserverで行います。
細かい部分については既にこの上ない記事がいくつもあり、記載しても劣化したコピーとなってしまうので割愛しますが、サブドメインでAPIを作るという部分については特になかったのでここでは流れに注力して記載します。自分のメモようなのであしからず。
なお、Xserverの独自ドメインは既にあるものとします。
最終的にしたいこと
(私の場合)既にある
https://np-sys.com/
にサブドメインを追加して、
https://APIs.np-sys.com/APIを格納するフォルダ名/Flaskで定義したURLのスラッグ (末尾)
という形でバックエンド処理を走らせるようにする。当然ドメインはお好きなもので。
使用するツール
Xserverに自分で入れたPython
PythonのFlaskライブラリ
流れ
- Xserverでpythonをインストール
- Xserverのサーバパネルでサブドメインを作成し、public_htmlにAPIを格納するフォルダ名を作る。例えばfunctionsというフォルダを作る
- cgiでpythonスクリプトを走らせるようにする
です。
Xserverでpythonをインストール
Xserverで元々入っているPythonはありますが、権限の関係でpipコマンドで任意のライブラリをインストールできません。したがって、自分用のPythonを入れる必要があります。
細かい方法は下記がわかりやすかったです。結構これが負担重い。
https://note.com/coeeff/n/neab8acfde97e
https://qiita.com/kusumoto-t/items/b262b8878ccdfd137fa3
サブドメインを作成
Xserverのサーバパネルでサブドメインを作成します。
https://www.xserver.ne.jp/login_server.php
そしたらそのサブドメインのトップにFTPで接続するかsshで接続して、スクリプトを設置するフォルダを作成します。今回はfunctionsとしました。なお、サブドメインの文字は実際の物を記載していないのでセキュリティに無配慮だなとは思わないでください。
cgiでpythonスクリプトを走らせるようにする
あとはpythonをcgiで走らせるようにします。
これが最高にわかりやすかったです。
https://neko-py.com/xserver-web-application
注意点は、パーミッションの変更を忘れないこと、index.cgiの先頭にPythonのパスを絶対パスで指定すること(#! /home/Myname/.linuxbrew/bin/python3なら動きましたが、#! ~/.linuxbrew/bin/python3では動きませんでした)、Flaskはちゃんとインストールすることあたりが注意点。
そしたら
https://apis.np-sys.com/functions/
に相当するURLで動作します。
サブドメインのトップに作るフォルダ名はアプリケーションごとに管理した方がわかりやすそうです。