无法在 Apache 上部署官方 Django 教程 (mod_wsgi)
Cannot deploy Official Django tutorial on Apache (mod_wsgi)
我知道这个问题似乎已经被问过和回答过很多次,但我现在已经浪费了超过 48 小时尝试其他答案提供的各种方法,但我似乎无法将官方 django 教程部署到我的本地 Apache 网络服务器(Ubuntu 18.04、Python 3.6.5 上的 Apache 2.4)。这是我所做的。
我创建了一个虚拟环境
virtualenv outlier
cd outlier
pip3 install django
django-admin startproject mysite
我创建了我的应用程序并安装了适合我的 python 版本的 mod_wsgi 版本(我尝试了 apt install
和 setup.py install
方法)。
然后我配置/etc/apache2/sites-enabled/000-default.conf如下:
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
<VirtualHost *:80>
LogLevel info
DocumentRoot /srv/outlier
ServerName outlier.tuhao
WSGIDaemonProcess outlier user=www-data group=www-data python-path="/srv/outlier" python-home="/srv/outlier/lib/python3.6/site-packages"
WSGIProcessGroup outlier
WSGIScriptAlias / /srv/outlier/outlier/wsgi.py
<Directory /srv/outlier>
Require all granted
</Directory>
</VirtualHost>
为了保险起见,我还做了一个 sudo chown -R www-data:www-data /srv/
和一个 sudo chmod -R 777 /srv/
来避免任何权限问题。
并使用 sudo service apache2 restart
重新启动了 Apache。不幸的是,重新启动后,apache 日志立即开始不断发送以下垃圾邮件:
Current thread 0x00007faa78e0abc0 (most recent call first): [Mon Jun
04 15:34:55.664080 2018] [core:notice] [pid 1932] AH00051: child pid
5058 exit signal Aborted (6), possible coredump in /etc/apache2 Fatal
Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'
我应该先问问题(也许不发帖),因为我总是很快就会找到解决方案。
这一行:
WSGIDaemonProcess outlier user=www-data group=www-data python-path="/srv/outlier" python-home="/srv/outlier/lib/python3.6/site-packages"
需要变成这一行:
WSGIDaemonProcess outlier user=www-data group=www-data python-path="/srv/outlier" python-home="/srv/outlier"
我发誓我以前尝试过但没有成功,但在那个阶段可能还有其他不对的地方。
我将把问题和答案留在这里,以供其他可能来自教程但不知道下一步该做什么的人使用。或者管理员可以根据需要删除。
我知道这个问题似乎已经被问过和回答过很多次,但我现在已经浪费了超过 48 小时尝试其他答案提供的各种方法,但我似乎无法将官方 django 教程部署到我的本地 Apache 网络服务器(Ubuntu 18.04、Python 3.6.5 上的 Apache 2.4)。这是我所做的。
我创建了一个虚拟环境
virtualenv outlier
cd outlier
pip3 install django
django-admin startproject mysite
我创建了我的应用程序并安装了适合我的 python 版本的 mod_wsgi 版本(我尝试了 apt install
和 setup.py install
方法)。
然后我配置/etc/apache2/sites-enabled/000-default.conf如下:
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
<VirtualHost *:80>
LogLevel info
DocumentRoot /srv/outlier
ServerName outlier.tuhao
WSGIDaemonProcess outlier user=www-data group=www-data python-path="/srv/outlier" python-home="/srv/outlier/lib/python3.6/site-packages"
WSGIProcessGroup outlier
WSGIScriptAlias / /srv/outlier/outlier/wsgi.py
<Directory /srv/outlier>
Require all granted
</Directory>
</VirtualHost>
为了保险起见,我还做了一个 sudo chown -R www-data:www-data /srv/
和一个 sudo chmod -R 777 /srv/
来避免任何权限问题。
并使用 sudo service apache2 restart
重新启动了 Apache。不幸的是,重新启动后,apache 日志立即开始不断发送以下垃圾邮件:
Current thread 0x00007faa78e0abc0 (most recent call first): [Mon Jun 04 15:34:55.664080 2018] [core:notice] [pid 1932] AH00051: child pid 5058 exit signal Aborted (6), possible coredump in /etc/apache2 Fatal Python error: Py_Initialize: Unable to get the locale encoding ModuleNotFoundError: No module named 'encodings'
我应该先问问题(也许不发帖),因为我总是很快就会找到解决方案。
这一行:
WSGIDaemonProcess outlier user=www-data group=www-data python-path="/srv/outlier" python-home="/srv/outlier/lib/python3.6/site-packages"
需要变成这一行:
WSGIDaemonProcess outlier user=www-data group=www-data python-path="/srv/outlier" python-home="/srv/outlier"
我发誓我以前尝试过但没有成功,但在那个阶段可能还有其他不对的地方。
我将把问题和答案留在这里,以供其他可能来自教程但不知道下一步该做什么的人使用。或者管理员可以根据需要删除。