这是我第一次将 Django 部署到最近收购的 Linode 服务器上,我很好奇是否有人可以查看我的部署并帮助我解决一些烦人的问题并建议我是否做错了事情。
目录结构
home\
-public\
-example.com\
-public\
-.htaccess
-index.html
-log\
-application\
-mysite\
-mysite\
-manage.py
-static\
-myapp\
-logs\
Django 的部署结构如何?
不正确的 URL 命名
我在我的域“example.com”上托管了名为“myapp”的 Django 应用程序。按照 Django 网站上的说明,我已经完成了应用程序的 urls.py 必须以“/myapp”开头。这导致应用程序的域变为“example.com/myapp”。
如何设置它以便 example.com 只是我编写的 Django 应用程序?我想简单地导航到 example.com,它会加载我的应用程序而不是 example.com/myapp。
更奇怪的是,我原以为 example.com 会加载我的 index.html 文件,但它却试图为 Django 查找 URL 映射......
Django 日志文件写入权限
每当我通过 SSH 连接到我的机器上“syncdb”或“collectstatic”时,日志记录模块都会创建我在我的 settings.py 文件中命名的日志文件。这给我带来了问题,因为我是文件的所有者,而 apache2(www-data)无法写入它。在我重新启动 apache 服务器之前,必须在每个命令之后手动删除日志文件,这很烦人。
这是我的 /etc/apache2/sites-available/example.com 文件:
# domain: example.com
# public: /home/setheron/public/example.com/
WSGIPythonPath /home/setheron/public/example.com/applications/mysite:/home/setheron/env/lib/python2.7/site-packages
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerAdmin setheron@setheron.com
ServerName www.example.example.com
ServerAlias example.com
WSGIScriptAlias / /home/setheron/public/example.com/applications/mysite/mysite/wsgi.py
Alias /static/ /home/setheron/public/example.com/applications/mysite/static/
<Directory /home/setheron/public/example.com/applications/mysite/static/>
Order deny,allow
Allow from all
</Directory>
<Directory /home/setheron/public/example.com/applications/mysite/mysite>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html index.php
DocumentRoot /home/setheron/public/example.com/public
# Log file locations
LogLevel warn
ErrorLog /home/setheron/public/example.com/log/error.log
CustomLog /home/setheron/public/example.com/log/access.log combined
</VirtualHost>