虽然我已经找到了大量的技术支持,使用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上运行?
过去几天我一直在努力解决这个问题,并尝试了以下所有网站。
UPDATE1:
我从一开始就采用了以下方法,以使事情顺利进行,但发现自己处于一些新问题。请指导我错误的地方。
sudo apt-get install libapache2-mod-wsgi && sudo apt-get update && sudo apt-get install apache2
Listen 8083
160.75.133.175 160.75.133.175
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<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>
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 /.... dir,所以存在这个问题。无论如何,这只是猜测。我很感激你的帮助。
答案 0 :(得分:2)
您需要做的是将apache下的两个站点都设置为虚拟主机。安装apache之后,有一个名为sites-available和sites-enabled的文件夹,它们应该包含带有网站项目名称的虚拟主机文件。每个虚拟主机都将指向您的.wsgi文件所在的位置。这些虚拟主机通常在相同的端口号下监听(如上面提到的丹尼尔),但是根据域名为任何应用程序提供服务。 noobmovies.com google.com等...
如何使用apache设置虚拟主机在这里得到了很好的解释。这假设您使用的是ubuntu。
您的虚拟主机(该文件应以您的域名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)
感谢大家。终于找到了工作程序。按顺序执行以下步骤:
sudo apt-get install libapache2-mod-wsgi && sudo apt-get update && sudo apt-get install apache2
Listen 8083
160.75.133.175 160.75.133.175
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<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>
sys.path.append('/home/zia/Documents/Codes/Django/sql_api/root')
sys.path.append('/home/zia/Documents/Codes/Django/sql_api')
sudo a2enmod wsgi && sudo a2ensite sql_api.conf && sudo service apache2 restart
http://160.75.133.175:8083/