Flask在FreeBSD和树莓派上部署

Flask 代码: /usr/home/user/prj/python/flask-examples/example2.py

import flask
app = flask.Flask(__name__)

from werkzeug.contrib.fixers import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app)

@app.route("/")
def index():
    return "Hello, " + flask.request.remote_addr

if __name__ == "__main__":
    app.run(host="0.0.0.0")

用到3个软件Gunicorn、Nginx、Supervisor

Gunicorn

安装Gunicorn并启动一个4线程的web服务

# pip install gunicorn
# rehash
# gunicorn -w 4 -b 0.0.0.0:8005 example2:app

访问http://SERVER:8005,其它局域网电脑访问的话,SERVER替换为服务器ip。

Nginx

安装

sudo pkg install nginx

修改配置如下

/usr/local/etc/nginx/nginx.conf

server {
        listen 81;
        server_name _;
        location / {
            proxy_pass http://127.0.0.1:8005/;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        }

编辑/etc/rc.conf, 开启nginx开机自启动, 增加一行

nginx_enable="yes"

启动nginx

/usr/local/etc/rc.d/nginx start

现在还不能访问,因为应用还没有启动

Supervisor

安装

pip install Supervisor

编辑/etc/rc.conf, 开启Supervisor开机自启动, 增加一行

supervisord_enable="yes"

不知道为什么此方法不生效,所以使用另一种方法开机启动

编辑/etc/rc.local,没有就新建一个, 添加

/usr/local/bin/supervisord

保存并退出。最后修改rc.local权限

sudo chmod +x /etc/rc.local

开机自启动设置完毕。

配置/usr/local/etc/supervisord.conf

[unix_http_server]
file=/var/run/supervisor/supervisor.sock
chmod=0700

[supervisord]
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisor/supervisord.pid
childlogdir=/var/log/supervisor

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock

[program:flask_eu]
command=/usr/local/bin/gunicorn -w 2 -b 127.0.0.1:8005 app:app
directory=/home/freebsd/ERP
user=freebsd
autostart=true
autorestart=true
stdout_logfile=NONE
stderr_logfile=NONE

启动supervisord

/usr/local/bin/supervisord

网站已经可以访问了,应用意外退出或者服务器重启,服务会自动重启。

参考1http://www.michielovertoom.com/freebsd/flask-gunicorn-nginx-supervisord/,

参考2https://www.cnblogs.com/sundahua/p/9149692.html

参考1关于Supervisor的用法和配置,在树莓派系统不适用,就参考了下篇


 上一篇
pip配置国内源 pip配置国内源
Linux平台 在~/.pip/pip.conf创建一个 pip.conf 文件 写入以下内容: [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install
2019-10-12
下一篇 
Sublime Sublime
解决 Sublime 的 package_control 被墙主要是https://packagecontrol.io 这个被墙了,下载不下来导致的错误,把下载链接改为国内的. 打开 Preferences > Package S
2019-08-26
  目录