在 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?
过去几天我一直在为这个问题苦苦挣扎,并尝试了以下所有网站。
更新 1:
我从一开始就遵循以下方法使事情进展顺利,但发现自己遇到了一些新问题。请指导我哪里错了。
- 正在安装 mod-wsgi 和 apache2:
sudo apt-get install libapache2-mod-wsgi && sudo apt-get update && sudo apt-get install apache2
- 通过更改文件“/etc/apache2/ports.conf”将 apache2 端口编辑为 8083,而不是 80:
Listen 8083
- 将以下行添加到“/etc/hosts”文件中:
160.75.133.175 160.75.133.175
- 在“/etc/apache2/apache2.conf”文件中编辑以下代码:
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- 在“/etc/apache2/sites-available/”目录中创建一个名为 "sql_api.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>
- 运行 以下命令在“/etc/apache2/sites-available”目录中:
sudo a2enmod wsgi && sudo a2ensite sql_api.conf && sudo service apache2 restart
- 打开
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 。
您的虚拟主机(该文件应以您的域名命名...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 并重新安装,然后按照数字海洋说明进行设置。
感谢大家。终于找到了工作程序。按顺序执行以下步骤:
- 正在安装 mod-wsgi 和 apache2:
sudo apt-get install libapache2-mod-wsgi && sudo apt-get update && sudo apt-get install apache2
- 通过更改文件“/etc/apache2/ports.conf”将 apache2 端口编辑为 8083,而不是 80:
Listen 8083
- 将以下行添加到“/etc/hosts”文件中:
160.75.133.175 160.75.133.175
- 在“/etc/apache2/apache2.conf”文件中编辑以下代码:
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- 在“/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>
- 在“/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')
- 运行 以下命令在“/etc/apache2/sites-available”目录中:
sudo a2enmod wsgi && sudo a2ensite sql_api.conf && sudo service apache2 restart
- 打开
http://160.75.133.175:8083/
虽然我找到了一堆使用 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?
过去几天我一直在为这个问题苦苦挣扎,并尝试了以下所有网站。
更新 1:
我从一开始就遵循以下方法使事情进展顺利,但发现自己遇到了一些新问题。请指导我哪里错了。
- 正在安装 mod-wsgi 和 apache2:
sudo apt-get install libapache2-mod-wsgi && sudo apt-get update && sudo apt-get install apache2
- 通过更改文件“/etc/apache2/ports.conf”将 apache2 端口编辑为 8083,而不是 80:
Listen 8083
- 将以下行添加到“/etc/hosts”文件中:
160.75.133.175 160.75.133.175
- 在“/etc/apache2/apache2.conf”文件中编辑以下代码:
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- 在“/etc/apache2/sites-available/”目录中创建一个名为 "sql_api.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>
- 运行 以下命令在“/etc/apache2/sites-available”目录中:
sudo a2enmod wsgi && sudo a2ensite sql_api.conf && sudo service apache2 restart
- 打开
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 。
您的虚拟主机(该文件应以您的域名命名...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 并重新安装,然后按照数字海洋说明进行设置。
感谢大家。终于找到了工作程序。按顺序执行以下步骤:
- 正在安装 mod-wsgi 和 apache2:
sudo apt-get install libapache2-mod-wsgi && sudo apt-get update && sudo apt-get install apache2
- 通过更改文件“/etc/apache2/ports.conf”将 apache2 端口编辑为 8083,而不是 80:
Listen 8083
- 将以下行添加到“/etc/hosts”文件中:
160.75.133.175 160.75.133.175
- 在“/etc/apache2/apache2.conf”文件中编辑以下代码:
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- 在“/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>
- 在“/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')
- 运行 以下命令在“/etc/apache2/sites-available”目录中:
sudo a2enmod wsgi && sudo a2ensite sql_api.conf && sudo service apache2 restart
- 打开
http://160.75.133.175:8083/