LoginSignup
4

More than 1 year has passed since last update.

ConoHa WingでAPI公開

Last updated at Posted at 2021-12-12

経緯

「やっとレンタルサーバー借りれた!1発目はAPI作ろう!!!」
と思ったは良いもののConoHa Wingが比較的新しいこともあり情報が少なく苦戦した。
同じ事をやろうと思っている人向けに書く。

環境

端末: MacBook Pro M1
サーバー: ConoHa Wing
言語: Python3.6
フレームワーク: Flask

1, SSH接続

ここの記事がわかりやすかったです

2, Pythonを使えるようにする

「ConoHa Wing Python」と検索するとpyenvをインストールして使用する方法が紹介されてます。
自分の環境ではなぜかうまくいかなかったのでサーバーに標準で入っているPython3.6を使用できるようにしました。

Pythonのパスを通す

[xxxxxxx@web0000 ~]$ export PATH=/opt/alt/python36/bin:$PATH

Pythonのパスが通った事を確認

[xxxxxxx@web0000 ~]$ which python
/usr/local/bin/python

.bashrcのパスを通す

[xxxxxxx@web0000 ~]$ echo 'export PATH=/opt/alt/python36/bin:$PATH' >> $HOME/.bashrc

パスが通った事を確認

[xxxxxxx@web0000 ~]$ which pip3
/opt/alt/python36/bin/pip3

これでPythonとpip3が使えるようになりました。

3, Flaskをサーバー上で機能させる

用意するファイルは3つです

  • .htaccess
  • app.py
  • index.cgi
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]
<Files ~ "\.py$">
  deny from all
</Files>
app.py
#!/opt/alt/python36/bin/python3.6

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/', methods=['GET'])
def hello_world():
    return jsonify({'message': 'Hello world'})

if __name__ == "__main__":
    app.run()
index.cgi
#!/opt/alt/python36/bin/python3.6

import cgitb
cgitb.enable()

from wsgiref.handlers import CGIHandler
from app import app
from sys import path

path.insert(0, '/public_html/')# index.cgiのパス
from app import app
class ProxyFix(object):
  def __init__(self, app):
      self.app = app
  def __call__(self, environ, start_response):
      environ['SERVER_NAME'] = "1111.conoha.ne.jp"# ← ホスト名
      environ['SERVER_PORT'] = "0000"# ← ポート番号
      #GETとPOSTの両方がある場合は消す↓
      environ['REQUEST_METHOD'] = "GET"
      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)

スクリーンショット 2021-12-12 13.31.56.png

ホスト名とポート番号はSSHで確認できます

最後に「index.cgi」を選択して右クリックで属性変更を押します。
パーミッションを「755」に変更すれば無事API公開成功です。

スクリーンショット 2021-12-12 16.52.27.png

おわり

質問があったら@_SNQにDMください。

作ったAPIでTwitterBot作りました。
TwitterのShadowBanをチェックできるBotです。
DMに反応します。
@Shadow_Ban_Bot

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
What you can do with signing up
4