#経緯
「やっとレンタルサーバー借りれた!1発目はAPI作ろう!!!」
と思ったは良いもののConoHa Wingが比較的新しいこともあり情報が少なく苦戦した。
同じ事をやろうと思っている人向けに書く。
#環境
端末: MacBook Pro M1
サーバー: ConoHa Wing
言語: Python3.6
フレームワーク: Flask
#1, SSH接続
https://enginyaa.com/conoha-wing-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
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]
<Files ~ "\.py$">
deny from all
</Files>
#!/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()
#!/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)
ホスト名とポート番号はSSHで確認できます
最後に「index.cgi」を選択して右クリックで属性変更を押します。
パーミッションを「755」に変更すれば無事API公開成功です。
#おわり
質問があったら@_SNQにDMください。
作ったAPIでTwitterBot作りました。
TwitterのShadowBanをチェックできるBotです。
DMに反応します。
@Shadow_Ban_Bot