如何在CentOS 7上使用uWSGI和Nginx来运行Django应用程序
@(tigerfive)前言
先决条件和目标
安装和配置VirtualEnv和VirtualEnvWrapper
创建Django项目
设置uWSGI应用程序服务器
安装并配置Nginx为反向代理
结论
原文我发了另一篇文章原文链接
如何在CentOS 7上使用uWSGI和Nginx来运行Django应用程序
介绍
Django是一个功能强大的Web框架,可以帮助您将Python应用程序或网站变为现实。Django包含一个简化的开发服务器,用于在本地测试您的代码,但对于与生产相关的任何事情,都需要更安全,更强大的Web服务器。
在本指南中,我们将演示如何在CentOS 7上安装和配置一些组件,以支持和服务Django应用程序。我们将配置uWSGI应用程序容器服务器与我们的接口,Nginx将代理转换为uWSGI,使我们能够访问其安全性和性能特性来为我们的应用程序提供服务。
先决条件和目标
为了完成这个指南,你应该有一个新的CentOS 7服务器实例,配置一个非root用户,并配置了sudo权限。您可以通过运行我们的初始服务器设置指南了解如何进行设置。
我们将在两个不同的虚拟环境中安装Django,这将允许您的项目和他们的需求分开处理。我们将创建两个示例项目,以便我们可以在多项目环境中运行这些步骤。
一旦我们有了我们的应用程序,我们将安装和配置uWSGI应用程序服务器。这将作为我们应用程序的接口,它将使用HTTP将客户端请求转换为我们的应用程序可以处理的Python调用。然后,我们将在uWSGI之前设置Nginx,以利用其高性能的连接处理机制和易于实现的安全功能。
我们开始吧。
安装和配置VirtualEnv和VirtualEnvWrapper
我们将在他们自己的虚拟环境中安装我们的Django项目来隔离每个项目的需求。为此,我们将安装可以创建Python虚拟环境的virtualenv,以及virtualenvwrapper,这会为virtualenv工作流程增加一些可用性改进。
我们将使用pip(Python包管理器)来安装这两个组件。要获得pip,我们首先需要启用EPEL库,我们可以通过键入以下命令轻松完成:
#sudo yum install epel-release
一旦启用EPEL,我们可以通过输入以下命令来安装pip:
#sudo yum install python-pip
现在你已经安装了pip,我们可以通过输入以下命令来全局安装virtualenv和virtualenvwrapper:
#sudo pip install virtualenv virtualenvwrapper
安装这些组件后,我们现在可以使用我们的shell来配置它所需要的与virtualenvwrapper脚本一起工作的信息。我们的虚拟环境将全部放置在我们的主文件夹Env中的一个目录中,以便于访问。这是通过一个名为WORKON_HOME的环境变量来配置的。我们可以将其添加到我们的shell初始化脚本中,并可以获取虚拟环境包装脚本。
要将相应的行添加到您的shell初始化脚本中,您需要运行以下命令:
echo "export WORKON_HOME=~/Env" >> ~/.bashrc echo "source /usr/bin/virtualenvwrapper.sh" >> ~/.bashrc
现在,请输入您的shell初始化脚本,以便您可以在当前会话中使用此功能:
source ~/.bashrc
你现在应该在你的home文件夹中有一个名为Env的目录,它将保存虚拟环境信息。
创建Django项目
现在我们有了我们的虚拟环境工具,我们将创建两个虚拟环境,分别安装Django,并启动两个项目。
创建第一个项目
我们可以通过使用virtualenvwrapper脚本提供给我们的一些命令轻松地创建一个虚拟环境、
通过键入以下内容创建您的第一个虚拟环境,其中包含您的第一个站点或项目
mkvirtualenv firstsite
这将创建一个虚拟环境,在其中安装Python和PIP,并激活环境。你的提示会改变你的新虚拟环境。它看起来像这样:(firstsite)user @ hostname:〜$。圆括号中的值是你的虚拟环境的名字。 现在,通过管道安装的任何软件都可以安装到虚拟环境中,而不是安装在全局系统上。这使我们能够在每个项目的基础上分离我们的软件包。
我们的第一步是安装Django本身,因为我们在我们的虚拟环境中安装了这个工具,所以我们可以在没有sudo的情况下使用pip。
pip install django
安装Django后,我们可以通过键入以下命令创建我们的第一个示例项目:
cd ~ django-admin.py startproject firstsite
页:
[1]