Python web 部署(完整版)(pycharm+flask + nginx + gunicorn +supervisor )

1.总览

pycharm:python编辑器,社区版免费使用

a.flask: 一个轻量级的python做网站的框架,用来做网站

b.nginx: 一个反向代理服务器,用来连接本地与互联网

c.gunicorn:容器,容纳发布在云端的网站

d.supervisor:进程管理工具,管理gunicorn进程

我们要做的,是在服务器上搭建一个网站,在外界通过服务器ip可以访问这个网站。

2.flask的应用

可以通过pip安装,十分简单。如果没有pip,通过源码安装也可。

pip install flask

然后新建一个python项目,新建文件views.py,写一个hello wrold的程序:

from flask import Flask
app = Flask(__name__)

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

if __name__ == '__main__':
    app.debug = True
    app.run()

然后运行,在编辑器下方出现

 

点击这个网址,或者直接在浏览器中输入127.0.0.1都可以访问这个网站,界面上单独显示一个hello world。这就是flask的一个网站了。

然后将这个项目移植到你的服务器中。注意,在linux环境中运行这个程序现在是无法通过本地浏览器来访问的。

3.使用gunicorn 

之前这个hello world程序是用的flask自带的调试服务器,性能并不理想,所以我们使用gunicorn。

同样可以用pip安装,如果不行,可以下载源码包安装。

pip install gunicorn

安装好gunicorn后,可以用gunicorn来启动views.py这个文件了。也就是启动一个网站。运行以下命令

gunicorn -w 4 -b 0.0.0.0:8000 views:app

启动了8000端口,运行views.py文件中的网站。但是现在依旧不能在本地输入127.0.0.1或者输入服务器ip来访问这个网站要做到这一点,需要使用nginx.

还有一点需要注意,运行完之后注意结束这个进程,一般crtl+c就可以结束。如果下次运行,出现端口被占用的情况,需要使用命令:

ps -aux | grep gunicorn

把这些进程kill就行了,pid是第二列。 

4.使用nginx实现本地访问服务器端发布的网站

首先还是安装,我是通过源码安装的,为保持路径一致,建议读者参照这篇博客,也根据源码安装:

https://blog.csdn.net/lwgkzl/article/details/81295577

安装成功之后,需要更改配置文件,这已经在上面这篇博客中有介绍,此处不再重复,如果你不懂配置中location这个参数的意思,请参照这篇博客:https://blog.csdn.net/lwgkzl/article/details/81278985

安装配置好nginx之后,通过命令启动nginx就可以在本地浏览器上输入服务器ip对服务器中发布的网站进行访问了。注意服务器端的gunicorn需要已经运行了views:app。

nginx基本命令:

/usr/local/webserver/nginx/sbin/nginx                      # 启动nginx
/usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen            # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx

5.supervisor 使用

其实supervisor 不是必需品,如果你不嫌麻烦,每次都可以通过gunicorn来启动,并且kill进程来关闭的话,supervisor其实是没多大必要的。不过装了还是方便许多。

首先还是安装:可以通过pip安装,也可以通过源码安装

pip install supervisor

装完了之后,在views.py同级的目录下:运行

echo_supervisord_conf > supervisor.conf   # 生成 supervisor 默认配置文件
vim supervisor.conf                       # 修改 supervisor 配置文件,添加 gunicorn 进程管理

如果您是通过源码安装的,注意不能直接使用echo_supervisord_conf这个命令,需要找到他的路径,如/root/kzl/bin/echo... > ...

因为通过源码安装这个命令不是全局可用的,如果你想设置成全局可用的,不妨参考这篇文章:

https://blog.csdn.net/lwgkzl/article/details/81058961

之后配置这个supervisor.conf文件。在文件底部添加:

[program:myapp]
command=/the/path/to/gunicorn -w 4 -b 0.0.0.0:8000 views:app    ; supervisor启动命令
directory=/the/path/to/project/                                  ; 项目的文件夹路径
startsecs=0                                                                             ; 启动时间
stopwaitsecs=0                                                                          ; 终止等待时间
autostart=false                                                                         ; 是否自动启动
autorestart=false                                                                       ; 是否自动重启
stdout_logfile=/the/path/to/log/gunicorn.log                           ; log 日志
stderr_logfile=/the/path/to/log/gunicorn.err  

注意路径的修改,另外log文件夹需要自己创建。找一个自己觉得合适的目录:

mkdir log

supercisor基本命令:

supervisord -c supervisor.conf                             通过配置文件启动supervisor
supervisorctl -c supervisor.conf status                    察看supervisor的状态
supervisorctl -c supervisor.conf reload                    重新载入 配置文件
supervisorctl -c supervisor.conf start [all]|[appname]     启动指定/所有 supervisor管理的程序进程
supervisorctl -c supervisor.conf stop [all]|[appname]      关闭指定/所有 supervisor管理的程序进程

以上就配置成功了一个简单的python web的hello wrold程序。可以在本地浏览器输入服务器ip访问hellowrold。

你可能感兴趣的:(python,配置环境,flask)