在Apache和WSGI上部署Django

时间:2015-02-04 21:17:28

标签: django apache mod-wsgi

虽然我已经找到了大量的技术支持,使用WSGI在Apache上部署Django,但事实上他们都让我感到很困惑,而且我无法让Django运行。我希望这是一项真正轻松的工作,但作为一个新来的人,我正面临困难。

我有两个Django项目,分别是我的 / home / zia / Documents / Codes / Django / website1 .... / website2 dir中的website1和website2 。包含settings.py文件的文件夹是 / website1 / website2 目录中的 root /

Apache,mod_wsgi根据需要安装所有内容。如何编辑apache2.conf和wsgi.py文件以使这两个项目在端口8080和8081上运行?

过去几天我一直在努力解决这个问题,并尝试了以下所有网站。

link1link2link3link4


UPDATE1:

我从一开始就采用了以下方法,以使事情顺利进行,但发现自己处于一些新问题。请指导我错误的地方。

  1. 安装mod-wsgi和apache2: sudo apt-get install libapache2-mod-wsgi && sudo apt-get update && sudo apt-get install apache2
  2. 通过更改文件" /etc/apache2/ports.conf" ;: Listen 8083
  3. 将apache2端口编辑为8083,而不是80
  4. 将以下行添加到" / etc / hosts"档案:160.75.133.175 160.75.133.175
  5. 在" /etc/apache2/apache2.conf"中编辑以下代码;档案:
  6. <Directory /> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>

    1. 在&#34; / etc / apache2 / sites-available /&#34;内创建一个文件; dir的名字&#34; sql_api.conf&#34;:
    2. <VirtualHost *:8083> ServerAdmin zia@gmail.com ServerName 160.75.133.175 ServerAlias http://160.75.133.175 <Directory /home/zia/Documents/Codes/Django/sql_api/ > Order deny,allow Allow from all </Directory> WSGIScriptAlias / /home/zia/Documents/Codes/Django/sql_api/root/wsgi.py WSGIDaemonProcess 160.75.133.175 user=www-data group=www-data threads=25 python-path=/home/zia/Documents/Codes/Django/sql_api/root/:/usr WSGIProcessGroup 160.75.133.175 ErrorLog /home/zia/Documents/Codes/Django/sql_api/root/error.log </VirtualHost>

      1. 在&#34; / etc / apache2 / sites-available&#34;中运行以下命令导演:sudo a2enmod wsgi && sudo a2ensite sql_api.conf && sudo service apache2 restart
      2. 打开http://160.75.133.175:8083/,但收到以下错误: 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 请通过zia@gmail.com与服务器管理员联系,告知他们此错误发生的时间以及您在此错误发生之前执行的操作。 服务器错误日志中可能提供了有关此错误的更多信息。 Apache / 2.4.7(Ubuntu)服务器,位于160.75.133.175端口8082
      3. 注意:当我在 / var / www / 目录中制作Django项目然后采用相同的方法然后正常工作!我想因为我试图访问 / home / zia /.... dir,所以存在这个问题。无论如何,这只是猜测。我很感激你的帮助。

2 个答案:

答案 0 :(得分:2)

如果您对Apache配置进行了一系列更改,那么您应该重新开始。我最熟悉Ubuntu下的设置。

您需要做的是将apache下的两个站点都设置为虚拟主机。安装apache之后,有一个名为sites-available和sites-enabled的文件夹,它们应该包含带有网站项目名称的虚拟主机文件。每个虚拟主机都将指向您的.wsgi文件所在的位置。这些虚拟主机通常在相同的端口号下监听(如上面提到的丹尼尔),但是根据域名为任何应用程序提供服务。 noobmovies.com google.com等...

如何使用apache设置虚拟主机在这里得到了很好的解释。这假设您使用的是ubuntu。

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts

您的虚拟主机(该文件应以您的域名exp ... noobmovies.com命名)并且看起来像这样......

**<VirtualHost *:8080>
    ServerAdmin your_admin_email@gmail.com
    ServerName  www.yourdomain.com
    ServerAlias yourdomain.com

    <Directory /home/path/your/project/ >
            Order deny,allow
            Allow from all
    </Directory>

    WSGIScriptAlias / /home/path/your/project/app/wsgi.py
    WSGIDaemonProcess  yourdomain.com user=www-data group=www-data threads=25 python-path=/path/to/your/project/app/:/path/to/python/virtual/host/site-packages
    WSGIProcessGroup yourdomain.com
    ErrorLog /path/to/your/app/error.log
</VirtualHost>**

请记住WSGIDaemonProcess只有在您使用virtualenv(您应该)运行您的应用程序时才会这样做。这告诉apache python应该用于读取wsgi app / run django app。

因此,如果你正在使用ubuntu或linux,你可能只想卸载apache并重新安装,然后只需按照数字海洋指令进行设置即可。

答案 1 :(得分:2)

感谢大家。终于找到了工作程序。按顺序执行以下步骤:

  1. 安装mod-wsgi和apache2: sudo apt-get install libapache2-mod-wsgi && sudo apt-get update && sudo apt-get install apache2
  2. 通过更改文件“/etc/apache2/ports.conf”将apache2端口编辑为8083而不是80:Listen 8083
  3. 将以下行添加到“/ etc / hosts”文件中:160.75.133.175 160.75.133.175
  4. 在“/etc/apache2/apache2.conf”文件中编辑以下代码:
  5. <Directory /> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>

    1. 在“/ etc / apache2 / sites-available /”目录中创建一个名为“sql_api.conf”的文件(使用不同的名称制作所需的.conf文件,每个文件服务于不同的网站):
    2. <VirtualHost *:8083> ServerAdmin zia@gmail.com ServerName 160.75.133.175 ServerAlias http://160.75.133.175 <Directory /home/zia/Documents/Codes/Django/sql_api/ > Order deny,allow Allow from all </Directory> WSGIScriptAlias / /home/zia/Documents/Codes/Django/sql_api/root/wsgi.py WSGIDaemonProcess 160.75.133.175 user=www-data group=www-data threads=25 python-path=/home/zia/Documents/Codes/Django/sql_api/root/:/usr WSGIProcessGroup 160.75.133.175 ErrorLog /home/zia/Documents/Codes/Django/sql_api/root/error.log </VirtualHost>

      1. 在“/ home / zia / Documents / Codes / Django / sql_api / root /”中的wsgi.py文件中添加以下行:sys.path.append('/home/zia/Documents/Codes/Django/sql_api/root') sys.path.append('/home/zia/Documents/Codes/Django/sql_api')
      2. 在“/ etc / apache2 / sites-available”目录中运行以下命令:dir:sudo a2enmod wsgi && sudo a2ensite sql_api.conf && sudo service apache2 restart
      3. 打开http://160.75.133.175:8083/