flask centos部署 centos8官网下载教程
本篇文章给大家谈谈flask centos部署,以及centos8官网下载教程对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
Python3+Gunicorn+Nginx 部署Flask项目
前言:之前在本地测试项目的过程中一直使用python app.py的方式来启动项目,这种方式在本地测试的话还可以,但是在生产环境的话就不能使用这种方式。
原因:
1.可能会出现无响应情况
2.无法支持高并发和多线程
3.无法合理利用服务器资源
生产环境: Centos7、Python3
需要模块: Gunicon、Nginx、Flask
一、安装Gunicorn
Gunicorn是一个高效的Web服务器,地位相当于Java中的Tomcat。简单来说gunicorn封装了HTTP的底层实现,我们通过gunicorn启动服务,用户请求与服务相应都经过gunicorn传输。
1.创建虚拟环境
项目上传到服务器指定目录下,然后创建python3的虚拟环境,激活并进去虚拟环境,在虚拟环境下可以看到命令前有虚拟环境的名称。(之前在使用Gunicorn模块的过程中,没有使用虚拟环境,导致我启动项目有一直提示没有找到gunicorn这个命令,可能是我在使用python全局环境的过程中,有某些模块影响到这个gunicorn模块,后面在使用虚拟环境就没有出现这个问题。)
2.安装项目所需的模块
3.安装gunicorn
二、项目配置启动
1.创建一个简易的web程序
2.启动服务
4--启动4个进程来分配服务
0.0.0.0--允许任意主机访问
5000--启动端口(与nginx转发的端口一致)
app:目标文件
app:指定模块
补充部分: gunicorn和nginx关系
gunicorn可以单独提供服务,但生产环境一般不这样做。首先静态资源(jscssimg)会占用不少的请求资源,而对于 gunicorn来讲它本身更应该关注实际业务的请求与处理而不应该把资源浪费在静态资源请求上;此外,单独运行 gunicorn是没有办法起多个进程多个端口来负载均衡的。
nginx的作用就是弥补以上问题,首先作为前端服务器它可以处理一切静态文件请求,此时 gunicorn作为后端服务器,nginx将会把动态请求转发给后端服务器,因此我们可以起多个 gunicorn进程,然后让 nginx作均衡负载转发请求给多个 gunicorn进程从而提升服务器处理效率与处理能力。最后,nginx还可以配置很多安全相关、认证相关等很多处理,可以让你的网站更专注业务的编写,把一些转发规则等其它业务无关的事情交给 nginx做。
参考链接:
nginx+uwsgi 和nginx+gunicorn区别、如何部署
大家是采用的何种部署方式?
第一种,高并发稳定一点
我在很多的博客中都看过有关 Flask应用的部署,也有很多博主在开博后都记录了部署的教程,因为其中的坑可以说不少。一开始我在网上看到相比较与 Ubuntu, CentOS因为更新少作为服务器的操作系统会更加稳定。所以在第一次购买云服务器时,我选择了 CentOS,后来由于 CentOS不同发行版的 Nginx缘故,我又换成了 Ubuntu的镜像
首先呢,我们先来了解下关于Web服务器与Web应用还有WSGI之间的联系
WSGI(Web Server Gateway Interface),翻译为 Python web服务器网关接口,即 Python的 Web应用程序(如 Flask)和 Web服务器(如 Nginx)之间的一种通信协议。也就是说,如果让你的 Web应用在任何服务器上运行,就必须遵循这个协议。
那么实现 WSGI协议的web服务器有哪些呢?就比如 uWSGI与 gunicorn。两者都可以作为Web服务器。可能你在许多地方看到的都是采用 Nginx+ uWSGI(或 gunicorn)的部署方式。实际上,直接通过 uWSGI或 gunicorn直接部署也是可以让外网访问的,那你可能会说,那要 Nginx何用?别急,那么接来下介绍另一个Web服务器—— Nginx
Nginx作为一个高性能Web服务器,具有负载均衡、拦截静态请求、高并发...等等许多功能,你可能要问了,这些功能和使用 Nginx+ WSGI容器的部署方式有什么关系?
首先是负载均衡,如果你了解过 OSI模型的话,其实负载均衡器就是该模型中4~7层交换机中的一种,它的作用是能够仅通过一个前端唯一的URL访问分发到后台的多个服务器,这对于并发量非常大的企业级Web站点非常有效。在实际应用中我们通常会让 Nginx监听(绑定) 80端口,通过多域名或者多个location分发到不同的后端应用。
其次是拦截静态请求,简单来说, Nginx会拦截到静态请求(静态文件,如图片),并交给自己处理。而动态请求内容将会通过 WSGI容器交给 Web应用处理;
Nginx还有其他很多的功能,这里便不一一介绍。那么前面说了,直接通过 uWSGI或 gunicorn也可以让外网访问到的,但是鉴于 Nginx具有高性能、高并发、静态文件缓存、及以上两点、甚至还可以做到限流与访问控制,所以选择 Nginx是很有必要的;
这里可以说明,如果你选择的架构是:Nginx+ WSGI容器+ web应用,WSGI容器相当于一个中间件;如果选择的架构是uWSGI+ web应用,WSGI容器则为一个web服务器
普遍的部署方式都是通过让 Nginx绑定 80端口,并接受客户端的请求将动态内容的请求反向代理给运行在本地端口的 uWSGI或者 Gunicorn,所以既可以通过 Nginx+ uWSGI也可以通过 Nginx+ Gunicorn来部署 Flask应用,这篇教程中都将一一介绍这两种方法
当然采用不同的 WSGI容器, Nginx中的配置也会有所不同
我们现在虚拟环境下安装好 uWSGI:
安装完成之后我们在项目的目录下(即你实际创建的Flask项目目录,在本文所指的项目目录都假设为/www/demo)创建以.ini为扩展名的配置文件。在设置与 Nginx交互的时候有两种方式:
第一种是通过配置网络地址,第二种是通过本地的.socket文件进行通信。需要注意的是,不同的交互方式下, Nginx中的配置也会有所不同
如果采用的是第一种网络地址的方式,则将之前创建 uwsgi.ini配置文件添加如下的配置内容:
这里的 wsgi-file参数所指的 run.py其实是启动文件,你也可以使用 manage.py。不过我通常习惯创建一个这样的文件,可以直接运行该文件来启动项目:
保存好配置文件后,就可以通过如下的命令来启动应用了:
如果你采用的是第二种本地 socket文件的方式,则添加如下的配置内容:
可以看到,其实与网络地址的配置方式只有 socket参数的配置不同,在这里填写好路径名和文件名并启动 uWSGI后,将会自动在改目录下生成 nginx_uwsgi.socket文件,这个文件就是用来与 Nginx交互的。
首先我们来通过 apt安装 Nginx:
安装完成之后,我们 cd到/etc/nginx/的目录下(可能由于不同系统导致不同的Nginx发行版缘故,目录有所差别,在此只针对 Ubuntu中的发行版的Nginx),可以看到 Nginx的所有配置文件。
其中 nginx.conf文件为主配置文件,可以用来修改其全局配置; sites-available存放你的配置文件,但是在这里添加配置是不会应用到 Nginx的配置当中,需要软连接到同目录下的 sites-enabled当中。但是在我实际操作的过程中中,当我在 sites-available修改好配置文件后,会自动更新到 sites-enabled。如果没有的话,则需要像上述的操作那样,将修改好的配置文件软链接到 sites-enabled当中
在上边说到,配置 uWSGI有两种与 Nginx交互的方式,那么选择不同的方式的话在 Nginx的配置也会有所不同:
第一种:网络配置方式:
这里的 proxy_set_header设置的三个参数的作用都是能够直接获得到客户端的 IP,如果你感兴趣可以参考: Nginx中proxy_set_header理解
用 include uwsgi_params导入 uWSGI所引用的参数,通过 uwsgi_pass反向代理给在 localhost:8001运行的 uWSGI:
在每次完Nginx配置文件内容后,需要通过如下的命令来重启Nginx:
第二种:socket文件方式:
与上边的配置内容大体相同,只是在配置 uwsgi_pass不是反向代理给网络地址,而是通过 socket文件进行交互,我们只需要指定之前设置的路径和文件名即可:
首先先在虚拟环境下安装 Gunicorn:
安装完成后,我们来创建以.py结尾的配置文件,这里我参考了Jiyuankai的 GitHub关于 Gunicorn的配置文件内容:
需要注意的是要在配置文件的同层目录下创建 log文件,否则运行 gunicorn将报错。添加完配置内容并保存为 gconfig.py文件后,我们就也可以通过 gunicorn来运行 Flask应用了:
和 uWSGI的任意一种配置方法类似,只是在 location中的配置有所不同:
通过Gunicorn的Nginx配置中,我们只需要通过 proxy_pass参数反向代理给运行在 上的Gunicorn
如果你采取如上的任意一种部署方式,在Nginx与uWSGI或Gunicorn同时运行,并且配置无误的状态下,那么你现在应该是可以通过你的公网 ip或者域名访问到你的网站了。
但是还有一个问题,到目前为止,uWSGI和gunicorn都是直接通过命令行运行,并不能够在后台运行,也是当我们关闭了xShell(或者你使用的是Putty及其他SSH连接的软件),将无法再访问到你的应用。所以我们需要让uWSGI或gunicorn在后台运行,也就是所谓的daemon(守护进程)。
如果你熟悉Linux命令,你应该知道在Linux中后台运行可以通过 nohup命令,例如我们要让gunicorn在后台运行,我们只需要运行 nohup命令:
运行后你可以通过 ps-e| grep gunicorn指令来查看到当前gunicorn的运行状态:
如果你选择的是uWSGI,同样也可以通过 nohup命令来实现守护进程:
这样你就可以关闭连接服务器的终端,还能通过你的浏览器访问到你的 Flask应用了!
但是 nohup运行的后台程序并不能够可靠的在后台运行,我们最好让我们的后台程序能够监控进程状态,还能在意外结束时自动重启,这就可以使用一个使用Python开发的进程管理程序supervisor。
参考:
首先我们通过 apt来安装supervisor:
安装完成后,我们在/etc/supervisor/conf.d/目录下创建我们控制进程的配置文件,并以.conf结尾,这样将会自动应用到主配置文件当中,创建后添加如下的配置内容:
在上面的配置文件中, [program:demo]设置了进程名,这与之后操作进程的状态名称有关,为 demo; command为进程运行的命令,必须使用绝对路径,并且使用虚拟环境下的 gunicorn命令; user指定了运行进程的用户,这里设置为 root
保存配置文件之后,我们需要通过命令来更新配置文件:
命令行将显示: demo: added process group,然后我们来启动这个 demo进程:
当然你也直接在命令行输入 supervisorctl进入supevisor的客户端,查看到当前的进程状态:
通过 stop命令便可以方便的停止该进程:
django怎么激活虚拟环境(2023年最新解答)
导读:本篇文章首席CTO笔记来给大家介绍有关django怎么激活虚拟环境的相关内容,希望对大家有所帮助,一起来看看吧。
python命令行创建虚拟环境
命令行创建虚拟环境virtualenv
1、首先创建虚拟环境:virtualenvdjango1.11
2、cd到django1.11/Scripts,运行activate进入虚拟环境
pipenv
如果需要多个python版本开发环境时,可以使用pipenv来创建不同python版本环境
如何在centos上部署django2.7
依次执行以下命令:
yum?install?-y?update??#?更新内置程序
yum?groupinstall?-y?development??#?安装所需的development?tools
yum?install?-y?zlib-dev?openssl-devel?sqlite-devel?bzip2-devel??#?安装附加包??
yum?install?xz-libs??#?安装XZ解压库(可选)
wget???#?下载源码包?
#?解压源码包,分为两步??
xz?-d?Python-2.7.6.tar.xz??
tar?-xvf?Python-2.7.6.tar??
#?编译与安装,先进入源码目录??
cd?Python-2.7.6??
./configure?--prefix=/usr/local??
make??
make?altinstall??
#?配置virtualenv虚拟环境??
wget?--no-check-certificate???
tar?-xvf?setuptools-1.4.2.tar.gz??
cd?setuptools-1.4.2??
python2.7?setup.py?install??
curl??|?python2.7?-??
pip?install?virtualenv??
#?创建项目所需的虚拟环境venv??
virtualenv?venv?--python=`which?python2.7`
#?修改.bashrc,在该系统用户登录之后自动激活虚拟环境。
#?在.bashrc下增加以下命令????
source?~/venv/bin/activate
Windows平台上怎样进行Django开发
sudoapt-getinstallpython-pip//pip用来安装django。如果是centos,使用yuminstall
sudoapt-getinstallpython-virtualenv//虚拟环境:跟普通环境基本一样,仅仅是一些python相关的命令不一样(python相关的命令做了备份,不同的python虚拟环境不互相影响)
mkdir~/django
cd~/django
virtualenvvenv//在~/django目录下,创建一个叫做“venv”的虚拟环境
sourcevenv/bin/activate//开启虚拟环境
pipinstalldjango//下载安装django
mkdir~/work//创建一个工作目录,这个工作目录和虚拟环境的
ubuntu下创建python环境
Ubuntu中使用python3中的venv创建虚拟环境
以前不知道Python3中内置了venv模块,一直用的就是virtualenv模块,venv相比virtualenv好用不少,可以替代virtualenv
一、安装venv包:
pre$sudoaptinstallpython3-venv/pre
二、创建虚拟环境
首先创建一个项目文件夹,虚拟环境将会安装在项目文件夹下,我这里使用的项目文件夹是myproject,进入mypeoject文件夹,执行命令:
pre$python3-mvenvvenv/pre
这时虚拟环境就创建好了,默认是Python3的环境
三、激活虚拟环境
在项目文件夹下,执行activate文件激活虚拟环境
presourcevenv/bin/activate/pre
四、创建项目
可以看到项目文件夹下除了venv的虚拟环境文件,没有项目文件,可以使用pip工具安装任何你需要的框架,比如flask、django
五、退出虚拟环境
predeactivate/pre
Django快速开发可定制的办公系统实战(2):搭建开发环境
项目需要用到的环境有:pycharm、mysql5.6、python3.6,在开始项目之前请完成以上基础环境的安装和配置。
使用virtualenv工具来创建python虚拟开发环境,每一个项目使用的都是独立的python开发环境,可解决不同项目对环境的依赖,和版本之间的问题。
安装virtualenv:
完成安装后就可以使用virstualenv来创建激活虚拟环境了,接下安装一个扩展工具virtualenvwrapper,该工具可以更便捷管理我们的虚拟环境
安装virtualenvwrapper:
创建虚拟环境
?开发工具使用的是pycharm,打开pycharm现在File→NewProject在弹出窗口左侧选择Django,Location选项下设置项目存放路径
?展开ProjectInterpreter:选择Exisitinginterperter,点后面的设置按钮,选择AddLocal
在新的弹窗左侧,选择VirtualenvEnvironment,右侧Interpreter中指定python虚拟环境路径,虚拟环境默认存放在用户更目录下的Envs目录下.
我选择的路径:C:\Users\RobbieHan\Envs\sandbox-env\Scripts\python.exe
确认完成项目的创建后,就可以在python虚拟环境下进项项目的开发了。
测试项目运行正常,可以访问django欢迎页面:
安装部署交流:83792608(QQ群)
更多欢迎关注:sandbox.im
[django]在windows下搭建Django的虚拟环境
我们在windows的环境下去开发一个网站的时候,Python中的Django是一个比较强大的框架。然后我们既想让他拥有独立的开发环境,又不影响全局的Python环境,还想防止系统中出现包管理混乱版本冲突。这个时候就要通过创建一个虚拟环境来实现。
首先你的电脑中必须有Python的解释器,在终端行可以安装一个虚拟环境所依赖的库。
安装好之后我们就可以去创建一个新的虚拟环境了:
新建好之后。我么会在终端中看到直接进入到虚拟环境中了:
在图片中我们可以看到已经进入到testvir2的虚拟环境中。
此时我们的项目存储的位置在C:\Users\gongyan\Envs\下就可看到
退出我们的虚拟环境的命令为:
使用workon来查看我们当前有几个虚拟环境。
想要进入那个虚拟环境的话就可以通过workon的命令来实现。
以上就是所有的虚拟环境的玩法。
结语:以上就是首席CTO笔记为大家整理的关于django怎么激活虚拟环境的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~