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。
————————————————
版权声明:本文为CSDN博主「lwgkzl」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lwgkzl/article/details/81316659

你可能感兴趣的:(Python web 部署(完整版)(pycharm+flask + nginx + gunicorn +supervisor ))