1

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

  1. 什么所有者/var/www
  2. 什么所有者/var/www/ProjectName
  3. 什么apache进程所有者?
  4. 在哪里找到静态文件(css、js)?它是来自一个目录中的所有应用程序还是来自不同应用程序的不同目录?这个目录的所有者是什么?
  5. 哪里可以找到媒体文件(上传用户)?它是来自一个目录中的所有应用程序还是来自不同应用程序的不同目录?这个目录的所有者是什么?
  6. py 和 pyc 文件的所有者,应用程序的目录?

PS。也许项目位于我的主目录中?

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

4

2 回答 2

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.04www-data的家目录是/var/www( www-data:x:33:33:www-data:/var/www)

  4. 你可以collectstatic到你想要的项目中的任何目录。我经常有一个名为staticnext的目录manage.py。所有者可能与您的 django 项目的所有者相同。您只需要允许 apache 对该文件夹的读取权限

  5. 您可能需要考虑一个集中式media文件夹,而不是为每个应用程序提供媒体。对于静态和媒体,您可以使用相当轻松地将所有内容上传到 s3django-storages

  6. 所有者可以是您想要的任何人,我不能说所有者,因为它是您的机器。但是,我认为,网络服务器将需要执行py文件,因此您可以更改您的权限以允许这样做。

您可以在任何地方找到项目。在 apache 虚拟主机中,您提供wsgi文件的位置。您的项目没有理由必须存在/var/www

于 2013-03-15T14:44:48.137 回答
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.

我已将chmodDjango 文件夹中的所有内容编辑为 777,只是为了让所有内容都在测试生产服务器上运行。不确定有什么安全风险,即使文件不直接提供。

于 2013-03-15T15:13:53.400 回答