В тази статия ще откриете инструкции за настройка на Django проект във Вашия хостинг акаунт, който използва PostgreSQL за база данни чрез платформата за уеб приложения WebApps.

Подготовка

Преди да инсталирате Django на Вашия акаунт, трябва да проверите и настроите следните неща:

  • Трябва да имате раздел "Уеб приложения" във Вашия хостинг Контролен панел. Ако нямате такъв раздел, тогава инструкциите в тази статия не са валидни за Вашия акаунт и сървър. Можете да ни пишете за повече информация и съдействие.

  • "SSH достъп" и "Мрежови инструменти" трябва да са активирани за Вашия акаунт през раздел "SSH Достъп" на Контролния панел.

Бърза настройка

Ако искате да настроите своя Django проект бързо, първо трябва да създадете PostgreSQL сървър. Препоръчваме Ви да използвате shell скрипта от раздел "Бърза настройка". Той ще настрои Вашия PostgreSQL сървър с нужните данни за инсталиране на Django.

След като PostgreSQL работи на Вашия акаунт, изтеглете скрипта за инсталиране на Django на Вашия акаунт и го изпълнете. Скриптът ще настрои WebApps проект за Вашия Django сайт.

Имайте предвид, че скриптът за инсталиране на Django автоматично ще настрои PostgreSQL данни за Вашето Django приложение, така че няма да се наложи да го правите ръчно. За целта, изпълнете двата скрипта последователно:

# Set up PostgreSQL
setup_postgresql.sh

# This sets up $PGHOST in the shell environment
. ~/.bashrc

# Set up Django
mv 4867.sh setup_django.sh
chmod 755 setup_django.sh
./setup_django.sh

В този случай можете директно да преминете към раздел "Пускане на Django сайт" на тази статия.

Инсталиране

Преди да започнете инсталацията трябва да се уверите, че сте настроили и активирали PostgreSQL сървър на Вашия акаунт и променливата за средата "$PGHOST" е настроена във Вашата конзола. Повече информация за настройката на PostgreSQL сървър можете да намерите в статията ни "Използване на PostgreSQL".

Следващата стъпка е създаването на директория за Вашия нов Django сайт:

sureapp_project="django1"
django_project_dir="/home/$USER/private/$sureapp_project"
mkdir -p "$django_project_dir/sureapp"

След това настройте база с данни:

[ -z "$PGHOST" ] && . /home/$USER/.bashrc
if [ -n "$PGHOST" ]
then
    pguser="$sureapp_project"
    pgpass="$(pwgen 24 1)"
    pgdb="${sureapp_project}_db"
    printf "CREATE ROLE %s PASSWORD '%s' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;" "$pguser" "$pgpass" | psql postgres
    createdb --owner "$pguser" "$pgdb" && printf "Database %s created successfully.\n" "$pgdb"
fi

virtualenv

Django работи чрез Python, за който е добре да се създава изолирана среда за всяко отделно приложение. Можете да направите това чрез virtualenv:

mkdir -p "/home/$USER/.local/bin"
grep -q '^PATH=.*/.local/bin' "/home/$USER/.bashrc" || printf '\nPATH="/home/%s/.local/bin:$PATH"\nexport PATH\n' "$USER" >> "/home/$USER/.bashrc"
PATH="/home/$USER/.local/bin:$PATH"
export PATH
pip3 install virtualenv
virtualenv --system-site-packages -p /usr/bin/python3 "$django_project_dir/venv"
. "$django_project_dir/venv/bin/activate"

По този начин всички нужни Python скриптове за приложението Ви ще се използват само за конкретния проект.

Нужни Python скриптове

Инсталирайте всички нужни Python скриптове за Вашия Django сайт:

pip3 install psycopg2 whitenoise gunicorn Django
  • psycopg2 е адаптер за PostgreSQL бази данни;
  • whitenoise е статичен файлов сървър, който е изключително удобен за Django;
  • gunicorn е много сигурен и производителен WSGI сървър;
  • Django е пакетът, който включва Django работната среда.

Django проект

Следващата стъпка е да настроите Вашия Django проект:

django-admin startproject "$sureapp_project" "$django_project_dir"
django_project_settings_file="$django_project_dir/$sureapp_project/settings.py"
sed -i 's/^DEBUG = .*/DEBUG = False/' "$django_project_settings_file"
sed -i "s/^ALLOWED_HOSTS = .*/ALLOWED_HOSTS = ['*']/" "$django_project_settings_file"
cat <<POSTGRES_CONFIG >> "$django_project_settings_file"
DATABASES['default'] = {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': '$pgdb',
    'USER': '$pguser',
    'PASSWORD': '$pgpass',
    'HOST': '$PGHOST',
}
POSTGRES_CONFIG
cat <<STATICFILES_CONF >> "$django_project_settings_file"
import os STATIC_ROOT = os.path.join(BASE_DIR, 'static') MIDDLEWARE.append('whitenoise.middleware.WhiteNoiseMiddleware') STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' STATICFILES_CONF python3 "$django_project_dir/manage.py" migrate python3 "$django_project_dir/manage.py" collectstatic

Създаване на WebApps проект

Създайте WebApps проект за Django чрез следната sureapp команда:

sureapp project create \
    --engine "custom" \
    --engine-version "-" \
    --release-dir "$django_project_dir/sureapp" \
    --start-cmd "$django_project_dir/start.sh" \
    "$sureapp_project"

Тази стъпка е необходима, защото от нея ще се определи порта за Вашия Django проект.

WSGI сървър

Gunicorn е сигурен и производителен WSGI сървър. Най-лесният начин да го настроите е чрез използването на стартов скрипт:

wsgi_port="$(sureapp project list | grep "$sureapp_project" | awk '{print $5}')"
cat <<START_SH > "$django_project_dir/start.sh"
#!/bin/sh
cd "$django_project_dir"
. "$django_project_dir/venv/bin/activate"
exec gunicorn -b "127.0.0.1:$wsgi_port" -w 4 "$sureapp_project.wsgi:application"
START_SH
chmod 0700 "$django_project_dir/start.sh"

Скрипт за управление

Въпреки че не е задължително, създавайки скрипт за управление на Django приложението Ви, ще улесните извършването на промени по Django приложението чрез командния ред много по-лесно. Скриптът ще взима и ще се съобразява с настройките на настроена среда за Django, така че да не се налага да правите това ръчно всеки път, когато искате да използвате manage.py скрипта в инсталационната директория на Django.

cat <<MANAGE_SH > "$django_project_dir/manage.sh"
#!/bin/sh
. "$django_project_dir/venv/bin/activate"
exec python3 "$django_project_dir/manage.py" "\$*"
MANAGE_SH
chmod 0700 "$django_project_dir/manage.sh"
ln -s "$django_project_dir/manage.sh" "/home/$USER/.local/bin/manage-$sureapp_project"

С този скрипт за управление можете да се свържете с акаунта си чрез SSH и директно да използвате командата в директорията на Вашия Django проект. Ако Вашият Django проект се казва "django1" (както е в дадения пример), можете да използвате следната команда, за да видите наличните опции за управление:

manage-django1 help

Този скрипт ще бъде наличен за Вашето Django приложение, ако сте използвали скрипта за бърза настройка.

Пускане на Django сайт

WebApps проект

Завършете настройката на WebApps проекта, за да зададете URL адреса, на който да е достъпно Django приложението. Тъй като WebApps проектът е вече създаден, използвайте бутона с иконка на молив (Промени) до проекта "django1" и изберете домейна и поддомейна чрез съответните падащи менюта в показалия се екран:

Промяна на Django WebApps проект

Ако искате да използвате Django приложението в отделен поддомейн, първо трябва да го създадете през раздел "Поддомейни" на хостинг Контролния панел.

Стартирайте приложението чрез бутона с иконка на червен кръг (Enable app) до него.

Активиране на Django WebApps проект

 

Влизане в Django

За да създадете нов потребител с административни права за Вашия Django проект (напр. с име "django1"), използвайте следната команда чрез скрипта за управление, описан по-рано в статията:

manage-django1 createsuperuser

След успешното задаване на изисканите данни, ще можете да влезете като администратор с тях във Вашия нов Django сайт.

Можете да достъпите административния интерфейс на Django на избрания адрес (домейн/поддомейн) за WebApps проекта, добавяйки "/admin". Ако сте настроили Django да работи на "http://django.example.com", административния интерфейс ще е достъпен на "http://django.example.com/admin/".

Django административен интерфейс