django+nginx+mod_wsgi+apache网站部署

软件安装

0.如果对selunix不熟就先把它停掉

  vi /etc/selinux/config

  改动selinux=diabled

  然后重启计算机

1.编译安装python

  mod_wsgi的安装需要使用到python的共享库,编译安装python时要启用共享库

  ./congifure --enable-shared

  make &&make install

  添加python链接库到路径

  sudo vi /etc/ld.so.conf 

  /usr/local/Python2.7/lib  #添加路径到文件

  sudo  /sbin/ldconfig -v

2.安装apache yum -y install apache

3.安装mod_wsgi其实mod_wsgi有两种安装模式,除了单独安装(yum/编译)之外,还可以通过pip install mod_wsgi方式进行安装

  ./configure --with-apxs=/usr/local/apache/bin/apxs \

    --with-python=/usr/local/bin/python

4.安装django pip install django==1.8

 

三者的关系以及工作过程

  mod_wsgi是apache的一个模块,是遵循python的wsgi协议而开发的、用于连接python web框架的扩展。从这个关系可以看出,这几个软件的信息流是怎样的?

  首先,apache监控服务器主机的80端口,当接收到来自客户端请求的时候,apache会判断这个请求是否匹配,如果匹配其中的某个条件,那么apache就会将这个请求通过mod_wsgi来转发给Django进程进行处理,Django会对这个请求进行进一步处理,执行业务逻辑,最后通过wsgi协议返回响应给apache,apache接收到这个响应之后就会发送给客户端。注意,django再整个部署的过程中是不需要手动启动的,平时我们开发的时候使用python manage.py runserver只是开发过程中调试用的。

 

 

配置

配置django

  如果只采用默认的settings的话,是不需要再配置django文件的,如果想分别使用不同的进程来启动同一个项目中的不同应用的话,需要配置wsgi.py中的django环境变量。

配置mod_wsgi

  同样,mod_wsgi默认也是不需要配置的,除非有高级的需求,否则初级的配置只需要默认即可。

配置apache

  对apache这个服务器软件的所有操作都在其配置文件中完成。

  配置文件默认为/etc/httpd/conf/httpd.conf。

  配置文件的具体写法在其官方文档中有详细说明: http://httpd.apache.org/docs/2.2/configuring.html

  apache是一个模块化的软件,除了一些必要的模块在编译时嵌入之外,其它模块需要在配置文件中导入才能发挥作用,apache的所有模块都以mod开头。mod_wsgi毫无疑问需要导入才能使用:

  LoadModule wsgi_module modules/mod_wsgi.so

 

  另外,配置文件可以直接写在这个配置文件中,也可以写在别的地方,然后导入作为配置的一部分,例如可以把文件写在django项目的根目录下。在apache配置文件中导入这个文件

  Include /root/test1/apache_django_wsgi.conf

  这样就跟全部写在httpd.conf中一样了。

 

  最终的配置文件简单地配置成下面这个样子:

  1 LoadModule wsgi_module modules/mod_wsgi.so
  2 
  3 <IfModule mod_wsgi.c>
  4 
  5 # '/' 代表你想服务你的应用的base URL路径,'/'也就是root url
  6 
  7 # /path/to.../wsgi.py代表使用WSGI应用来服务该url下的所有请求
  8 
  9 # 如果应用在子目录中(https://example.com/mysite in this example),使用下面的设置
 10 
 11 #WSGIScriptAlias /mysite /path/to/mysite.com/mysite/wsgi.py process-group=example.com
 12 
 13 WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
 14 
 15  
 16 
 17 # 如果建立了虚拟环境,将此路径指向虚拟环境的python path
 18 
 19 WSGIPythonHome /path/to/venv
 20 
 21 # WSGIPythonPath让你的项目包能够使用import导入到python path,也就是说import mysite能够运行
 22 
 23 WSGIPythonPath /path/to/mysite.com
 24 
 25  
 26 
 27 # 下面的代码保证apache能使用wsgi.py文件
 28 
 29 <Directory /path/to/mysite.com/mysite>
 30 
 31 <Files wsgi.py>
 32 
 33 Order deny,allow
 34 
 35 Allow from all
 36 
 37 #apache2.4版本的命令
 38 
 39 #Require all granted
 40 
 41 </Files>
 42 
 43 </Directory>
 44 
 45  
 46 
 47 #守护模式下的配置,其中不能使用WSGIPythonHome和WSGIPythonPath,而要使用python-home和python-path
 48 
 49 # 进程名字随意起
 50 
 51 WSGIDaemonProcess example.com python-home=/path/to/venv python-path=/path/to/mysite.com
 52 
 53 user=apache  group=apache
 54 
 55 WSGIProcessGroup example.com
 56 
 57  
 58 
 59 #由于django本身不会serve files,所以需要别的web server承担这个工作,可以选择其它没有运行django的服务器来承担
 60 
 61 #但是如果必须用同一台apache的话,可以将一些url设置成静态文件路径
 62 
 63 #例如
 64 
 65 # 相当于 www.xxx.com/robot.txt  -->/path/to/mysite.com/static/robots.txt
 66 
 67 Alias /robots.txt /path/to/mysite.com/static/robots.txt
 68 
 69 Alias /favicon.ico /path/to/mysite.com/static/favicon.ico
 70 
 71 Alias /media/ /path/to/mysite.com/media/
 72 
 73 Alias /static/ /path/to/mysite.com/static/
 74 
 75  
 76 
 77 <Directory /path/to/mysite.com/static>
 78 
 79 Require all granted
 80 
 81 </Directory>
 82 
 83  
 84 
 85 <Directory /path/to/mysite.com/media>
 86 
 87 Require all granted
 88 
 89 </Directory>
 90 
 91  
 92 
 93 <Directory /path/to/mysite.com/mysite>
 94 
 95 <Files wsgi.py>
 96 
 97 Require all granted
 98 
 99 </Files>
100 
101 </Directory>
102 
103  
104 
105 AddType text/html  .py
106 
107 WSGISocketPrefix /var/run/
108 
109  
110 
111 </IfModule>

 

  当然也可以将相关的配置写在虚拟主机的配置中。

  apache配置文件:虚拟主机的配置参数(略)

 

mod_wgsi配置过程中可能遇到的问题:

 

5xx服务器内部错误

这种问题可以通过检查apache的错误文件发现问题,错误文件/var/log/httpd/error.log中出现类似于 mod_wsgi (pid=20380): Target WSGI script '/var/www/test0/test0/wsgi.py' cannot be loaded as Python module.

  问题很可能出在所安装的mod_wsgi扩展没有找到相应的链接库。

  解决方法:

    1.检查python编译安装要安装共享库

      ./configure --enabled-shared

      make && make install

    2.添加共享库到路径

       sudo vi /etc/ld.so.conf 

      /usr/local/Python2.7/lib

      sudo  /sbin/ldconfig -v

    3.使用编译安装mod_wsgi

      ./configure --with-apxs=/usr/local/apache/bin/apxs \

        --with-python=/usr/local/bin/python

报错:Permission denied: mod_wsgi (pid=2081): Unable to connect to WSGI daemon process 'autotester' on '/etc/httpd/logs/wsgi.2076.0.1.sock' after multiple attempts

  可在apache配置文件或者wsgi.conf中添加

  WSGISocketPrefix /var/run/

  来自 <https://my.oschina.net/crazyharry/blog/336811>

使用.configure  --enable-shared 安装python2.7之后出现下面的报错:

  error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

  解决方法如下:

    来自 <http://blog.youkuaiyun.com/wanyanxgf/article/details/8021641>

    1.编辑      vi /etc/ld.so.conf 

      如果是非root权限帐号登录,使用 sudo vi /etc/ld.so.conf 

      添加上python2.7的lib库地址,如我的/usr/local/Python2.7/lib,保存文件

    2.执行 /sbin/ldconfig -v命令,如果是非root权限帐号登录,使用 sudo  /sbin/ldconfig -v。这样 ldd 才能找到这个库,执行python2.7就不会报错了

      /etc/ld.so.conf:

      这个文件记录了编译时使用的动态链接库的路径。

      默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件

      如果你安装了某些库,没有指定 --prefix=/usr 这样lib库就装到了/usr/local下,而又没有在/etc/ld.so.conf中添加/usr/local/lib,就会报错了

    ldconfig是个什么东东吧 :

      它是一个程序,通常它位于/sbin下,是root用户使用的东东。具体作用及用法可以man ldconfig查到

      简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用

      因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下/sbin/ldconfig

      使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用的,结果编译过程中抱错,缺少xxx库。

 

转载于:https://www.cnblogs.com/zhangjpn/p/6749588.html

相关推荐

16、Django项目部署全攻略

本文详细介绍了Django项目的部署过程,包括选择托管方案、配置Apache和NginX服务器、设置SSL安全协议、数据传输方法以及管理界面的样式调整。同时涵盖了部署注意事项、常见问题解决方法,并提供了性能优化建议及未来扩展方向。通过学习本文,开发者可以掌握如何将Django应用顺利部署到生产环境中并进行优化。

ggg99的专栏 85

nginx mod_wsgi安装配置笔记

做个笔记,防止忘记。 安装环境: ubuntu8.04 首先确定有了python的头文件(/usr/include/python2.5),没有的话apt一下:) sudo apt-get install python2.5-dev 1.nginx安装 $ ./configure --add-module=/path/to/mod_wsgi/ --prefix=/usr/local...

bobning 758

nginx 的 mod_wsgi 模块

文件名: mod_wsgi-8994b058d2db.tar.gz 大小: 52044 字节 md5: be3ce7485c385089592b564db432132c nginx的mod_wsgi模块, 适用于nginx 0.5.34, 其他版本有对应的patch(尚不支持0.7.x, 对于0.6.x版本打过附带的patch之后编译可能还会有问题). 建议: python编译的时候推荐使用--eneble-shared, 否则需要修改mod_wsgi的Makefile, 即使编译通过, 运行时也可能有问题. 主页: aHR0cDovL2hnLm1wZXJpbGxvLmF0aC5jeC9uZ2lueC9tb2Rfd3NnaS8= (base64编码过, 直接贴可能导致本页无法显示, 见谅) 国内可能无法访问

Django + Apache + wsgi配置和环境搭建(ubuntu)

上一篇写了Django + nginx + uwsgi配置和环境搭建(ubuntu) 因为公司服务器环境问题,又配置了apache的环境,记录如下:一. 安装环境:#apache sudo apt-get install apache2# Python 2 sudo apt-get install libapache2-mod-wsgi二. django: 2.1 保证网站能运行: 根目录

chijiaodaxie的博客 25万+

Cadence Sigrity PowerDC实战:如何用PCB电热混合仿真解决散热难题(附详细配置步骤)

本文详细介绍了如何利用Cadence Sigrity PowerDC进行PCB电热混合仿真,以解决高功率密度设计中的散热难题。文章通过解析电热耦合原理,并附上详细的配置步骤与实战技巧,指导硬件工程师同步优化电气性能与热管理,从而在设计源头提升产品可靠性与效率。

weixin_29292535的博客 196

用STM32F103C8T6和TB6612驱动模块,从零搭建一辆能避障循迹的智能小车(附完整代码)

本文详细介绍了如何使用STM32F103C8T6和TB6612驱动模块从零搭建一辆能避障循迹的智能小车。内容涵盖硬件选型、电路设计、底层驱动配置以及智能行为算法实现,并附有完整代码示例,帮助开发者快速掌握嵌入式开发的核心技术。

weixin_42641741的博客 444

项目部署:flask+gunicorn/uwsgi/mod_wsgi+nginx/apache

flask应用程序 #flask_test.py import os from urllib.request import urlretrieve import logging from logging.handlers import RotatingFileHandler from flask import Flask, request, jsonify import requests import json import time def generate_log(log_dir): if n

studyeboy的专栏 879

c转c++——蓝桥杯

在这里,`int &i` 表示 `i` 是一个整型的引用变量,而不是一个拷贝,这意味着在循环中对 `i` 的修改会影响到数组 `arr` 中对应位置的值。arr则是需要遍历的数组。一、为啥要转C++:之前只学过C语言,然后为了蓝桥杯苦哈哈敲了C好久,偶然听了别人的意见去看了一下C++后发现简直太香了——C++不像C要把底层逻辑自己敲出来,而是可以直接调用STL函数库(比如排序,C语言可能要敲个几十行代码C++直接用调用sort函数就可以了),而且C++完全兼容C语言,里面的语法全部可以用C替换。

smwymzqbyl的博客 2045

Nginx 编译, UBUNTU

编译Nginx + Mod_Wsgi (折腾了好几个小时,不知值不值) * libpcre3 要dev版本的 apt-get install libpcre3-dev。通常lib分为二进制版本和带头文件的dev版本,编译东西的时候要选择带头文件的dev版本 * sudo apt-get install zlib1g-dev * UBUNTU里有时候安装的新的lib时要重启一

kzjay的专栏 676

VBA常见错误 - “错误3706,未找到提供程序,该程序可能未正确安装”解决方法

1、问题描述 在利用VBA编程时,引用其它表格数据,出现以下问题: (1)运行“错误3706,未找到提供程序,该程序可能未正确安装”。 (2)引用数据失败 2、解决方法 下载“Access 2010 数据库引擎”,并安装即可。 https://www.microsoft.com/en-us/download/details.aspx?id=54920 AccessDatabaseEngine 2010 官方安装包,官网下载不了的可以来这里下载。(1)运行“错误3706,未找到提..

Nemuel的博客 3万+

【QT】基于QSerialPort的跨平台串口通信实战指南

本文是一份基于Qt QSerialPort模块的跨平台串口通信实战指南。详细介绍了从硬件基础、QSerialPort核心类使用、参数配置、设备自动发现到数据异步读写和错误处理的完整流程,并通过构建一个功能齐全的串口调试助手实例,帮助开发者快速掌握在Windows、Linux和macOS系统下进行高效、稳定的串口应用开发。

a1b2c3d的博客 981

Service Unavailable (HTTP 503)和Unable to connect to WSGI daemon process 'keystone-admin' on '/run/ht

1、遇到问题[root@master ~]# openstack service create --name keystone --description "OpenStack Identity" identity Service Unavailable (HTTP 503) [root@master ~]#[root@master keystone]# openstack service lis

程裕强的专栏 1725

Linux内核配置选项详解及编译过程

在内核编译完成后,可以通过重启系统并选择新编译的内核来使用它。可以在该菜单下选择需要编译进内核的设备驱动,也可以选择将设备驱动编译为模块。可以在该菜单下选择需要编译进内核的设备驱动,也可以选择将设备驱动编译为模块。可以选择需要的调试选项,并根据需要启用或禁用相应的功能。可以选择需要的文件系统类型,并根据需要启用或禁用相应的选项。可以选择需要的网络协议和功能,并根据需要启用或禁用相应的选项。可以选择需要的调试选项,并根据需要启用或禁用相应的功能。可以选择需要的文件系统类型,并根据需要启用或禁用相应的选项。

TechGlide的博客 746

scentry【django写的网站】实现错误日志监控

部署docker:mac电脑直接安装客户端 docker版本需要高一点 linux系统: 添加docker依赖包 sudo yum install –y yum-utils device-mapper-persistent-data lvm2 添加稳定源 安装docker ce 测试是否安装完毕: sudo docker run hello-world 安...

weixin_39534345的博客 362

Playwright实战:打造绕过全维度前端反爬的无头浏览器爬虫(2026实战版)

Playwright绕过前端反爬的核心是模拟真实:真实的设备指纹、真实的行为轨迹、真实的网络请求;2025年前端反爬的核心检测维度是设备指纹+行为轨迹+网络请求,三者缺一不可;实战中需重点关注WebGL/Canvas指纹模拟、行为随机性、请求头完整性,这是绕过反爬的关键;性能优化需以“不触发反爬”为前提,优先选择浏览器复用、资源拦截,而非无限制并发。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2094

国社科“选题设计论证”部分不再难!用AI快速梳理五大核心板块,轻松撰写出高质量的基金申报书(附AI提示词)

七哥给大家推荐的高校都在用的AI平台——高级学术版专业应用平台,集成了ChatGPT、Claude、Gemini、Grok等Al大模型的PLUS版本平台,包括 ChatGPT-5、4o、o3、4.1、4.5、Gemini 2.5 Pro、Claude 3.7、Claude 4、DeepSeek 满血版、Grok 3 、Grok 4等原生线路,还有国际主流的GPTs学术应用,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。

智能AI让学术科研更容易 931

Python+Django+Ubuntu+Apache+Nginx架设服务器成功记

是看一个国外网站一步一步照着来的,复制过来 http://www.ventanazul.com/webzine/tutorials/django-deployment-guide-ubuntu There's a time when every Django developer has to think about deployment scenarios, when I firs

Wally Yu的专栏 6780

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

WSGI(Web Server Gateway Interface)是Python Web应用与服务器通信的标准协议,其核心价值在于解耦应用逻辑与HTTP服务层。mod_wsgi作为Apache官方推荐的WSGI实现,通过守护进程模式提供进程隔离、内存管理与优雅重启能力,显著提升Django等框架的生产健壮性。相比开发服务器runserver的单线程局限,或Nginx+uWSGI的多组件架构,Apache+mod_wsgi方案在LAMP运维体系中具备配置统一、日志集中、安全模块(如mod_security)

weixin_30448603的博客 366

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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

417

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Django SimpleCMDB WSGI

一、WSGI 介绍 (1) 在前面的学习中,我们是通过 python manage.py runserver 0.0.0.0:8000 来启动并访问开发服务器的;(2) 但在实际中我们是通过直接访问 Apache 或 Nginx 来访问开发服务器,这就需要用到 WSGI(Web Server Gateway Interface,Web服务器网关接口);(3) WSGI 是作为 Web Serve...

weixin_30307921的博客 123

用apache2部署Django应用

环境要求:Ubuntu14.04及以上,python3.4及以上 查看系统版本:cat /etc/issue 切换python版本 python2可能导致ImportError: No module named Django错误 查看python版本:python --version 一般Ubuntu系统自带python,在/usr/bin可查看已安装的版本 若为p

raquelle的记忆宫殿 3189

Ubuntu apache2 + mod_wsgi 部署总结

apache2 + ubuntu + mod_wsgi + django 部署过程中的的错误汇总和解决方案。

actanble的博客 936

ubuntu+apache+python+django部署

 由于任务需要,在公司服务器部署的nginx+django服务要在阿里云上也部署一份,防止因公司断网儿服务无法访问;阿里云是ubuntu14.04+apache2.4的环境,需要安装需要的环境加以部署。 ubuntu14.04 默认python 2.7 ,现需要环境为python 3.5,需要安装python3.5 sudoadd-apt-repositoryppa:fk...

weixin_30302609的博客 304

Django: 之Apache、Nginx部署以及发送邮件

在这里讲述部署的方法和常见的问题,并给出了在BAE,JAE,SAE等上面部署的实例。 Django + nginx + Gunicorn/uwsgi部署方式,参见另一篇:Django部署(nginx) 如果是自己的服务器(比如阿里云的或者自己搭建的虚拟机)请看下文: 如果你是新手,个人推荐你用Ubuntu,除非你对Linux非常熟悉,Ubuntu服务器的优点: 一、开机apache2等都自...

weixin_30767921的博客 314

python部署

python部署 目前比较好的Python部署方式 0 nginx + uWSGI nginx + apache + wsgi nginx + supervisord管理的Python进程(Paster、Tornado或Python裸...

139

Django应用部署 - 上线指南

http://blog.youkuaiyun.com/pipisorry/article/details/46957613 目前比较流行的部署、运行Django应用方式是基于Apache的mod_wsgi模块。 但更加高效、弹性,同时又更加复杂的方式是使用以下工具来部署实施:Nginx、Gunicorn、virtualenv、supervisor、Postgresql。 以下详细介绍如何结合这些工具来部

皮皮blog 1万+
上一篇: 关于URL编码 [转]
下一篇: Scrapy笔记:CrawSpider中rules中的使用
dinght2000
博客等级 码龄11年 3粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值