LoginSignup
3
0

More than 1 year has passed since last update.

CORESERVERでFlaskを使ったWebAPIを作ってみる

Last updated at Posted at 2022-03-18

概要

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モードで動かします。の宣言
.htaccess
AddHandler cgi-script .py
 
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.py/$1 [QSA,L]
  • 各種設定と、CGIの「app」を実行してね。の処理
index.py
#!/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だぜ。と、そのパスと分岐処理を記載
test.py
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動かしたり、、、の記事も追加します。

3
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0