CORESERVERでFlaskを使ったWebAPIを作ってみる
概要
Androidアプリ開発で、Serverから情報を取得して表示するアプリを作った際、なるべく手軽で、安価で・・・
という考えから、CORESERVERでWebAPIを作ってみた。という記事です。
CORESERVERは、単なるHTMLやCGIをアップロードできる領域というものではなく、Python3やMySQLも使えるので、Flaskで簡易的に作っています。
基本的な話
CORESERVERとは
■ CORESERVER(https://www.coreserver.jp/ )
ざっくり言えば、コスパ最強の「レンタルサーバー」です。
V1プランで「CORE-Mini」を選択すれば、年払いで2,640円(1日 7円!)にて使えるという驚き。
→料金表(V1の方をみてね)
https://www.coreserver.jp/price/
しかも、月間の転送量MAXは「無制限」(当然、制限はしないけど、負荷上がったらそれまで。という方式)。
MySQLだろうが、Python3だろうが、かなりいろいろ使えるけど金額変わらず。
素晴らしい!
実験台としては、申し分ない・・・・
※なお、CRONも使えるので、自動実行なども可能!(ただし、制限はある)
※さらに、無料SSLも使える!(ひゃっほい)
Flaskとは
■ Flask(https://flask.palletsprojects.com/en/2.0.x/ )
簡単にいえば、WebAPIで「 https://hogehoge.com/ 」と「https://hogehoge.com/hello 」を下記コードで作れるということです。
なので、Python3の便利な機能をFlaskで思う存分使いまくれる。ということです。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
実際にやってみる
前提としては、下記ぐらいを想定してます。
- Windows10を利用
- CORESERVERのアカウントは作成済
- Python3はなんとなく知ってる
- Linuxコマンドはなんとなく使える
【準備1】CORESERVERへの接続確認
CORESERVERへ接続する(WinSCP編)
■ WinSCP( https://ja.osdn.net/projects/winscp/ )
この辺を見ながら、ログインします。
・FTPソフトの設定情報の確認
https://help.coreserver.jp/manual/ftp-info/
・WinSCPの設定方法(FTPSプロトコル)
https://help.coreserver.jp/manual/winscp/
CORESERVERへ接続する(TeraTerm編)
■ TeraTerm ( https://ja.osdn.net/projects/ttssh2/ )
この辺を見ながら、ログインします。
・SSHの利用(Windows)
https://help.coreserver.jp/manual/v1/ssh-win/
【準備2】インストール済のパッケージを確認する(Python3)
TeraTermによるログイン状態から、インストール済みのパッケージを確認します。
(すでに、自分で色々入れているので多々増えてます)
[hoge@xx2 ~]$ python3 -m pip freeze
certifi==2021.10.8
・・・
注意
下記で確認すると、「Python2」のものが表示されてしまいます。
[hoge@xx2 ~]$ pip freeze
【準備3】Pythonファイルを作成する
- 全部のアクセスをすべて「index.py」に向けちゃうぞ!というリダイレクト処理とCGIモードで動かします。の宣言
AddHandler cgi-script .py
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.py/$1 [QSA,L]
- 各種設定と、CGIの「app」を実行してね。の処理
#!/usr/local/bin/python3
# coding: utf-8
from server import app
from wsgiref.handlers import CGIHandler
import os
# SSLしか認めないとき
# os.environ["SERVER_PORT"] = "443"
# POSTしか認めないとき
# os.environ["REQUEST_METHOD"] = "POST"
CGIHandler().run(app)
- 「app」はFlaskだぜ。と、そのパスと分岐処理を記載
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
【準備4】ファイルをpublic_htmlへアップロードする
前準備で作成した3つのファイルをWinSCP(Teratermでもいい)でpublic_htmlにアップロードする
アクセス権は、3ファイルとも「644」で良いと思う。
完成。
これで、自分用のURLを入力すれば「Index Page」とか「Hello, World」とブラウザに表示される、、、、はず。
表示されねぇ
必要なパッケージがインストールされていない
ブラウザからだと、内部のエラーが分からず、500 Internal Server Errorなどになったりしてモヤモヤします。
その場合、TeraTermで直接index.pyを実行してみます。
[hoge@xx2 ~]$ python3 index.py
そうすると、足りないパッケージが表示されるので、下記のように追加していきます。
[hoge@xx2 ~]$ python3 -m pip install <足りないパッケージ名>
pipのバージョンが古いのが気になる
アップグレードしたい場合は、下記コマンドで
[hoge@xx2 ~]$ python3 -m pip install --upgrade pip --user
巻末
需要があるようなら、CORESERVERでDBに接続したり、cron動かしたり、、、の記事も追加します。
Author And Source
この問題について(CORESERVERでFlaskを使ったWebAPIを作ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/TAKANEKOMACHI/items/a47c0566d4df724dec15著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .