我扫描了大量有关此主题的链接,专门介绍在 Ubuntu 服务器上部署 Django 和 Apache。最后,我找到了这个链接 Django Deployement Installation to Ubuntu 12.04 Server这使我比任何其他指南都走得更远。所以,现在,我在这一点上——我安装了所有软件和依赖项,启用了 mod_WSGI,安装了 Python 环境和 Django,开始了一个新项目等。我将我的域名命名为“dynamics”。所以,我在 /etc/apache2/sites-available
文件夹中的 dynamics
文件现在看起来像这样:
<VirtualHost *:80>
ServerAdmin root@dynamics
ServerName dynamics
Alias /site_media/ /srv/my_project/app/webapp/site_media/
Alias /static/ /srv/my_project/venv/lib/python2.7/site-packages/django/contrib/admin /static/
Alias /robots.txt /srv/my_project/app/webapp/site_media/robots.txt
Alias /favicon.ico /srv/my_project/app/webapp/site_media/favicon.ico
CustomLog "|/usr/sbin/rotatelogs /srv/my_project/logs/access.log.%Y%m%d-%H%M%S 5M" combined
ErrorLog "|/usr/sbin/rotatelogs /srv/my_project/logs/error.log.%Y%m%d-%H%M%S 5M"
LogLevel warn
WSGIDaemonProcess dynamics user=itsme group=itsme processes=1 threads=15 maximum- requests=10000 python-path=/srv/my_project/venv/lib/python2.7/site-packages python- eggs=/srv/my_project/run/eggs
WSGIProcessGroup dynamics
WSGIScriptAlias / /srv/my_project/app/conf/apache/django.wsgi
<Directory /srv/my_project/app/webapp/site_media>
Order deny,allow
Allow from all
Options -Indexes FollowSymLinks
</Directory>
<Directory /srv/my_project/app/conf/apache>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
但是,当我启动 apache 并转到 localhost
时,我看到 Not found
错误,如果我改为尝试转到 http://dynamics/
我被重定向到谷歌搜索页面。我想我需要做一些额外的配置,但我不知道是哪些。可能,我需要在 apache.conf
中指定 ServerRoot(但是对于所有这些 django 文件夹,我不知道我应该准确指向哪里)。
编辑 现在,情况更糟了。我试图重新安装 apache,但是当我转到本地主机时,浏览器想要像加载文件一样加载页面。所以,我一步一步做了什么:
1. sudo apt-get remove apache2 # remove to install from scratch
2. sudo apt-get update
3. sudo apt-get install apache2
4. sudo a2dissite default # disable the default site
5. create dynamics file in /etc/apache2/sites-available
6. dynamics file contains these lines:
<VirtualHost *:80>
ServerAdmin root@dynamics
ServerName dynamics
DocumentRoot /home/username/Sites/dynamics
<Directory /home/username/Sites/dynamics/>
Options Indexes FollowSymLinks MultiViews
AllowOverride Node
Order allow,deny
allow from all
</Directory>
</VirtualHost>
7. /etc/apache2/apache2.conf contains `ServerName dynamics`.
如果我还指定 SeverRoot 到 /home/username/Sites/dynamics
,当我重新启动 apache 时,我会收到数百个错误,所以我没有指定它。
问题:
1. If I go to `http://dynamics`, I'm redirected to google search page
2. If I go to localhost, the browser wants to load a page like a file
所以,重装后我什至退了一步。我什至不能做一个虚拟主机。在此过程中,我遇到了一件事 - 如果你执行 sudo apt-get remove
或 sudo apt-get purge
,不管他们怎么说,我仍然看到 apache 配置文件未受影响 - 就像卸载前一样。所以,我现在有一个额外的问题:
1. How to uninstall completely apache. All guides and tips that I followed left apache config files just as they were.
编辑
好吧,我从一开始就重新安装了 apache,添加了一个虚拟主机 dynamics
(首先,没有与 django 的任何链接),然后我听从了 Daniel Roseman 的建议 - 更正了 hosts
归档一点。至少,这部分不起作用。我可以将 index.html 文件添加到 dynamics 文件夹,如果我转到 http://dynamics/
,我会看到此页面呈现。但是,我所有构建 Django 项目并在同一 URL http://dynamics
中运行的尝试都以失败告终。每次我收到此错误“未找到”。成吨的指南、成百上千的博客和海量的手册似乎完全无法完成(我认为)可能最简单的任务——只是在 Apache 上运行一个 django 项目。
编辑
我将开始一个赏金问题。现在,我只想预先将一切形式化。问题是如何在Ubuntu上部署Django和Apache?要求:
Strongly required:
1. Ubuntu 12.04
2. Python 3.3.4
3. Apache 2.2.22
4. mod_wsgi
不太强烈: 5. 如果有人会制作一个运行测试用例,那会很酷。所以,我的最终目标是制作一个小型网络项目,我可以在其中使用 f2py
调用 fortran
子例程。如果在这种环境下可以建立这种联系,我会欣喜若狂。假设我想要一个名为 dynamics
的具体虚拟主机。所以,我想将所有项目的文件存储在这个目录/home/victor/dynamics/中。我需要一步一步的指导,而不仅仅是一些技巧。并希望这条指令,如果有人设法做到,将在像我这样的 django 新手中非常受欢迎。
最佳答案
您需要运行 sudo a2ensite dynamics
以启用动态 conf(或者您可以手动将其符号链接(symbolic link)到 sites-enabled),然后使用 sudo/etc/init.d/重新启动 Apache apache2 重启
。
编辑 看起来另一个问题是您试图将您的虚拟主机与一个不存在且与您的机器无关的域名相关联,即 dynamics
。如果你想像那样访问它,你需要编辑你的 /etc/hosts
以将该名称指向你的本地主机:将此行添加到该文件:
127.0.0.1 dynamics
别忘了,这只是对您的机器进行的黑客攻击。对于实际部署,您需要一个可通过 DNS 解析的正确域名。
关于python - Ubuntu 上的 Django + Apache 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26249982/