在 Apache 和 WSGI 上部署 Django

Deploying Django on Apache and WSGI

虽然我找到了一堆使用 WSGI 在 Apache 上部署 Django 的技术支持,但不幸的是,事实上他们都让我感到困惑,我无法获得 Django 运行。我希望这是一份真正轻松的工作,但作为一个新手,我面临着困难。

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

Apache,mod_wsgi 一切都已按要求安装。如何编辑 apache2.conf 和 wsgi.py 文件使这两个项目 运行 通过端口 8080 和 8081?

过去几天我一直在为这个问题苦苦挣扎,并尝试了以下所有网站。

link1,link2,link3,link4


更新 1:

我从一开始就遵循以下方法使事情进展顺利,但发现自己遇到了一些新问题。请指导我哪里错了。

  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”文件中编辑以下代码:

<Directory /> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>

  1. 在“/etc/apache2/sites-available/”目录中创建一个名为 "sql_api.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. 运行 以下命令在“/etc/apache2/sites-available”目录中: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

注意:当我在 /var/www/ 目录中制作一个 Django 项目然后执行相同的方法然后工作正好!我想因为我正在尝试访问 /home/zia/.... 目录,所以存在这个问题。无论如何,这只是一个猜测。非常感谢您的帮助。

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

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

这里很好地解释了如何使用 apache 设置虚拟主机。不过,这假设您正在使用 ubuntu 。

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

您的虚拟主机(该文件应以您的域名命名...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 应用程序的位置。

因此,如果您使用的是 ubuntu 或 linux,您可能只想卸载 Apache 并重新安装,然后按照数字海洋说明进行设置。

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

  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”文件中编辑以下代码:

<Directory /> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>

  1. 在“/etc/apache2/sites-available/”目录中创建一个名称为 "sql_api.conf" 的文件(使用不同的名称制作尽可能多的 .conf 文件,每个文件服务于不同的网站):

<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”目录中:sudo a2enmod wsgi && sudo a2ensite sql_api.conf && sudo service apache2 restart
  3. 打开http://160.75.133.175:8083/