よく使うので起稿。
EC2でお手軽python httpサーバー。
インストールの順番によってはpython2になってしまってハマるので
EC2インスタンスの新規作成直後を想定しています。
準備
いつもの
uwsgi入れるためにpython3-develが必要。
sudo timedatectl set-timezone Asia/Tokyo
sudo amazon-linux-extras install epel
sudo amazon-linux-extras install nginx1
sudo yum groupinstall "Development Tools"
sudo yum install python3
sudo yum install python3-devel
sudo pip3 install flask
sudo pip3 install uwsgi
sudo yum update
cd
mkdir app logs
nginx
下記のようなのを追記。(tmp.sockにすると動かないっぽい・・)
/etc/nginx/nginx.conf
location / {
include uwsgi_params;
uwsgi_pass unix:///run/uwsgi.sock;
}
flask
いつもの
/home/ec2-user/app/app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
uwsgi
chdirしないと動かない。
/home/ec2-user/app/app.ini
[uwsgi]
chdir = /home/ec2-user/app
module = app
callable = app
master = true
processes = 1
socket = /run/uwsgi.sock
chmod-socket = 666
vacuum = true
die-on-term = true
logto = /home/ec2-user/logs/uwsgi.log
#uwsgi service化
↓のファイルを作る。
/etc/systemd/system/uwsgi.service
[Unit]
Description = uWSGI
After = syslog.target
[Service]
ExecStart = /usr/local/bin/uwsgi --ini /home/ec2-user/app/app.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
※たまにuwsgiのPathが違う時がある。which見て修正。
サービス起動、nginx再起動
sudo systemctl enable uwsgi
sudo systemctl start uwsgi
sudo systemctl restart nginx
#その他
デバッグ時は下記のあたりを見る。
/var/log/nginx/error.log
/home/ec2-user/logs/uwsgi.log
途中で困ったときのコマンド
uwsgi --wsgi-file app.py --http :5000
↑app.pyを手動で起動してみる
sudo /usr/local/bin/uwsgi app.ini
↑app.iniから起動してみる