`
dengyin2000
  • 浏览: 1225625 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Django项目production环境发布笔记。

阅读更多
这里使用apache2 + mod_python, 安装忽略, 另外需要到你部署的机子上安装django 和 MySQLdb,(我用的ubuntu server,装上之后 apache2, mod_python, MySQLdb 都已经有了, 装个django就好了。 )


其实配置蛮简单的, 修改/etc/apache2/httpd.conf, 加入以下片段。

Alias /site_media /home/denny/zoomino/website/zoomino_media

<Location "/">
      SetHandler python-program
      PythonHandler django.core.handlers.modpython
      SetEnv DJANGO_SETTINGS_MODULE zoomino.settings
 #    PythonOption django.root /
      PythonDebug On
      PythonPath "sys.path +['/home/denny']"
</Location>

<Location "/site_media">
      SetHandler None
</Location>


项目位于/home/denny,这里要注意PythonPath, 这里不是设置/home/denny/zoomino而且project dir的上一级目录, 也就是你运行django-admin.py startproject的当前目录。如果你想在开发的时候自动定位你的template dir,请看这篇文章http://dengyin2000.iteye.com/blog/323391

django虽然把可以处理静态文件,但是django内置的web server很差,所以发布的时候需要用apache这样的handle。Alias /site_media /home/denny/zoomino/website/zoomino_media 这句定义资源文件的路径和映射的url。

然后我们把django项目映射到根url“/”上。 因为我把django映射到了根上, 所以最后一段肯定要加,要不然资源文件会被django handle了那肯定是要报错的。

OK,最后把settings.py的DEBUG设成False, 重启apache就行了。


如何在开发的时候处理静态文件请看。 http://docs.djangoproject.com/en/dev/howto/static-files/#howto-static-files, 再结合我的这篇文章http://dengyin2000.iteye.com/blog/323391定位你的static files就完美了。


参考:http://docs.djangoproject.com/en/dev/topics/install/#database-installation
      http://docs.djangoproject.com/en/dev/intro/install/#intro-install
      http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#howto-deployment-modpython

安装apache mod-python

http://www.howtoforge.com/embedding-python-in-apache2-with-mod_python-debian-ubuntu-fedora-centos-mandriva-opensuse
分享到:
评论
14 楼 towjzhou 2009-04-07  
ahuaxuan 写道
范三山 写道
把django以fastcgi的形式部署在lighttpd下面,链接的跳转会出现很诡异的问题,如果一个链接 是/post/1/可以正常跳转,但是如果写成/post/1 那么就会跳转到 /mysite.fcgi/post/1 那么当然是404了
有时候在admin下的操作老是会跳到 /mysite.fcgi/xxxxx/xxx,比如说我一个增加的操作以后,应该跳到 /admin/post/1 结果是跳到 /mysite.fcgi/admin/post/1 就是404
更奇怪的是,我在同样的配置,在linux下面只是在管理后台登陆的时侯这样跳转,其它时侯并不。但是在windows下面竞然很多链接会这样跳,都是增加操作。完全没有道理。
有谁遇见过这样的问题。

$HTTP["host"] == "202.109.130.80" {
        server.document-root="/home/vansention/workspace/soft/"
        fastcgi.server = (
            "/mysite.fcgi"=>(
                "main"=>(
                "host" =>"127.0.0.1",
                "port" => 3303,
                "check-local"=>"disable"
                )
            ) ,
        )
        alias.url += (
                "/media/" => "/usr/lib/python2.5/site-packages/django/contrib/admin/media/",
                "/static/" => "/home/vansention/workspace/soft/static/"
        )
        url.rewrite-once = (
        "^(/media.*)$" => "$1",
        "^(/static.*)$" => "$1",
        "^/favicon\.ico$" => "/media/favicon.ico",
        "^(/.*)$" => "/mysite.fcgi$1",
    )
}

说实话,我在玩django的时候也出现了这个问题。

我分析是这样的,不带/的地址会被lighttpd返回301,然后重新请求,但是这个时候lighttpd返回给浏览器的地址是这样的/mysite.fcgi/xxxxx/xxx,为什么是这个地址,因为之前"^(/.*)$" => "/mysite.fcgi$1",这句导致重定向的地址变成了/mysite.fcgi/xxxxx/xxx,而不是在原来的地址后加一个/这么简单,所以我觉得比较好的方案是破坏lighttpd对默认没有/的地址返回301状态的行为。
比如没有/的urlrewrite一下自动加上/

我刚开始是不管什么形式的链接都会加/xxx.fcgi,设置了FORCE_SCRIPT_NAME=''就解决。
13 楼 hqman 2009-02-13  
lighttpd整合django
http://hqman.iteye.com/blog/253071
12 楼 mikeandmore 2009-02-09  
whaosoft 写道
python 现在用这个的那么多??

其实都用zope去了。。。
11 楼 whaosoft 2009-02-08  
python 现在用这个的那么多??
10 楼 mikeandmore 2009-02-08  
今天看了一下cherokee...
用scgi/fastcgi应该是最方便的拉。。。

see
http://www.cherokee-project.com/doc/cookbook_django.html
9 楼 dengyin2000 2009-02-08  
范三山 写道

django部署实在麻烦了点

其实应该还好吧, 主要一步就是要把静态资源也需要部署。不过比起java的一个war包稍微麻烦点了。
8 楼 范三山 2009-02-08  
django部署实在麻烦了点
7 楼 dengyin2000 2009-02-06  
剑 事 写道
dengyin2000 写道
没有试过lighthttpd   其实用apache也蛮方便的嘛。 性能差距有这么大吗?



apache 配集群方便么


apache集群肯定方便吧。 前面一个loadblance就是了。 django是SNA的, session又不用复制。
6 楼 woods 2009-02-06  
呵呵 不错 收藏 过一阵要用这个
5 楼 剑事 2009-02-06  
dengyin2000 写道
没有试过lighthttpd   其实用apache也蛮方便的嘛。 性能差距有这么大吗?



apache 配集群方便么
4 楼 dengyin2000 2009-02-06  
没有试过lighthttpd   其实用apache也蛮方便的嘛。 性能差距有这么大吗?

3 楼 ahuaxuan 2009-02-05  
范三山 写道
把django以fastcgi的形式部署在lighttpd下面,链接的跳转会出现很诡异的问题,如果一个链接 是/post/1/可以正常跳转,但是如果写成/post/1 那么就会跳转到 /mysite.fcgi/post/1 那么当然是404了
有时候在admin下的操作老是会跳到 /mysite.fcgi/xxxxx/xxx,比如说我一个增加的操作以后,应该跳到 /admin/post/1 结果是跳到 /mysite.fcgi/admin/post/1 就是404
更奇怪的是,我在同样的配置,在linux下面只是在管理后台登陆的时侯这样跳转,其它时侯并不。但是在windows下面竞然很多链接会这样跳,都是增加操作。完全没有道理。
有谁遇见过这样的问题。

$HTTP["host"] == "202.109.130.80" {
        server.document-root="/home/vansention/workspace/soft/"
        fastcgi.server = (
            "/mysite.fcgi"=>(
                "main"=>(
                "host" =>"127.0.0.1",
                "port" => 3303,
                "check-local"=>"disable"
                )
            ) ,
        )
        alias.url += (
                "/media/" => "/usr/lib/python2.5/site-packages/django/contrib/admin/media/",
                "/static/" => "/home/vansention/workspace/soft/static/"
        )
        url.rewrite-once = (
        "^(/media.*)$" => "$1",
        "^(/static.*)$" => "$1",
        "^/favicon\.ico$" => "/media/favicon.ico",
        "^(/.*)$" => "/mysite.fcgi$1",
    )
}

说实话,我在玩django的时候也出现了这个问题。

我分析是这样的,不带/的地址会被lighttpd返回301,然后重新请求,但是这个时候lighttpd返回给浏览器的地址是这样的/mysite.fcgi/xxxxx/xxx,为什么是这个地址,因为之前"^(/.*)$" => "/mysite.fcgi$1",这句导致重定向的地址变成了/mysite.fcgi/xxxxx/xxx,而不是在原来的地址后加一个/这么简单,所以我觉得比较好的方案是破坏lighttpd对默认没有/的地址返回301状态的行为。
比如没有/的urlrewrite一下自动加上/
2 楼 范三山 2009-02-05  
把django以fastcgi的形式部署在lighttpd下面,链接的跳转会出现很诡异的问题,如果一个链接 是/post/1/可以正常跳转,但是如果写成/post/1 那么就会跳转到 /mysite.fcgi/post/1 那么当然是404了
有时候在admin下的操作老是会跳到 /mysite.fcgi/xxxxx/xxx,比如说我一个增加的操作以后,应该跳到 /admin/post/1 结果是跳到 /mysite.fcgi/admin/post/1 就是404
更奇怪的是,我在同样的配置,在linux下面只是在管理后台登陆的时侯这样跳转,其它时侯并不。但是在windows下面竞然很多链接会这样跳,都是增加操作。完全没有道理。
有谁遇见过这样的问题。

$HTTP["host"] == "202.109.130.80" {
        server.document-root="/home/vansention/workspace/soft/"
        fastcgi.server = (
            "/mysite.fcgi"=>(
                "main"=>(
                "host" =>"127.0.0.1",
                "port" => 3303,
                "check-local"=>"disable"
                )
            ) ,
        )
        alias.url += (
                "/media/" => "/usr/lib/python2.5/site-packages/django/contrib/admin/media/",
                "/static/" => "/home/vansention/workspace/soft/static/"
        )
        url.rewrite-once = (
        "^(/media.*)$" => "$1",
        "^(/static.*)$" => "$1",
        "^/favicon\.ico$" => "/media/favicon.ico",
        "^(/.*)$" => "/mysite.fcgi$1",
    )
}
1 楼 mikeandmore 2009-02-05  
赞,不过用nginx效率或许会高一些?

其实django的部署我看好mod_wsgi。wsgiMS比apache module设计合理一些。。。

所以无论是nginx的mod_wsgi或者是apache的mod_wsgi都可以试试看。。。

相关推荐

    Django2萌新入门笔记

    在创建Django项目时,PyCharm能够自动创建一个独立的Python运行环境,这可以避免不同项目间的依赖冲突。Virtualenv是一个创建虚拟环境的工具,可以用来创建隔离的Python运行环境。它通过pip命令进行安装,并通过该...

    django笔记 django笔记

    本笔记将深入探讨Django的基础概念、核心功能以及实际应用。 1. **Django简介**: Django是由两位美国开发者在2005年创建的开源项目,它遵循MVC(模型-视图-控制器)设计模式,但更倾向于MTV(模型-模板-视图)...

    django项目django+vue项目.zip

    django项目django项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue...

    django教程:基本操作笔记整理.png

    django教程:基本操作笔记整理.png

    基于Python的Django项目设计源码

    本项目是一个基于Python语言开发的Django项目,包含221个文件,主要文件类型包括图片、Python源代码、XML...系统设计旨在为用户提供一个高效、便捷的Django项目开发解决方案,以满足用户在Django项目开发方面的需求。

    Django框架练习之云笔记项目

    Django框架练习之云笔记项目

    2019版-千锋Django-源码+笔记.zip

    千锋Django笔记可能涵盖了从安装配置到项目实战的全过程,包括模型定义、视图处理、模板渲染、表单处理、用户认证与授权等重要知识点。思维导图则以可视化的方式,帮助记忆和理解Django的架构和各组件之间的关系,使...

    宝塔部署Django项目.doc

    由于服务器 CentOS 7 系统默认的 Python 版本是 2.7,而 Django 项目是基于最新版 Django 开发的,本地环境是 Python 3.6.5 的。为了尽量保证环境的相似,避免踩无意义的坑,需要安装适配 Python 版本。 Step 3: ...

    Django框架学习笔记

    ### Django框架学习笔记 #### 软件框架概述 软件框架是软件开发中的一种结构化设计,它提供了一种组织代码、数据和其他资源的方式,使得开发者可以更容易地构建应用程序。框架通常包含了一些预设的解决方案,这些...

    宝塔部署Django项目.docx

    宝塔部署Django项目 Django框架是 Python 中一个流行的Web开发框架,它提供了许多实用的功能和工具来帮助开发者快速构建Web应用程序。但是,对于新手来说,部署Django项目可能是一个令人望而却步的任务。幸运的是...

    Python基于Django的实战项目源码——美多商城.zip

    Python基于Django的实战项目源码——美多商城 Python基于Django的实战项目源码——美多商城 Python基于Django的实战项目源码——美多商城 Python基于Django的实战项目源码——美多商城 Python基于Django的...

    django项目源码-入门级博客项目源码

    python django + mysql 开发的入门级博客项目,用于学习,包含complist.txt组件列表,直接pip install -r complist.txt即可安装该项目需要的组件。 该项目包含管理端的开发,持久化相关方法学习,admin管理端的二次...

    python3 中django项目访问apollo

    django项目访问apollo,增加了配置加密后自动解密功能 当环境设置为local,默认取本地配置,配置文件默认在~/data/apollo/cache/ django_apollo-1.0.0-py3-none-any.whl 解密即修改该文件的KEY Apollo加密方法 KEY=...

    django项目实例(django 简易博客开发)

    前几天写的django 简易博客开发记录,贴个链接吧 django 简易博客开发 1 安装、创建、配置、admin使用 http://www.cnblogs.com/cacique/archive/2012/09/29/2707976.html django 简易博客开发 2 模板和数据查询 ...

    Django实战入门项目.rar

    【Django实战入门项目】是针对初学者设计的一套教程,旨在帮助他们快速掌握Django框架,从而能够构建实际的Web应用。Django是Python语言中最受欢迎的Web开发框架之一,以其“ batteries included ”的理念,提供了...

    Django入门与实践教程1

    教程涵盖了从环境搭建到项目部署的全过程,涉及了Django框架的核心概念和技术。 首先,【环境搭建】章节会讲解如何配置Python开发环境,包括安装Python解释器,使用虚拟环境管理项目依赖,以及安装Django框架。这...

    部署Django项目

    以上步骤涉及到的Django部署思维导图中提到的各个知识点,将帮助开发者将Django项目从本地环境迁移至生产环境。部署是一个复杂的过程,每个步骤都需要细致的配置和检查以确保Web应用的性能和安全。

    Python项目开发Django实战-多用户内容发布系统-编程案例解析实例详解课程教程.pdf

    【Python项目开发Django实战-多用户内容发布系统】是一个编程教程,旨在引导读者通过实践构建一个多用户内容发布系统,采用Python的Django框架。Django是一个强大的Web开发框架,以其高效、安全和易于上手的特点深受...

    实用的Django项目——Django项目实践 (Practical Django Projects)

    《实用的Django项目》这本书由Django发布经理James Bennett撰写,是第二版的更新,专门针对Django 1.1版本进行修订。本书的目标是帮助读者更快地编写更好的Web应用程序,并教授如何构建自己的可重用代码库。在以下...

Global site tag (gtag.js) - Google Analytics