Найти в Дзене
О технологиях

Хостинг Django-проекта. Как сделать чтобы Django-сайт был виден всем

В этой статье будет описание того, как разместить готовый веб-ресурс на хостинге. Пример выполненной работы можно посмотреть по адресу: https://roboclub.space/

1. Размещать Django-проект будем с использованием платформы timeweb. Для этого переходим по ссылочке: https://timeweb.com/ru/

2. Нужно перейти в раздел хостинг - виртуальный хостинг по ссылке https://timeweb.com/ru/services/hosting/

3. Выполнив второй пункт вы попадете на страницу с выбором тарифного плана. Для начала можно выбрать, либо первый либо второй вариант. Лучше, конечно, второй вариант!

-2

После этого Вас попросят зарегистрироваться, нужно сделать это. При регистрации следует указывать Вашу настоящую почту! На нее придет логин и пароль доступа к хостингу.

3. После этого Вы попадете в панель управления веб-сайтом.

-3

4. Перейдите в "Сайты" и перейдите по ссылке домена третьего уровня.

-4

Если возникнет ошибка с безопасностью попробуйте использовать другой браузер. Такая проблема возникает с Google Chrome.

5. Для загрузки готового Django-проекта мы должны подключить доступ по SSH.

-5

Потребуется подтверждение через мобильный телефон.

6. Для подключения к веб-серверу нужно воспользоваться программой puTTy. Скачать можно тут: https://putty.org.ru/download.html

В поле Host Name указываем IP сайта;

Порт оставляем как есть - 22;

Тип соединения указываем SSH;

Жмем "Open".

-6

7. В открывшемся cmd указываем логин. Логин тут: https://hosting.timeweb.ru/

-7

8. Вводите пароль

-8

После ввода и нажатия Enter отобразится надпись TimeWeb

В Linux можно по SSH подключиться через терминал. Для этого выполните команду:

$ ssh имя_пользователя@айпи_адрес -p порт

-9

9. Переходим в пункт "Сайты" и кликаем создать новый сайт

-10

10. Чтобы получить бесплатное имя можем выбрать Django в пункте контекстного меню "Катало CMS" на вкладке "Прочее".

-11

После этого Вы можете перейти на пункт "Сайты" , отвязать домен от django сайта и привязать его к своему вновь созданному сайту

-12

11. Переходим в файловый менеджер и смотрим, что у нас есть внутри.

12. Переходим в PuTTY и вызываем команду просмотра директории ls.

-13

13. C помощью команды cd <имя папки> переходим в нужную директорию.

Дерево проекта
Дерево проекта

14. Затем выполняем команды в командной строке PuTTy

wget https://bootstrap.pypa.io/virtualenv/3.6/virtualenv.pyz - установка виртуального окружения.

python3 virtualenv.pyz venv - включение виртуального окружения.

source venv/bin/activate - активируем виртуальное окружение

pip install django==3.0.2 - устанавливаем Django(обратите внимание на версию!)

Подробнее по командам смотреть здесь - https://timeweb.com/ru/help/pages/viewpage.action?pageId=10289298

-15

15. Создадим проект. Для этого перейдем в директорию public_html c помощью команд ls и cd

django-admin.py startproject <название вашего проекта> - создание проекта-Django

16. Создаем файл

nano .htaccess

В открывшемся окне пишем

-16

Options +ExecCGI

AddHandler wsgi-script .py

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ <название вашего приложения>/<название вашего приложения>/wsgi.py/$1 [QSA,PT,L]

Затем жмем: CTRL+X, после этого Y

17. После этого переходим в файловый менеджер, обновляем его и смотрим все ли появилось, что мы создали.

18. Открываем файлик settings.py и в пункте ALLOWED_HOSTS указываем разрешение на все хосты.

-17

19. В файле wsgi.py нужно все удалить и написать следующее:

-18

Это можно взять в файлике wsgi.py Django-сайта, у которого мы брали доменное имя. Также нужно изменить пути.

-19

20. После этого можно проверять работоспособность вашего сайта.

-20

21. Далее остается перенести готовые html, css и т.п. на хостинг. Делать это будем с помощью Total-commander. Скачать можно тут https://dw.uptodown.com/dwn/UDNW-SnA1-bdF8ohY3eAwQ4o1W79uYu-a4Dq6-WQYfMOjwq8WYadxPD_Oq9TNYMPMGbNrMPH8se5G1TCCXYv4Odzyd1dD2cxhpanOzFt3aVOP_DKCu8dNev8UVcYga9v/8Ks-PnuFch9-a3-9UmF96LTDBTGECbEQYQrFihTZOAhQHq4v-gnvjolw25Ds3w-QkdWLKrpN76b593nLX-MEbhIhvvGj2a5SjZCD2a7B-rY7Szt273ZYalvd1-R19aGF/5zvFpzx0c6SmyOLhGTaYAaxh_TqRQpEXJUuDsEiJpD282j6wA6kcSNM8lU1-IdWSsdHyAKbbeAtgSlKao91Gdw==/

Если вы работаете на ОС Linux, то Вам нужно установить программу Double Commander. Это аналог Total-commander.

22. Откройте программу Total-commander и нажмите CTRL+F

-21

Введите имя соединения - IP сайта;

Порт(Хост) - vh392.timeweb.ru;

Логин и пароль - письмо с данными приходит Вам на почту.

Если Вы все правильно сделали, то слева появиться директория с Вашим сайтом.

23. После успешного подключения переносите файлы с локального диска на хостинг. Обязательно соблюдайте правильное расположение файлов в директориях.

24. После переноса данных в файле settings.py нужно указать путь до папки с названием static

STATIC_ROOT = 'static'

25. Перейти в директорию, где находится файл .htacsess и создать там папку static командой mkdir static

26. Перейти в директорию, где находится файл manage.py и выполнить команду:

python3 manage.py collectstatic

Обращать внимание на то, откуда (с какой директории) выполняете команду!

python3 <имя проекта>/manage.py collectstatic - может быть и так.

27. После этого проверьте заполнилась ли директория static статическими файлами. Если в этой директории появились файлы значит они отобразятся и в браузере.

28. Остается подключить БД.

При подключении БД, если это не sqlite3, то надо установить через pip движок. Для PostgreSQL - pip3 install psycopg2 (не работает без костылей с python версий выше 3.7)

Для MySQL - pip3 install mysql

В settings.py надо прописать

Name - название базы данных;

USER - пользователь базы данных;

PASSWORD - пароль от базы данных;

HOST и PORT - localhost и порт 3306

29. Для этого в settings.py нужно указать данные к БД, после создать миграции

python3 manage.py makemigrate

И выполнить их

python3 manage.py migrate

-22

Если возникнет ошибка при выполнении миграций, попробуйте пере подключиться к серверу(перезапустить PuTTY). Совет ветерана тех.поддержки.

Спасибо, что дочитали до конца. Вы меня очень поддержите, если поставите "Лайк", оставите комментарий или ПОДПИШИТЕСЬ на мой канал :)

django 

#python

#программирование

#timeweb

#хостинг