Вопросы и ответы - Макхост

Как установить Django 1.9 в Макхосте?

Как установить Django 1.9 на виртуальном хостинге Макхоста на python 3.4?

25.01.2017   20:07
Сотрудник Краснов Сергей
 нет комментариев
ОТВЕТЫ НА ВОПРОС (1)
Сотрудник Краснов Сергей

Вам понадобится любой клиент, который поддерживает протокол SSH (например, putty). При помощи него заходим по SSH на сервер.

1) Создадим виртуальное окружение для Python:

mkdir -p $HOME/private/venvs && cd $_
python3.4 -m virtualenv myvenv

2) Устанавливаем необходимые пакеты:

myvenv/bin/pip install pip --upgrade
myvenv/bin/pip install mysqlclient django-fastcgi-server flup6 django

3) Создадим и настроим проект Django:

mkdir $HOME/private/app && cd $_
~/private/venvs/myvenv/bin/django-admin startproject myapp

Для того, чтобы можно было зайти на сайт, необходимо отредактировать настройки безопасности в файле ~/private/app/myapp/myapp/settings.py:

ALLOWED_HOSTS = []

Заменим на:

ALLOWED_HOSTS = ['ваш_сайт']

Настроим базу данных в том же файле:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

Заменим на:

DATABASES = {
    'default': {
        'HOST': 'aXXXX.mysql.mchost.ru',
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'aXXXX_db',
        'USER': 'aXXXX_user',
        'PASSWORD': 'пароль',
    }
}

Настроим статические файлы. Дополним всё тот же файл settings.py строкой:

STATIC_ROOT = '/home/httpd/vhosts/ваш_сайт/httpdocs/static'

Сохраним файл, выполним миграции, соберём статики:

cd $HOME/private/app/myapp
$HOME/private/venvs/myvenv/bin/python ./manage.py migrate
$HOME/private/venvs/myvenv/bin/python ./manage.py collectstatic

4) Создадим fcgi-скрипт mysite.fcgi в директории $HOME/cgi-bin/

#!/home/httpd/vhosts/ваш_сайт/private/venvs/myvenv/bin/python
import sys, os

sys.path.append('/home/httpd/vhosts/ваш_сайт/private/venvs/myvenv/lib/python3.4/site-packages')
sys.path.append('/home/httpd/vhosts/ваш_сайт/private/venvs/myvenv/lib64/python3.4/site-packages')
sys.path.append("/home/httpd/vhosts/ваш_сайт/private/app/myapp")

os.environ['DJANGO_SETTINGS_MODULE'] = "myapp.settings"

from django_fastcgi.servers.fastcgi import runfastcgi
from django.core.servers.basehttp import get_internal_wsgi_application

wsgi_application = get_internal_wsgi_application()
runfastcgi(wsgi_application, method="threaded", daemonize="false")

5) Выставим права для этого файла:

chmod 755 $HOME/cgi-bin/mysite.fcgi

6) Создадим файл .htaccess в папке с публичными документами $HOME/httpdocs:

AddHandler fcgid-script .fcgi
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(static/.*)$ - [L]
RewriteCond %{REQUEST_URI} !(cgi-bin/mysite.fcgi)
RewriteRule ^(.*)$ cgi-bin/mysite.fcgi/$1 [L]

В результате после перехода по URL вашего сайта должно быть следующее сообщение:

25 января, в 20:49
 4 комментария

Для ответа нужно зарегистрироваться или авторизоваться.