Установка Django
virtualenv
Устанавливаем pip и virtualenv:
Создаём новое виртуальное окружение:
Если вам нужно будет удалить виртуальное окружение, достаточно сделать
rm -rf ~/newproject/newenv/.
Теперь активировать окружение можно с помощью команды, запущенной из директории newproject.
Вы увидите, что после этой команды изменится приглашение интерпретатора bash: в начале появится (newenv).
Django
Установить Django в виртуальное окружение(не используемpip3, несмотря на третий Python!):
Для выхода из окружения (работает только в виртуальном окружении!):
Создаём Django-проект:
Далее устанавливаем нужную базу данных. Выбирайте одну из двух наиболее популярных:
PostgreSQL или MySQL
PostgreSQL
Устанавливаем пакеты
Запускаем консоль PostgreSQL
Некоторые приложения могут устанавливать расширения (extension) для PostgreSQL. Для этого нужно дать права суперпользователя базы новому пользователю:
Теперь можно выйти из консоли PostgreSQL
MySQL
Доступ к базе данных
Меняем настройки для доступа к базе данных. В settings.py прописываем:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'myproject', 'USER': 'myprojectuser', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': 5432, } }
Далее, стандартные действия:
После чего следует отобрать права суперпользователя для пользователя базы данных (если вы их выдавали).
nginx
Устанавливаем свежий nginx
Конфигурируем наш сервер
server { server_name pythonworld.club; # Подставьте свой домен listen 80; location /.well-known { root /var/www/html; # Понадобится для letsencrypt } # Статические файлы location = /favicon.ico { alias /home/steve/newproject/testforum/static/favicon.ico; } location = /robots.txt { alias /home/steve/newproject/testforum/static/robots.txt; } location /static/ { root /home/steve/newproject/testforum/; } location /media/ { root /home/steve/newproject/testforum/; } # Взаимодействуем с Django-приложением через unix-сокет location / { include proxy_params; proxy_pass http://unix:/home/steve/newproject/forum.sock; } }
gunicorn
Вернёмся в виртуальное окружение (если вы из него выходили), и установим gunicorn
Создадим файл конфигурации для gunicorn
[Unit] Description=gunicorn daemon After=network.target [Service] User=steve Group=www-data WorkingDirectory=/home/steve/newproject/testforum/ ExecStart=/home/steve/newproject/newenv/bin/gunicorn --access-logfile - --error-logfile error.log --workers 2 --bind unix:/home/steve/newproject/forum.sock testforum.wsgi:application [Install] WantedBy=multi-user.target
Теперь мы можем запустить gunicorn, а далее он будет автоматически запускаться при загрузке.
memcached
# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default # Note that the daemon will grow to this size, but does not start out holding this much # memory -m 256 # Ставим побольше, например 256Мб # Default connection port is 11211 #-p 11211 Комментируем, так как хотим связать с помощью UNIX-сокета # Run the daemon as root. The start-memcached will default to running as root if no # -u command is present in this config file -u memcache # Specify which IP address to listen on. The default is to listen on all IP addresses # This parameter is one of the only security measures that memcached has, so make sure # it's listening on a firewalled interface. #-l 127.0.0.1 Также комментируем # А UNIX-сокеты добавляем -s /tmp/memcached.sock -a 0766
Устанавливаем Python библиотеку (в виртуальное окружение) для связывания Django и memcached
В settings.py Django-проекта добавляем
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache', 'LOCATION': '/tmp/memcached.sock', } }
И, наконец, перезапускаем memcached
: