# WRONG:
# add the virtualenv site-packages path to the sys.path
sys.path.append('/home/ubuntu/.local/lib/python3.6/site-packages')
Вы должны создать virutalenv для каждого приложения uwsgi, которое вы хотите разместить на сервере, вместо того, чтобы устанавливать virtualenv для указанного выше пути. Если вы следовали по ссылке слово за словом, то это часть, которая нуждается в дополнительном объяснении:
Сделайте virtualenv и установите свои требования к пунктам
По существу:
# install virtualenv3
sudo apt-get install virtualenv3
# create the virtual environment, specifically for the stated python version
virtualenv -p python3.6 TITLE_OF_VENV
# You now have a directory called TITLE_OF_VENV (You may wish to replace this
# with something more subtle).
# Activate the virtualenv for your current shell session
. TITLE_OF_VENV/bin/activate
# The dot above is intentional and is a quick way to write source, which
# imports the environment vars
Ваше приглашение оболочки теперь должно выглядеть следующим образом: (TITLE_OF_VENV) ubuntu@ip-172-31-61-163:~/project/ToDo-application$
, указывающее, что venv активен. Чтобы выйти из venv, выполните команду deactivate
.
Все, что вы устанавливаете с помощью pip здесь, будет затем находиться в каталоге TITLE_OF_VENV/python3.6/site-packages
(пока эта виртуальная среда активна). Преимущество заключается в том, что отдельные требования к проекту разделены.
Проверка версии Python (с активным venv):
(TITLE_OF_VENV)$ python --version
Python 3.6
Теперь установите gunicorn в эту виртуальную среду вместе с любыми другими требованиями проекта:
(TITLE_OF_VENV)$ pip install gunicorn
(TITLE_OF_VENV)$ pip install -r requirements.txt
Обновите свой uwsgi.py:
import os
# poiting to the project settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "todo_app.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
А затем запустите его из виртуальной среды:
(TITLE_OF_VENV)$ gunicorn todo_app.wsgi:application
Вы также можете добавить флаг -D
к команде gunicorn, что заставит его работать в фоновом режиме. Также не делайте этот сервер общедоступным. Если это производственная коробка, вам нужно запустить ее за nginx
!