在CentOS 7上通过Apache和mod_wsgi运行Django应用

CentOS下Apache+Python+Django+Wsgi环境搭建 CentOs下Apache+Python+Django+mod_wsgi环境搭建     前言:由于对linux系统的不了解,装软件什么的总是喜欢用yum命令,结果这次在搭建环境下吃了大亏。网上文章大多是使用mod_python来搭建的,这个只支持到python2.5,现在需要使用python2.7,只好选择mod_wsgi,貌似mod_wsgi的处理效率还要更高一些。   1. 阅读详情

提供:ZStack云计算

前言

Django是一款强大的Web框架,可用于快速搭建起一套Python应用。Django包含一套简单的开发服务器用于进行本地测试,不过线上生产环境一般都使用更加安全强大的Web服务器。

本文将示范如何在CentOS 7上的一个Python虚拟环境中安装配置Django。我们在前端配置Apache用于处理客户端请求并将需要应用逻辑反馈的请求发送给Django应用,这将通过mod_wsgi模块进行,该模块可通过WSGI接口规范与Django进行通讯。

准备工作

首先你需要一台CentOS 7服务器,上面配置过具有sudo权限的非root用户(配置方法可参见这个教程)

我们将在Python虚拟环境中安装Django,这样有助于分别处理不同项目的依赖项。

应用启动之后,我们将配置Apache的接口以对接Django应用,这将通过mod_wsgi模块完成,该模块可将HTTP请求转换为WSGI标准格式。有关WSGI的更多信息可参考这篇文章。

从CentOS和EPEL软件仓库安装软件包

首先我们将下载如下软件包:Apache服务器,Apache的mod_wsgi模块,以及Python软件包管理器pip。

要获取pip,需要先启用EPEL软件仓库:

sudo yum install epel-release

启用EPEL后,可以输入如下命令安装上述所需软件包:

sudo yum install python-pip httpd mod_wsgi

配置Python虚拟环境

我们将创建一个Python虚拟环境以将该Django项目与其他系统工具和其他Python项目隔离开。

首先用pip安装virtualenv:

sudo pip install virtualenv

安装完毕后,创建一个项目目录:

mkdir ~/myproject
cd ~/myproject

在该目录内创建一个Python虚拟环境:

virtualenv myprojectenv

该命令将会在myproject目录下创建一个myprojectenv目录,其中安装了一个本地的Python和pip。我们将使用它们来安装配置本项目的Python环境。

在安装依赖项之前,需要先激活该虚拟环境:

source myprojectenv/bin/activate

激活之后,命令行提示符应该能够看出来,比如这样:(myprojectenv)user@host:~/myproject$。

虚拟环境激活后,使用pip安装Django:

pip install django

创建一个新的Django项目

现在可以创建Django项目文件了。

创建Django项目

我们需要让Django将文件安装到我们刚才创建的项目目录下。代码文件将在一个子目录下创建,管理脚本则将在项目根目录下创建。注意命令结尾处用于指定安装位置的.:

django-admin.py startproject myproject .

调整项目设置

新建项目后要做的第一件事情就是调整设置。用编辑器打开配置文件:

nano myproject/settings.py

简便起见,我们将使用默认的SQLite数据库,所以需要更改的配置不多,主要是静态文件的目录,即Django放置静态文件以供Web服务器使用的目录。

在配置文件末尾添加STATIC_ROOT条目,内容中使用一些Python语句定义静态文件目录“static”:

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

保存退出。

完成项目初始配置

现在,使用管理脚本将初始数据库结构迁移到SQLite数据库:

cd ~/myproject
./manage.py makemigrations
./manage.py migrate

创建管理员用户:

./manage.py createsuperuser

设置一个用户名、Email地址和密码。

输入如下命令以将所有静态文件收集到指定目录:

./manage.py collectstatic

这个操作需要进行确认。静态文件将被放置在项目目录下的static目录中。

最后,输入如下命令启动Django开发服务器,进行测试:

./manage.py runserver 0.0.0.0:8000

在浏览器中访问服务器IP地址或域名的:8000端口:

http://server_domain_or_IP:8000

应该能看到Django的默认主页:

Django default index

在URL后加上/admin进入管理员界面,输入刚才设置的用户名密码:

Django admin login

认证之后,应该能看到如下界面:

Django admin interface

确认没有问题后,回到服务器终端窗口按下CTRL-C快捷键以终止服务。

Django部分现在已经配置完毕,可以输入如下命令关闭虚拟环境:

deactivate

配置Apache

现在开始配置前端的Apache,其mod_wsgi模块将把来自客户端的HTTP请求翻译为Django应用可读的WSGI格式。之前安装模块的时候,该模块应该已经自动启用。

我们需要新建一个定义WSGI通道的配置文件。在/etc/httpd/conf.d目录下以sudo权限生成一个django.conf文件:

sudo nano /etc/httpd/conf.d/django.conf

首先是静态文件的设置。创建一个别名,将访问/static的请求都映射到项目目录下的“static”目录:

Alias /static /home/user/myproject/static
<Directory /home/user/myproject/static>
    Require all granted
</Directory>

其次,设置wsgi.py文件的权限,使其能够访问项目目录下存放Django代码的目录。这需要通过另一个directory条目完成:

Alias /static /home/user/myproject/static
<Directory /home/user/myproject/static>
    Require all granted
</Directory>

<Directory /home/user/myproject/myproject>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

然后就该创建实际处理WSGI通道的代码了。按照官方的建议,我们使用守护进程模式运行WSGI进程。这部分定义将在WSGIDaemonProcess条目下实现。

首先,该条目需要指定一个进程名称,我们在这里还是沿用myproject。然后,我们要告诉Apache在哪里能够找到所有的Python依赖。由于使用了虚拟环境,我们需要设置两个路径:第一个是存放所有项目文件的项目根目录,第二个是虚拟环境目录下的lib/pythonx.x/site-packages(其中的X代表Python版本号)。

之后,我们需要指定进程组,进程组的名称应该和我们在WSGIDaemonProcess条目下指定的名称相同(本文使用的是myproject)。最后,我们需要设置一个脚本别名,好让Apache将访问根域名的请求发送给wsgi.py文件:

Alias /static /home/user/myproject/static
<Directory /home/user/myproject/static>
    Require all granted
</Directory>

<Directory /home/user/myproject/myproject>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

WSGIDaemonProcess myproject python-path=/home/user/myproject:/home/user/myproject/myprojectenv/lib/python2.7/site-packages
WSGIProcessGroup myproject
WSGIScriptAlias / /home/user/myproject/myproject/wsgi.py

编辑完毕之后,保存退出。

权限配置

现在,我们需要更改一些权限,好让Apache能够访问到需要的文件。CentOS的默认给每个用户的根目录设置了比较严格的权限,我们将在自己的用户组添加apache用户,这样能够恰到好处的分配权限。

使用如下命令在自己的用户组(“user”)中添加apache用户:

sudo usermod -a -G user apache

将用户根目录的执行权限开放给本用户组:

chmod 710 /home/user

这样,Apache进程就能够访问到我们用户根目录下的内容了。

如果你像本文一样使用SQLite数据库,则还需要开放数据库文件给Apache进程。

首先需要开放用户组对数据库文件的读写权限:

chmod 664 ~/myproject/db.sqlite3

然后,将apache用户组加入到该文件的所有者当中:

sudo chown :apache ~/myproject/db.sqlite3

要能够写入该文件,Apache用户组还需要成为该文件所在目录的所有者:

sudo chown :apache ~/myproject

上述配置完毕后,可以启动Apache了:

sudo systemctl start httpd

现在在浏览器中访问服务器IP(不用指定端口),应该可以看到你的Django网站界面了。

输入如下命令,可以在系统启动时自动打开Apache:

sudo systemctl enable httpd

总结

本文在虚拟环境下配置了一个Django项目,并配置了Apache的mod_wsgi模块用于将HTTP请求转发给Django应用。

使用Django创建项目和应用要比自己从头编写来得更加简便,善用其中的工具链,可以更多专注于自己应用的业务逻辑,实现更高的效率。

本文来源自DigitalOcean Community。英文原文:How To Serve Django Applications with Apache and mod_wsgi on CentOS 7 by Justin Ellingwood

翻译:lazycai

CentOS7.4 部署 Django + Python3 + Apache + Mod_wsgi 详细步骤 一. Python 配置 1.安装 python3.6.5 源及依赖包 # yum install epel-release -y # yum groupinstall &amp;amp;amp;amp;quot;Development tools&amp;amp;amp;amp;quot; -y # yum install zlib-devel bzip2-devel openssl-devel ncurses-devel zx-devel sqlite-devel 阅读详情

相关推荐

Django生产部署必选WSGI服务器:Gunicorn、uWSGI与Mod_WSGI对比指南

WSGI(Web Server Gateway Interface)是Python Web应用与服务器通信的标准协议,其核心价值在于解耦业务逻辑与HTTP基础设施。Django作为遵循WSGI规范的框架,必须通过兼容的WSGI服务器才能接入Nginx/Apache等生产级反向代理,实现并发处理、进程隔离、平滑重启与安全防护。脱离WSGI中间层直接使用runserver将导致单线程阻塞、无资源管控、零安全加固,无法应对真实流量。Gunicorn以简洁可靠见长,天然适配Docker与云原生;uWSGI凭借uws

weixin_33709609的博客 411

在 CentOS 7上使用 Apache 和 mod_wsgi 部署 Django 应用的方法

Django 是一个强大的 Web 框架,可以帮助您快速启动 Python 应用程序或网站。Django 包括一个简化的开发服务器,用于在本地测试代码,但对于任何与生产相关的事情,都需要一个更安全和功能强大的 Web 服务器。在本指南中,我们将演示如何在 CentOS 7 上在 Python 虚拟环境中安装和配置 Django。然后,我们将设置 Apache 在我们的应用程序前面,以便它可以直接处理客户端请求,然后将需要应用程序逻辑的请求传递给 Django 应用程序。我们将使用mod_wsgi。

rubys_的专栏 1993

centos7 使用 apache2.4 + mod_wsgi 部署django项目

使用 apache2.4 + mod_wsgi 部署django项目 一、软件安装 1.安装httpd(apache2.4) yum install httpd yum install httpd-devel # 运行测试,需保证端口不被占用 systemctl start httpd 2.编译安装mod_wsgi (version 4.6.4) 参考连接:https://...

浑蛋LiZL的博客 1789

django项目通过apache(httpd)+mod_wsgi部署

django项目通过apache+mod_wsgi部署。 1、编译mod_wsgi,参考我之前的博客,编译mod_wsgi。 linux下mod_wsgi安装(https://blog.csdn.net/shendygis/article/details/111466878); 2、配置mod_wsgi. httpd 的配置文件在etc/httpd/conf/httpd.conf文件中,可以添加自己的配置文件在conf.d中。 为了方便,我自己为本项目添加了一个配置文件,存放在etc/http

shendygis的专栏 3205

零零信安:暗网分析报告——Part 4 商业黑客组织,“流星街”的原住

暗网,作为互联网的一部分,充满了神秘而又复杂的活动。更重要的是,其背后的主要参与者——商业黑客和各种有组织的犯罪集团,揭示了这是一个怎样的世界。本报告将试图带您了解这些原住民的身份、行为方式、商业逻辑、受害者以及他们构建的独特生态。

miffy_00sec的博客 636

Shopee 虾皮API接口:商品详情采集的实践

随着电商行业的蓬勃发展,数据采集和分析在商业决策中扮演着越来越重要的角色。Shopee作为东南亚领先的电商平台,拥有大量的商品数据。通过Shopee的API接口,我们可以方便地获取商品详情,为数据分析和市场研究提供有力支持。本文将介绍如何使用Shopee API接口采集商品详情,并分享一些实践技巧。提供了丰富的数据接口,包括商品详情、店铺信息、订单数据等。通过API接口,开发者可以轻松地获取Shopee平台上的数据,进行进一步的处理和分析。Shopee API接口:商品详情采集的实践与技巧。

An4480的博客 1889

在CentOS下部署Apache+Django

部署环境:CentOS6,Apache-httpd-2.4,Python-3.8,Django-3.1 一、编译安装httpd-2.4: # tar -zxvf httpd-2.4.17.tar.gz # cd httpd-2.4.17 # ./configure --prefix=/usr/local/apache2.4 --with-included-apr --with-apr=/path/to/apr-httpd --with-apr-util=/path/to/apr-util-httpd/

航道的博客 493

CPU核心、die和package的区别:从硬件小白到高手的进阶指南

本文深入浅出地解析了CPU核心、Die与Package的核心概念与区别,是硬件爱好者从入门到精通的实用指南。文章从硅晶圆制造讲起,阐述了物理核心与逻辑线程(如超线程技术)的工作原理,并详细介绍了封装(Package)的作用与多Die模块化设计。最后,结合实际应用场景,提供了选购、性能解读与优化调优的实用建议。

pz89012345的博客 204

Centos下Django部署到Apache

Centos+Django+Apache部署 版本: python3.6 Centos7.6 Django3.2 Apache2.4 1. 安装python3,默认3.6 yum install python3 python3-devel 2. 若与python2冲突,则删除python2开发人员版 yum erase python-devel 3. 安装Apache yum install httpd httpd-devel 4. 下载mod_wsgi,地址`https://github.com/G

qq_45643228的博客 377

薅“刷宝”羊毛的autojs脚本教程,简单粗暴好用!!!

本教程旨在帮助大家实现用手机或闲置手机来进行“刷宝”平台的收益,能薅多少米就看你的本事了,作者教你的是如何用autojs来进行脚本的挂机教程,掌握了这个思路后,你可以根据自己的实际需要来改进脚本或者撸别的平台:) 适用系统,**android4.0以上,苹果机暂不适用**(大多数android系统手机都是7.0以上,要查看自己手机是android几,见文件夹“视频教程-基础”>1.查看android版本的方法)

rousseaou8的博客 8万+

利用python爬取东方财富网股吧评论并进行情感分析(一)

利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本地的图片直

YMG521000的博客 1万+

Apache局域网部署Django项目

记录Apache在局域网中部署Django的步骤。主要出问题的地方:1.mod-wsgi的安装;2.虚拟环境中的python路径,3.Django的wsgi.py路径问题。

chen mingwei 1590

从零开始:使用COLMAP与OpenMVS构建高精度三维Mesh模型

本文为零基础新手提供了使用COLMAP与OpenMVS构建高精度三维Mesh模型的完整实战指南。详细介绍了从环境配置、数据采集黄金法则,到COLMAP稀疏与稠密重建、OpenMVS网格生成与纹理映射的每一步操作,并分享了关键的避坑技巧与参数调优建议,帮助读者从二维照片中成功重建出属于自己的三维模型。

metal的博客 507

CentOS 7 + Apache + mod_wsgi 部署Django项目

无

zwbill的专栏 609

YOLOv10改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤

本文记录的是。采用深度可分离卷积将标准卷积分解为深度卷积和1×1卷积。同时,引入来,避免非线性层导致的性能下降问题。本文将应用到YOLOv10中,借助其高效的结构和特性,在保持一定精度的前提下,显著降低YOLOv10的计算复杂度和内存占用。

Limiiiing的博客 533

AI上推荐 之 AutoInt模型(Transformer开始玩特征交互)

1. 写在前面 这段时间做优化模型的事情,正好和特征交互有关系,这个也是推荐系统里面一直探索的一个方向,从浅层模型的FM, FFM, HOFM, FwFM到深层模型的DNN, PNN, NFM, AFM, DeepFM, DCN, xDeepFM, FiBiNet等,而这次正好借着这次机会, 多看一些有关于特征交叉方向的模型paper, 把一些新的模型或者较为前沿的思想融入进来。 上一篇的FiBinet模型就是在特征交互上一个非常有意思的探索, 通过SENET动态选择有用的交互特征, 然后再用一个双线性交互

Miracle8070 5726

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

CentOS7.6利用Apache和mod_wsgi部署django项目

一、本机环境 Linux版本:CentOS7.6 python:Python 3.7.2 django:Django2.1.7 apache:Apache/2.4.6 mod_wsgi:mod_wsgi-4.6.5 二、安装相关软件 1. 安装Apache 参考文章:CentOS7.6中安装Apache及Apache常见操作和配置说明 2.安装python ...

渣渣的夏天 951

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Django生产部署:CentOS 7 + Apache + mod_wsgi 实战指南

WSGI 是 Python Web 应用与服务器通信的核心标准,Django 作为主流框架原生支持该协议。理解其原理是实现稳定部署的前提——它定义了应用如何被调用、环境如何传递、响应如何返回。技术价值在于解耦应用逻辑与基础设施,使 Django 可无缝对接 Apache、Nginx 等成熟 Web 服务器。典型应用场景包括政企私有云、金融系统及教育平台等需强合规性与长期维护的 CentOS 7 环境。在这些场景中,Apache + mod_wsgi 组合凭借 SELinux 深度集成、审计日志完备、配置体系

418

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

CentOS7.4部署Django+Python3+Apache+Mod_wsgi

安装环境 Remote: CentOS 7.4 x64 (django.example.com) Python: Python3.6.5 Apache: Apache 2.4.6 Mod_wsgi: 4.6.4 Django: Django 2.0.4 一. 系统环境配置 1.关闭iptables和selinux # su - root # systemctl sto...

wuleixxh的专栏 412

Centos7下使用Apache部署Django项目

一、python配置    1、安装python3.6.5源及依赖包 # yum install epel-release –y # yum groupinstall "Development tools" –y # yum install zlib-devel bzip2-devel openssl-devel ncurses-devel zx-devel sqlite-devel r...

qq_34895696的博客 7207

Docker部署Django+apache+mod_wsgi环境

Cenos7环境下部署使用docker部署 django+apache+mod_wsgi环境 一、系统要求 1.前提环境:必须是centos7的系统 2.安装docker 安装依赖库文件 yum install -y yum-utils device-mapper-persistent-data lvm2 yum install -y yum-utils \ d...

weixin_30514745的博客 534

Centos Django+ Mod_wsgi

本文介绍了在Centos系统下搭建Django站点的流程。 一.安装环境 本文适合环境: centOS 5/6 python2.7+- Django1.5 mod_wsgi apache2.2/2.4 其中由于mod_py...

chuyanwen8507的博客 190

centos7下django部署(apache)

写在前面: /var/log/httpd/error.log 看错误 /etc/httpd/conf/httpd.conf 自带的 /etc/httpd/conf.d/django.conf 自己创建的 /var/www/html/ 下面放django项目 进入正题: 1.安装apache package(在真实环境中安装) ①yum install httpd ②yum install httpd-devel 2.启动apache网站 systemctl start httpd.service 查看是否

孰能无惑 659

CentOS7配置部署Python3+Django+Apache+Mysql8

一、Python3环境配置 1、安装 python3源及依赖包 # yum install epel-release -y # yum groupinstall &amp;amp;quot;Development tools&amp;amp;quot; -y # yum install zlib-devel bzip2-devel openssl-devel ncurses-devel zx-devel sqlite-devel readlin...

Irrer的博客 6594
上一篇: 如何在CoreOS与Docker上利用Drone.io执行持续集成测试
下一篇: Bash别名与函数实战攻略
普通网友
博客等级 码龄10年 769粉丝 269原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值