这是我第一次将Django部署到最近收购的Linode服务器上,我很好奇是否有人可以查看我的部署并帮助我解决一些棘手的问题并告诉我我是否做错了。
home\
-public\
-example.com\
-public\
-.htaccess
-index.html
-log\
-application\
-mysite\
-mysite\
-manage.py
-static\
-myapp\
-logs\
这对Django的部署结构有何影响?
我在我的域'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映射...
每当我在我的机器上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>
答案 0 :(得分:1)
如果您希望Django服务整个网站,请删除您的公共目录,索引等等。除了/ static之外,您应该只需要WSGIScriptAlias指令。修复urls.py以表明您的网站应该来自/,而不是/ myapp。