django的项目结构和dirs的所有者有什么好的方法?

时间:2013-03-15 14:36:16

标签: django apache ubuntu

想象一下,我的django项目包含很少的应用程序。在服务器上,它位于/var/www/ProjectName目录。我的用户名是Foo,有时我想要编辑服务器文件。下一个问题的最佳解决方案是什么?

  1. /var/www的所有者?
  2. /var/www/ProjectName的所有者?
  3. 什么是apache进程所有者?
  4. 在哪里找到静态文件(css,js)?是来自一个目录中的所有应用程序还是针对不同应用程序的不同目录?这个目录的主人是什么?
  5. 在哪里找到媒体文件(有上传用户)?是来自一个目录中的所有应用程序还是针对不同应用程序的不同目录?这个目录的主人是什么?
  6. py和pyc文件的所有者,应用程序的目标是什么?
  7. PS。也许项目位于我的主目录?

    我对此有一些建议,但我希望听到更有经验的人。

2 个答案:

答案 0 :(得分:2)

  1. 关于ubuntu 12.04 root drwxr-xr-x 3 root root 4096 Nov 8 11:59 www

  2. cd /var/www && ls -la看到所有者,可能是root?

  3. www-data,在12.04 www-data家庭目录为/var/wwwwww-data:x:33:33:www-data:/var/www

  4. 您可以collectstatic到项目中想要的任何目录。我经常在static旁边有一个名为manage.py的目录。所有者可能与您的django项目的所有者相同。您只需要允许对此文件夹进行apache

  5. 的读访问
  6. 您可能需要考虑一个集中的media文件夹,而不是每个应用都有媒体。对于静态和媒体,您可以使用django-storages

  7. 轻松地将所有内容上传到s3
  8. 主人可以是你想要的任何人,我不能说主人因为它是你的机器。但是,我认为,网络服务器需要执行py文件,因此您可以更改权限以允许此操作。

  9. 您可以根据需要找到项目。在apache虚拟主机中,您可以提供wsgi文件的位置。您的项目没有理由必须住在/var/www

答案 1 :(得分:1)

这是我正在使用的结构。

django/
├── project_virtualenv                       (virtualenv folder)
└── versioned                                (folder for things that are versioned)
    ├── devdoc                               (documentation)
    └── py                                   (code)
        └── project                          (django project)
            ├── django_app                   (django app)
            │   
            ├── project                      (project folder)                  
                ├── files                    
                │   ├── media                (media, user uploads, etc)
                │   ├── production_static    (statics for production)
                │   └── static               (statics for development)
                └── templates
                    

目录django位于生产服务器上的主目录中,只有wsgi.py位于公开文件夹中(在我的情况下为/home/user/public_html/wsgi

我已将{Django文件夹中的所有内容chmod编辑为777,只是为了让测试生产服务器上的所有工作正常运行。不确定安全风险是什么,甚至不直接提供文件。