我正在尝试将Ubuntu VPS
托管在Apache/mod_wsgi
上的Django网站。如果我以嵌入式模式运行,则将加载网站。
WSGIScriptAlias / /home/admin/web/mywebsite/myproject/wsgi.py
WSGIPythonHome /home/admin/web/mywebsite/venv
WSGIPythonPath /home/admin/web/mywebsite
<Directory /home/admin/web/mywebsite/myproject>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
但是,如果尝试在daemon mode
中运行它,则会出现错误:ModuleNotFoundError: No module named 'myproject'
。
WSGIDaemonProcess myproject python-home=/home/admin/web/mywebsite/venv python-path=/home/admin/web/mywebsite socket-user=#1001
WSGIProcessGroup myproject
WSGIScriptAlias / /home/admin/web/mywebsite/myproject/wsgi.py
我的WSGI文件:
import os
from django.core.wsgi import get_wsgi_application
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
application = get_wsgi_application()
如果我运行manage.py命令,它将在嵌入式和守护程序模式下显示相同的ModuleNotFoundError错误。可能有什么问题吗?
[Mon Feb 24 09:00:37.333725 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] mod_wsgi (pid=7830): Target WSGI script '/home/admin/web/mywebsite/myproject/wsgi.py' cannot be loaded as Python module.
[Mon Feb 24 09:00:37.333768 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] mod_wsgi (pid=7830): Exception occurred processing WSGI script '/home/admin/web/mywebsite/myproject/wsgi.py'.
[Mon Feb 24 09:00:37.334090 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] Traceback (most recent call last):
[Mon Feb 24 09:00:37.334124 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "/home/admin/web/mywebsite/myproject/wsgi.py", line 16, in <module>
[Mon Feb 24 09:00:37.334127 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] application = get_wsgi_application()
[Mon Feb 24 09:00:37.334131 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "/home/admin/web/mywebsite/venv/lib/python3.6/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[Mon Feb 24 09:00:37.334133 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] django.setup(set_prefix=False)
[Mon Feb 24 09:00:37.334136 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "/home/admin/web/mywebsite/venv/lib/python3.6/site-packages/django/__init__.py", line 19, in setup
[Mon Feb 24 09:00:37.334139 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
[Mon Feb 24 09:00:37.334142 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "/home/admin/web/mywebsite/venv/lib/python3.6/site-packages/django/conf/__init__.py", line 76, in __getattr__
[Mon Feb 24 09:00:37.334144 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] self._setup(name)
[Mon Feb 24 09:00:37.334147 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "/home/admin/web/mywebsite/venv/lib/python3.6/site-packages/django/conf/__init__.py", line 63, in _setup
[Mon Feb 24 09:00:37.334149 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] self._wrapped = Settings(settings_module)
[Mon Feb 24 09:00:37.334152 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "/home/admin/web/mywebsite/venv/lib/python3.6/site-packages/django/conf/__init__.py", line 142, in __init__
[Mon Feb 24 09:00:37.334154 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] mod = importlib.import_module(self.SETTINGS_MODULE)
[Mon Feb 24 09:00:37.334157 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
[Mon Feb 24 09:00:37.334159 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] return _bootstrap._gcd_import(name[level:], package, level)
[Mon Feb 24 09:00:37.334162 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "<frozen importlib._bootstrap>", line 994, in _gcd_import
[Mon Feb 24 09:00:37.334165 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "<frozen importlib._bootstrap>", line 971, in _find_and_load
[Mon Feb 24 09:00:37.334169 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
[Mon Feb 24 09:00:37.334172 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
[Mon Feb 24 09:00:37.334175 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "<frozen importlib._bootstrap>", line 994, in _gcd_import
[Mon Feb 24 09:00:37.334178 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "<frozen importlib._bootstrap>", line 971, in _find_and_load
[Mon Feb 24 09:00:37.334188 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
[Mon Feb 24 09:00:37.334197 2020] [wsgi:error] [pid 7830] [remote 5.187.171.36:18335] ModuleNotFoundError: No module named 'myproject'
尝试使用此方法进行部署。在nginx释放nginx单元之后,您最忘记了gunicorn,AWS弹性beantalk(EB)和在nginx上部署django的旧方法。
仅使用nginx单元来部署django应用程序,问题就已经解决了。
本教程可帮助您快速,安全地部署django,并且性能比gunicorn和uwsgi高得多