Развертывание приложения на основе Django

в Amazon Lightsail

Amazon Lightsail – самый простой способ начать работу с AWS. Предложение включает виртуальные серверы, хранилище, базы данных и сеть, а также экономичный ежемесячный план.

В этом учебном пособии вы выполните развертывание примера приложения на базе Django в сервисе Lightsail. Вы начнете с создания инстанса и развертывания своего приложения. Затем вы проверите правильность работы приложения, используя встроенный веб-сервер Django. В завершение вы настроите сервер Apache для размещения приложения.

Начать работу с Lightsail бесплатно.

Требования

Это учебное пособие среднего уровня, он предполагает наличие:

  • общего представления о командной строке Linux (cp, cat и т. д.);
  • возможности использовать текстовый редактор Linux (vi, nano и т. д.);
  • как минимум общего представления о Django и Python;
  • бесплатного аккаунта Amazon Web Services.
Подробнее об этом учебном пособии
Время 30 минут                                     
Стоимость Может взиматься плата
Пример использования Вычисления
Продукты Amazon Lightsail
Аудитория Разработчик
Уровень Средний 
Последнее обновление 23 марта 2020 г.

Уже есть аккаунт? Вход

1. Как создать инстанс Lightsail?

а) Войдите в свой аккаунт AWS и перейдите на главную страницу сервиса Lightsail.


б) Нажмите кнопку Создать инстанс.

django1

в) Выберите соответствующий регион AWS.

add django
django2

г) Выберите зону доступности.

django3
django4

д) В разделе «Выбор схемы» выберите пункт Django.

 

django5

е) Для других параметров можно оставить значения по умолчанию. Прокрутите до конца страницы и нажмите кнопку Создать инстанс.

 

2. Развертывание проекта Django

В этом разделе вы выполните развертывание простого приложения «Hello, World». Используйте командную строку Django для создания нового проекта и нового приложения, прежде чем добавить рабочий код приложение в следующем разделе.

Если у вас уже есть приложение Django, его можно использовать в этом учебном пособии. Однако обратите внимание на структуру каталога, используемую в приложении «Hello, World», так как это потребуется при настройке вашего приложения.

Проект Django будет находиться в следующем каталоге:

/opt/bitnami/apps/django/django_projects/tutorial

Сам проект будет сохранен в следующем каталоге:

/opt/bitnami/apps/django/django_projects/tutorial/tutorial

Приложение будет создано в следующем каталоге:

/opt/bitnami/apps/django/django_projects/tutorial/tutorial/hello_world


а) На главной странице сервиса Lightsail щелкните пиктограмму клиента SSH для браузера рядом с инстансом Django. После этого запустится сеанс SSH для вашего инстанса. В этом сеансе необходимо выполнить следующие команды.

django6

б) Введите следующую команду, чтобы войти в каталог django_projects, и создайте новый учебный проект.
cd /opt/bitnami/apps/django/django_projects && \
django-admin.py startproject tutorial

в) Введите следующую команду, чтобы войти в каталог учебного проекта, и создайте приложение hello_world.

cd tutorial && python3 manage.py startapp hello_world

3. Добавление кода приложения

Кодогенерация для вашего приложения готова, теперь пора добавить код. Каждый раз при загрузке веб-страницы приложение будет просто отображать текст «Hello, World».

Продолжайте выполнять эти команды в окне клиента SSH для браузера в сервисе Lightsail.


а) Введите следующую команду, чтобы открыть файл views.py с помощью текстового редактора:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/hello_world/views.py

б) Нажмите клавишу I, чтобы отредактировать файл, и замените существующий код на следующий:

from django.http import HttpResponse

def index(request):
     return HttpResponse("Hello, world")

в) Нажмите клавишу Esc, введите :wq! и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора Vim.


г) Введите следующую команду, чтобы создать файл urls.py для вашего приложения в том же каталоге, в котором находится файл views.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/hello_world/urls.py

д) Нажмите клавишу I, чтобы отредактировать файл, и добавьте следующий код:

from django.urls import path
from . import views

urlpatterns = [
     path('', views.index, name='index'),
]

е) Нажмите клавишу Esc, введите :wq! и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора Vim.


ж) Введите следующую команду, чтобы открыть файл urls.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/tutorial/urls.py

и) Нажмите клавишу I, чтобы отредактировать файл, и замените существующий код на следующий:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('', include('hello_world.urls')),
    path('admin/', admin.site.urls),
]

к) Нажмите клавишу Esc, введите :wq! и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора Vim.


4. Тестирование приложения

Далее используйте встроенный веб-сервер Django, чтобы убедиться, что все работает должным образом. По умолчанию сервер Apache использует порт 80 на вашем инстансе Lightsail, поэтому для запуска веб-сервера Django необходимо использовать порт 8000. Чтобы получить доступ к веб-сайту, откройте порт 8000 на брандмауэре Lightsail.


а) Вернитесь на главную страницу сервиса Lightsail и нажмите на имя своего инстанса Django.


б) В горизонтальном меню щелкните пункт Сеть.

django7

в) На вкладке Брандмауэр нажмите кнопку Добавить еще один.

django8

г) В поле Диапазон портов введите 8000 и нажмите кнопку Сохранить.

django9

д) Вернитесь на главную страницу сервиса Lightsail и запишите IP-адрес инстанса.

django10

е) Вернитесь в сеанс терминала и введите следующую команду, чтобы открыть файл settings.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/tutorial/settings.py

ж) Нажмите клавишу I и измените строку ALLOWED_HOSTS, добавив IP-адрес своего инстанса Lightsail, как показано в следующем примере.

Примечание. При редактировании файла settings.py обязательно замените адрес 192.0.2.143 на публичный IP-адрес своего инстанса.

ALLOWED_HOSTS = ['192.0.2.143']

и) Нажмите клавишу Esc, введите :wq! и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора Vim.


к) Введите следующую команду, чтобы запустить веб-сервер Django на порту 8000:

cd /opt/bitnami/apps/django/django_projects/tutorial/ && python3 manage.py runserver 0.0.0.0:8000

л) Укажите в своем веб-браузере порт 8000 IP-адреса инстанса (например, http:// 192.0.2.143:8000).

Должен отобразиться текст «Hello, world». Это будет означать, что приложение работает.

5. Размещение приложения с помощью сервера Apache

Приложения рабочей среды не рекомендуется запускать с помощью встроенного сервера Django. В этом последнем разделе вы настроите сервер Apache для обслуживания вашего приложения.

Для этого вы настроите приложение для использования стандарта Web Services Gateway Interface (WSGI), а затем создадите виртуальный хост (vHost) Apache.

Продолжайте выполнять эти команды в окне клиента SSH для браузера в сервисе Lightsail.


а) Введите следующую команду, чтобы отредактировать файл wsgi.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py

б) Введите :1$d и нажмите клавишу Enter, чтобы выбрать все, затем удалите все содержимое файла wsgi.py.


в) Нажмите клавишу I для редактирования и добавьте в файл wsgi.py следующий код:

import os
import sys
sys.path.append('/opt/bitnami/apps/django/django_projects/tutorial')
os.environ.setdefault("PYTHON_EGG_CACHE", "/opt/bitnami/apps/django/django_projects/tutorial/egg_cache")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tutorial.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

г) Нажмите клавишу Esc, введите :wq! и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора Vim.


д) Введите следующую команду, чтобы создать каталог conf для вашего приложения:

mkdir /opt/bitnami/apps/django/django_projects/tutorial/conf

е) Введите следующую команду, чтобы создать файл httpd-app.conf в только что созданном каталоге conf:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-app.conf

ж) Нажмите клавишу I для редактирования и добавьте следующий код:

<IfDefine !IS_DJANGOSTACK_LOADED>
      Define IS_DJANGOSTACK_LOADED
      WSGIDaemonProcess wsgi-djangostack   processes=2 threads=15    display-name=%{GROUP}
</IfDefine>

<Directory "/opt/bitnami/apps/django/django_projects/tutorial/tutorial">
    Options +MultiViews
    AllowOverride All
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>

    WSGIProcessGroup wsgi-djangostack

    WSGIApplicationGroup %{GLOBAL}
</Directory>

Alias /tutorial/static "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/contrib/admin/static"
WSGIScriptAlias /tutorial '/opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py'

и) Нажмите клавишу Esc, введите :wq! и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора Vim.


к) Введите следующую команду, чтобы создать файл httpd-prefix.conf в каталоге conf для вашего приложения:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-prefix.conf

л) Нажмите клавишу I для редактирования и добавьте следующий код:

Include "/opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-app.conf"

м) Нажмите клавишу Esc, введите :wq! и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора Vim.


н) Введите следующую команду, чтобы открыть файл bitnami-apps-prefix.conf:

sudo vim /opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf

п) Нажмите клавишу I для редактирования и добавьте следующую строку в конце файла:

Include "/opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-prefix.conf"

р) Нажмите клавишу Esc, введите :wq! и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора Vim.


с) Введите следующую команду, чтобы открыть файл bitnami.conf:

sudo vim /opt/bitnami/apache2/conf/bitnami/bitnami.conf

т) Введите :1$d и нажмите клавишу Enter в редакторе Vim, чтобы выбрать все, затем удалите все содержимое файла wsgi.py.


у) Нажмите клавишу I для редактирования и добавьте в файл следующий код:

<VirtualHost _default_:80>
    WSGIScriptAlias / /opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py

    <Directory /opt/bitnami/apps/django/django_projects/tutorial>
    AllowOverride all
        Require all granted
        Options FollowSymlinks
    </Directory>

    DocumentRoot /opt/bitnami/apps/django/django_projects/tutorial
</VirtualHost>

ф) Нажмите клавишу Esc, введите :wq! и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора Vim.


х) Введите следующую команду, чтобы перезапустить сервер Apache:

sudo /opt/bitnami/ctlscript.sh restart apache

ц) Укажите в своем веб-браузере IP-адрес своего инстанса (например, http:// 192.0.2.143).

Должен отобразиться текст «Hello, world». Это будет означать, что приложение работает.

Поздравляем!

Поздравляем! Вы прошли обучение. Вы успешно выполнили развертывание приложения на базе Django в сервисе Lightsail.

Amazon Lightsail – отличный инструмент для разработки, сборки и развертывания разнообразных приложений, таких как WordPress, веб-сайтов и прочих платформ для ведения блога. 

Была ли полезной информация, представленная в этом учебном пособии?

Спасибо!
Укажите, что вам понравилось.
Close
Приносим извинения за причиненные неудобства
Вы обнаружили устаревшую, неточную или неподходящую информацию? Оставьте свой отзыв, чтобы мы могли улучшить качество предоставляемых услуг.
Close