Как загрузить django сайт на beget
Перейти к содержимому

Как загрузить django сайт на beget

  • автор:

Установка и настрока Django проекта на хостинге Beget

Мой сайт работает на хостинге Beget и написан с ипользованием Python и фреймворка Django. Бегет хорошо подходит для размещения небольших проектов как этот. В этой статье раскажу как хостить Django-проект на Бегете.

Для начала создадим сайт в панели администратора

  1. Создадим домен и прекрепим для него новую папку с каким-нибудь именем
  2. В разделе CMS, главного меню хостинга, выберем Django и установим каркас приложения

После установки фреймворка в конреновой директории можно найти файл README.txt следующего содержания

Django установленный системой автоматической установки cms LTD BEGET
Действия описанные ниже необходимо выполнять в docker-окружении выполнив команду ниже ssh localhost -p222
для установки дополнительных модулей используйте pip
сам Django располагается в папке
/home/u/username/site-directory/public_html/venv/ для начала надо переключиться на текущий virtualenv
заходим в папку с проектом
cd /home/u/username/site-directory/public_html
source venv/bin/activate

проверяем правильно ли определился путь до pip:
which pip
/home/u/username/site-directory/public_html/venv/bin/pip

теперь мы можем пользоваться pip’ом для установки модулей не указывая полного пути до исполняемого файла:
pip install
где имя модуля который мы хотим установить
Для перезапуска passenger в папке проекта достаточно выполнить команду touch на пустом файле restart.txt
pwd
/home/u/username/site-directory/public_html/HelloDjango/HelloDjango/tmp
touch restart.txt

Создание репозитория

Создайте репозиторий на любом из сервесов: Github, Bitbucket или Gitlab. Не рекомендуется хранить данные для подключения к базе данных в репозитории. Но если вы решили так сделать, не забудьте создать приватный репозиторий.
В личного кабинета в сайдбаре нужно включить SSH-доступ.

Подключимся к хостингу по ssh:

Пароль для доступа такой же как и от личного кабинета

Зайдем в docker-контейнер:

ssh localhost -p 222

Пароль для доступа такой же как и от личного кабинета

Инициализируем репозиторий в директории /public_html:

git commit -m «Initial commit»

Добавим ссылку на внешний репозиторий:

git add remotename url

Проверим, что репозиторий добавлен:

origin https://github.com/username/repository (fetch)

origin https://github.com/username/repository (push)

Привяжем ветку master к внешней ветке и отправим файлы в репозиторий:

git branch —set-upstream-to=origin/master

Теперь можно разрабатывать сайт на локальной машине. Когда нужно будет перенести сайт на сервер нужно выполнить одну команду и поправить конфигурационные файлы, если потребуется

Django

На хостинге нужно создать сайт и прикрепить к нему домен.

Не забудьте разрешить подключение по FTP и SSH

Docker

Сначала необходимо подключиться к серверу по SSH:

Для этого понадобится имя пользователя на хостинге — это может быть как администратор, так и специально созданный ftp аккаунт.

Вместо username введите имя аккаунта у которо есть доступ к хостингу

Вместо website_url.com — ваш домен либо IP address

После того, как вы зашли на хостинг — нужно активировать виртуальное окружение

Для перехода в виртуальное окружение Docker нужно выполнить следующую команду:

ssh localhost -p222

После чего возможно придётся ещё раз ввести пароль для доступа к аккаунту.

Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.9.132-0-beget-acl x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage

Python

Проверить, установлены ли python3 и pip можно командами

python3 -V
pip3 -V

Python 3.7.0
pip 20.1 from /home/u/user/.local/lib/python3.7/site-packages/pip (python 3.7)

Проверить где находится python3 можно командой

Если Python не установлен или вам нужна более свежая версия — можно выполнить установку вручную

Установка Python

Подробнее про установку программ в Linux с помощью configure_make_make-install читайте здесь

/.local/include/ (docker) login@server:

Затем нужно в .bashrc данного аккаунта прописать $PATH до директории

/.local/bin/ или алиас для python3,

Проверим путь до python3

[0] $ which python3

Этот путь нам и нужно прописать в PATH. Отбросим только /python3

И перезапустить .bashrc

Виртуальное окружение

Часто полезно пользоваться виртуальным окружением. Создавать их можно разными способами, например с помощью:

  • venv
  • virtualenv
  • anaconda

python3 -m venv venv_django
source venv_django/bin/activate

Обычно при активации виртуального окружения в терминале перед именем пользователя появляется называние окружения в круглых скобках.

Внутри containerа вы скорее всего уже видите (docker) а название окружения может и не появиться.

To проверить перешли вы в окружение или нет executei

Как вы можете проверить здесь — до входа в окружение использовался другой Python

Либо перейдите в интерактивный режим

Выполните две команды

Они должны показать разный результат

Установка Django

Первым делом советую обновить pip

python3 -m pip install —upgrade pip

Затем непосредственно установить Django

python3 -m pip install django

python3 -m django —version

python3 -m pip list

Package Version —————— ——— asgiref 3.3.4 Django 3.2.4 pip 21.1.2 pytz 2021.1 setuptools 39.0.1 sqlparse 0.4.1 typing-extensions 3.10.0.0

/HelloDjango [0] $ python3 -m django Type 'python -m django help ' for help on a specific subcommand. Available subcommands: [django] check compilemessages createcachetable dbshell diffsettings dumpdata flush inspectdb loaddata makemessages makemigrations migrate runserver sendtestemail shell showmigrations sqlflush sqlmigrate sqlsequencereset squashmigrations startapp startproject test testserver Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.). (docker) aredel.com@server:

/HelloDjango [0] $ ls HelloDjango manage.py (docker) aredel.com@server:

/HelloDjango [0] $ python3 manage.py runserver Performing system checks. System check identified no issues (0 silenced). You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. February 03, 2019 — 18:50:29 Django version 2.1.5, using settings 'HelloDjango.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

python3 manage.py migrate

Структура директорий для Django изображение с сайта www.aredel.com

Запуск первого проекта в Django

Запуск Django

Переходим в директорию в которой нужно создать проект. Например в public_html.

django-admin startproject Project_Name

После удачного выполнения этой команды создаётся директория Project_Name , внутри которой будет находится файл manage.py и ещё одна директория с таким же именем — Project_Name.

Внутри вложенной директории Project_Name находятся файлы

WSGI расшифровывается как Web Server Gateway Interface.

Это стандарт взаимодействия между Python-программой, выполняющейся на стороне сервера, и самим веб-сервером, например Apache

Пример файла manage.py

#!/usr/bin/env python «»»Django's command-line utility for administrative tasks.»»» import os import sys def main(): «»»Run administrative tasks.»»» os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Project_Name.settings') try: from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( «Couldn't import Django. Are you sure it's installed and » «available on your PYTHONPATH environment variable? Did you » «forget to activate a virtual environment?» ) from exc execute_from_command_line(sys.argv) if __name__ == '__main__': main()

wsgi.py

Для настройки wsgi.py понадобятся путь до Django и путь до проекта.

Путь до Django можно получить выполнив

python3 -c «import django; print(django.get_version()); print(django.__file__)»

Внутри вложенной директории Project_Name находятся файлы

Запуск сервера

Из той же директории в которой находится скрипт manage.py вводим команду

python3 manage.py runserver

Performing system checks.

System check identified no issues (0 silenced).
February 06, 2019 — 20:54:38
Django version 2.1.5, using settings 'Project_Name.settings'
Starting development server at http://127.0.0.1:8000/

В каждом проекте (project) обычно используется одно или несколько приложений (application)

Когда все приложения и конфигурации объединены они составляют веб-приложение.

applications + configurations = web application

Создаём первое приложение

python3 manage.py startapp first_app

Появится директория first_app в которой будут следующие файлы

Создаём view и связываем с url

Переходим в директорию Project_Name/Project_Name

Редактируем файл Project_Name/Project_Name/settings.py

Нужно добавить в список установленных приложений наше новое приложение first_app

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'first_app', ]

python3 manage.py runserver

Если перезапуск осуществляется с помощью скрипта выполняем (насколько я знаю, это актуально для хостингов beget и dreamhost)

Работа с Django на хостинге Beget

Итак первым делом нужно в паели веб-сервера включить доступ по ssh для вашего аккаунта.

Далее подключаемся к нашему хостингу из терминала

попав на сервер переходим в docker — окружение

Прежде чем идти дальше, предполагается, что у вас уже установлен Python на хостинге. Как устанавливать цитировать руководство не буду, просто оставлю ссылку на него, где все подробно расписано. В моем случае, нужно было установить Python 3, что я и сделал.

На сервере уже по умолчанию установлен git, поэтому переходим в папку Django приложения, обновляем проект командой, разумеется предварительно нужно инициировать репозиторий git

А также копируем статику:

/.local/bin/python3.5 ./manage.py collectstatic

После завершения настройки окружения необходимо создать каталог tmp, где будет хранится файл restart.txt:

Пересоздание tmp/restart.txt применяет новые изменения в проекте.

На этом пожалуй все, Очень качественный и недорогой хостинг, всем советую!

Как загрузить django сайт на beget

ssh localhost -p222

Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.9.132-0-beget-acl x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage

Python

python3 -V
pip3 -V

Python 3.7.0
pip 20.1 from /home/u/user/.local/lib/python3.7/site-packages/pip (python 3.7)

Установка новой версии Python

Установка Python

/.local/include/ (docker) login@server:

[0] $ which python3

  • venv
  • virtualenv
  • anaconda

python3 -m venv venv_django
source venv_django/bin/activate

Установка Django

python3 -m pip install —upgrade pip

python3 -m pip install django

python3 -m django —version

python3 -m pip list

Package Version —————— ——— asgiref 3.3.4 Django 3.2.4 pip 21.1.2 pytz 2021.1 setuptools 39.0.1 sqlparse 0.4.1 typing-extensions 3.10.0.0

Структура директорий для Django изображение с сайта www.andreyolegovich.ru

Запуск первого проекта в Django

django-admin startproject Project_Name

__init__.py
settings.py
urls.py
wsgi.py

#!/usr/bin/env python «»»Django’s command-line utility for administrative tasks.»»» import os import sys def main (): «»»Run administrative tasks.»»» os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘Project_Name.settings’) try : from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( «Couldn’t import Django. Are you sure it’s installed and » «available on your PYTHONPATH environment variable? Did you » «forget to activate a virtual environment?» ) from exc execute_from_command_line(sys.argv) if __name__ == ‘__main__’: main()

passenger_wsgi.py

cd /home/u/user/site.ru
touch passenger_wsgi.py

python3 -c «import django; print(django.get_version()); print(django.__file__)»

# -*- coding: utf-8 -*- import os import sys from django.core.wsgi import get_wsgi_application sys.path.insert( 0 , ‘/home/u/user/site.ru/public_html/Project_Name’ ) sys.path.insert( 1 , ‘/home/u/user/site.ru/venv_django/lib/python3.7/site-packages’ ) os.environ[ ‘DJANGO_SETTINGS_MODULE’ ] = ‘Project_Name.settings’ application = get_wsgi_application()

applications + configurations = web application

python3 manage.py startapp first_app

settings.py

INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘first_app’, ]

/site.ru [0] $ touch tmp/restart.txt

python3 manage.py runserver

Performing system checks.

System check identified no issues (0 silenced).
February 06, 2019 — 20:54:38
Django version 2.1.5, using settings ‘Project_Name.settings’
Starting development server at http://127.0.0.1:8000/

Начинаем развертывание Django-сайта на хостинге


Администратор и владелец сайта не несут ответственности за содержание и достоверность информации, размещенной в текстах сообщений и мнениях посетителей сайта.
Все сообщения и информация, размещенные посетителями сайта, являются выражением субъективного мнения, личной оценки лица, разместившего сообщение.
Мнение авторов комментариев может не совпадать с мнением администрации сайта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *