ubuntu phpstudy配置flask开发环境(phpstudy(lnmp)+flask+gunicorn+supervisor)

服务器环境:
ubuntu 16.04
python 2.7
本文公网地址用 123.123.123.123 代替

1.安装phpstudy

参考phpstudy官网给出的安装方法

http://lamp.phpstudy.net/

我选择的是php5.5+nginx+mysql(其实没必要安装php,但是用这种一键安装包基本都是默认要求装php的)
安装完在地址栏输入:123.123.123.123

使用phpstudy是因为有带mysql,phpadmin,pure-ftpd,一键安装起来比较方便,而且在windows的机器上也是使用这个,比较熟悉一点

这里写图片描述
安装成功

2.安装pip和virtualenv

参考之前的另外一篇文章

http://blog.csdn.net/qq_28719743/article/details/79000307


3.安装gunicorn和flask

  • 安装gunicorn
apt-get install gunicorn

这里写图片描述

  • 创建虚拟环境
virtualenv venv # 创建名为venv的虚拟环境
cd venv # 进入这个文件夹
source bin/activate # 激活虚拟环境

这里写图片描述
注意到命令提示符变了,有个(venv)前缀,表示当前环境是一个名为venv的Python环境。

virtualenv可以创建一个独立的Python运行环境,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境

  • 安装flask
 pip install flask

这里写图片描述

小计:我们向服务器发出一个请求,nginx把请求转发给gunicorn,gunicorn找到Python对应的函数。所以我们现在就要把这几个串起来

4.

  • 一个简单的 web 服务
vim main.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'hello world'

if __name__ == '__main__':
    app.run()
  • 创建Nginx的I配置文件
vim /phpstudy/server/nginx/conf/flask.conf

写入配置

server {
  listen  8080; # 我外网使用8080端口,这个可以自己制定
  server_name 123.123.123.123;  # 服务器ip地址,要是有绑定了域名的话,也可以使用域名
  location / {
                proxy_pass http://127.0.0.1:9090; # 转到内网9090端口
                proxy_redirect     off;
                proxy_set_header   Host                 $http_host;
                proxy_set_header   X-Real-IP            $remote_addr;
                proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;
                proxy_set_header   X-Forwarded-Proto    $scheme;
        }
      }
  • 将flask.conf配置文件导入Nginx主配置文件中(也可以直接将文件放着vhosts文件夹里面,默认包含了vhosts里的conf文件)
vim /phpstudy/server/nginx/conf/nginx.conf

这里写图片描述

phpstudy restart # 重启一下

nginx把发来的请求转发给内网9090端口,现在让gunicorn监听9090端口

gunicorn -b 127.0.0.1:9090 main:app

这里写图片描述

访问 123.123.123.123:8080
这里写图片描述

成功了
当然,也不能gunicorn一直在前台这样运行,所以我们引入 supervisor

  • 安装设置supervisor
deactivate # 退出虚拟环境

这里写图片描述

apt-get install supervisor # 安装supervisor

有文章说通过 apt-get install supervisor这种方式安装后,自动设置为开机启动;通过 pip install supervisor 进行安装需要手动启动,然后设置为开机启动。我没尝试过,为了避免麻烦,直接apt-get了

updatedb # 更新一下数据
locate supervisord.conf

这里写图片描述
我的supervisord.conf在 /etc/supervisor目录下,大部分教程安装后都是在/ect下,我也不明白为什么,但是这个目录可不能弄错了,最好自己确认一下位置
这里写图片描述
主配置文件显示,包含了/etc/supervisor/conf.d/目录下所有conf后缀的文件
我们也创建一个flask配置文件

vim /etc/supervisor/conf.d/flask.conf

写入配置

[program:myweb] # 进程名称,可随便设置
directory = /root/venv ; 程序的启动目录
command = gunicorn -b 127.0.0.1:9090 main:app  ; 启动命令,可以看出与手动在命令行启动的命令是一样的
autostart = true     ; 在 supervisord 启动的时候也自动启动
startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true   ; 程序异常退出后自动重启
startretries = 3     ; 启动失败自动重试次数,默认是 3
user = root          ; 用哪个用户启动
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20     ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /root/venv/logs/flask.log
environment=PYTHONPATH=$PYTHONPATH:/root/venv/lib/python2.7/site-packages ; 添加需要的环境变量
mkdir ~/venv/logs # 创建日志文件目录
service supervisor restart # 重启supervisor服务

完成

tail /var/log/supervisor/supervisord.log # 查看supervisord.log看看运行情况

这里写图片描述

不明白Server ‘unix_http_server’ running without any HTTP authentication checking这句话是什么意思
但是程序还是运行起来了
这里写图片描述

注:为了区别,main.py文件被我改成hello了

猜你喜欢

转载自blog.csdn.net/qq_28719743/article/details/79433084
今日推荐