【问题标题】:python django project and folder structure (differing from WAMP)python django项目和文件夹结构(不同于WAMP)
【发布时间】:2013-07-15 06:48:38
【问题描述】:

我在 Win 7 上的开发环境设置如下:

Django 开发结构

Apache      -server-        C:\Program Files (x86)\Apache Software Foundation\Apache2.4
PostgreSQL  -database-      C:\Program Files\PostgreSQL\9.2
Django      -framework-     C:\Python27\Lib\site-packages\django
Python      -code-          C:\Python27
Project     -root-          C:\mysite
    |----------apps
    |----------HTML
    |----------CSS
    |----------JavaScript
    |----------assets

我试图保持这个非常简单的开始。有 5 个主要目录,每个目录都有不同的用途。所有代码都位于项目文件夹中。

与 WAMP 结构相比:

C:\WAMP
    |----------C:\Apache
    |----------C:\MySQL
    |----------C:\PHP
    |----------C:\www

我喜欢 Apache、MySQL 和 PHP 都位于一个整洁的目录中。出于安全原因,我知道将根项目 OUTSIDE 保存在 Django 的另一个目录中。

  • 在 Django 环境中到处安装 Apache、PostgreSQL 和 Python 可以吗?
  • 我错过了核心 Django 组件和/或目录吗?
  • 部署和扩展会成为问题吗?

我希望这可以成为 Django 网络程序员新手的指南。

【问题讨论】:

    标签: python django directory-structure project-structure


    【解决方案1】:

    我可以一一回答:

    • Is if fine that Apache, PostgreSQL, and Python are installed all over the place in the Django environment?

      到处都是听起来很奇怪,但是完全没问题。

    • Did I miss a core Django component and/or directory?

      不,你不会错过任何东西,Django 核心已经在 site-packages 文件夹中,您的站点代码是 mysite,它可以位于您想要的任何位置。

    • Will deploying and scaling be a problem?

      不,这不会是当前结构的问题。您将只部署您的mysite,另一个将单独安装。

    开始 Django 开发时你应该熟悉的东西:

    • 当你部署你的项目时,它很可能会在 Linux 服务器上,所以安装和学习 Linux 可能吗?

    • virtualenv: 很快你将不得不安装 Django,然后是一堆外部包来支持你的项目。 virtualenv 帮助您隔离工作环境。好吧,当你开始 python 开发时,它是“非官方的”。

    • virtualenvwrapper 让您在使用virtualenv 时更轻松

    • gitgithubbitbucket:如果你还不知道git,你现在应该知道了。

    【讨论】:

    • “所有地方”实际上是 apache 和 postgresql 安装在“更远的程序文件目录中。部署 = mysite 听起来不错。
    • 我已经测试了 virtualenv(它可以工作)但还没有 virtualenvwrapper。
    • 是的,我知道你的意思。很好,看来您已经准备好进行真正的开发了;)
    • 感谢您的建议。我希望一切都简单而有条理,并考虑到增长。
    【解决方案2】:

    Apache 只是网络服务器,它是用来提供文件的,但是做一个网站你不需要它。 Django 带有自己的开发服务器。见:

    python manage.py runserver
    

    开发 PHP 网站时需要 Apache,因为您的计算机不知道如何编译和解释它。但是对于 Django,你使用的是 Python 语言,如果你使用的是 Django,那么你已经安装了它。

    阅读https://docs.djangoproject.com/en/1.5/intro/tutorial01/

    现在是时候使用 Apache 设置您自己的服务器了: https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/.

    【讨论】:

    • 我一直在使用“python manage.py runserver”。何时部署 = 使用 apache。
    【解决方案3】:

    在 Windows 上缩放将是一个问题。 Windows 上 Apache 中的 Python 在一个进程中获得 64 个线程。将此与 GIL 结合起来,您将遇到扩展问题。

    Linux 上的 Python 和 Apache 没有同样的问题。在 Linux 下,wsgi 可以创建多个进程,每个进程都有多个线程,从而最大限度地减少 GIL 问题。

    在我看来,Windows 上 Apache 中的 WSGI 不是一个可扩展的解决方案。

    但是你可以在那里开发并迁移到 linux 进行部署,我一直都这样做。

    您将希望利用 Apache Alias directive 来提供所有静态内容,例如 css、js、favicon.ico。这让 python 可以只处理需要逻辑的请求。

    【讨论】:

    • “但是你可以在那里开发并迁移到 linux 进行部署,我一直都这样做。”正是我的计划。
    • webpy.org/cookbook/staticfiles 这就是您使用 Apache 别名指令的意思吗?
    • 是的,这就是我所说的 apache 别名指令的意思。我更新了答案以包含官方 apache 文档的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2018-11-21
    • 1970-01-01
    • 2014-07-09
    • 2018-03-11
    • 2020-09-11
    • 2013-11-03
    相关资源
    最近更新 更多