Диплом: Создание web-сервисов средствами стека технологий Django+Python3.x+Nginx+Gunicorn+PostgreSQL

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
52
оборудование еще не успело обновиться. Ко всему прочему,
поисковики разделяют домены качеству, то есть поисковик считает,
что домен «.ru» лучше чем «.su» и соответственно сервис с доменом
«.ru» будет показана на первой странице поисковика, а «.su» в лучшем
случае на второй. Наименьший приоритет имеют бесплатные домены
(к примеру .com.ru) так как они могут использоваться
злоумышленниками. Наивысшим приоритетом располагает домен
«.edu», так как он выдаётся лишь образовательным учреждениям и
получить его весьма проблематично.
2) Доменное имя должно соответствовать тематике сайта иначе может
вызвать подозрения у пользователей. Если говорить о сайтах фирм или
брендов, то желательно указать его в домене. К примеру yandex.ru
компании Яндекс.
3) Необходимо учитывать юридический аспект. Доменное имя не должно
совпадать с уже зарегистрированными, даже если внести в него какие-
то изменения. Довольно часто проходят судебные тяжбы по поводу
доменных имён. Самый яркий пример – компания Apple, которая
отсуживает все домены в которых присутствует слово «apple».
4) Доменное имя должно быть коротким. Банально, но факт. Во-первых,
длинное доменное имя пользователь не сможет запомнить. Во-вторых,
в длинном доменном имени вероятность допустить ошибку выше чем в
коротком. И в-третьих, так как короткое доменное имя стоит дороже
длинного, то позволить себе купить его могут только обеспеченные
компании, а это внушает доверие пользователям. Ко всему прочему, у
поисковик такая эвристика, что чем короче домен, тем сайт лучше и
соответственно тем выше он будет показан на странице отображения
результатов поиска.
5) Удобство запоминания и ввода. Стоит избегать в доменных именах не
очевидных по звучанию букв, так как это вводит в заблуждение
пользователей.
53
6) SOE. Простыми словами, если ваша компания занимается охранной
деятельностью, то в доменное имя лучше включить слово «ohrana» так
как это повысит приоритет страницы в глазах поисковика. По сути это
более обширная область, но для понимания, приведённого примера
будет достаточно.
7) Не использовать в доменных именах нижнее подчеркивание. Вместо
них лучше использовать дефисы. Так как экспериментально доказано,
что сайты с подчеркиванием в доменных именах ранжируются хуже.
8) Репутация и история домена. Доменные имена могут быть забанены в
некоторых поисковых системах и иметь паршивую репутацию у
пользователей.
Для проверки истории домена есть несколько сервисов, к примеру https://a.pr-
cy.ru позволяет проверить в каких поисковиках домен забанен. Так что лучше
потратить немного времени и проверить приобретаемый домен, чем не глядя
купить доменное имя и кусать локти из-за его плохой репутации.
После покупки домена можно выбирать сервер для размещения web
приложения. В самом банальном случае сервером может выступать ноутбук
разработчика, но для этого необходимо купить статический белый IP-адрес у
провайдера. По сути это самый сложный и запутанный вариант, поэтому
рассмотрим варианты более разумные.
1) Виртуальный (shared) хостинг. Данный вид хостинга предполагает,
что на одном физическом сервере располагается множество
приложений. Его можно сравнить с проживанием в одной комнате
множества людей – безумно дёшево и с множеством ограничений
(ограничения на посещаемость, на трафик, на количество сайтов и
баз данных и т.д.)
2) Виртуальный сервер (VPS/VDS). Этот вид хостинга дороже чем
предыдущий, но при его использовании разработчик получает
виртуальный сервер в своё полное распоряжение. Вся операционная
система виртуального сервера находится в полном распоряжении
54
разработчика, при этом отсутствуют какие-либо ограничения, и
разработчик имеет права root-пользователя в системе сервера.
3) Выделенный сервер (dedicated server). Самый дорогой и самый
мощный вариант. В распоряжении разработчика находится весь
физический сервер. Такой вариант подходит для
высоконагруженных систем.
Так же стоит упомянуть про облачный хостинг и хостинг приложений.
Облачный хостинг отличается от упомянутых ранее тем, что в облачном
хостинге нет лимитированных ресурсов. К примеру, на VPS есть ограничение
на трафик в 1 Тбайт и разработчик платит за него, то в облачном хостинге 1
Гбайт стоит 2 рубля и в конце месяца идёт подсчет суммы оплаты.
Хостинг приложений весьма интересная вещь. Разработчик работает не
на уровне операционной системы, а на уровне приложения. То есть, делается
запрос на запуск Django[29] приложения и операционная система
самостоятельно настраивает Nginx[28] и Gunicorn, устанавливает все
зависимости и т.д. По факту, это очень удобная обёртка вокруг VPS.
Перечислю критерии, которые необходимо учитывать при выборе
хостинг сервера:
1) Цена
2) Местоположение
3) Производительность
4) SLA. Соглашение о доступе к сайту
5) Тех. Поддержка
6) Ограничения
7) История IP по блок листам
8) Безопасность
Если с первыми 7 пунктами всё ясно так как их затрагивали ранее в тексте, то
о безопасности стоит поговорить чуть подробнее.
Что же делать, что бы хакеры не взломали ваш сайт? Нужно сразу уяснить
главное, если захотят, то взломают, хоть вы душу дьяволу продайте, так как
55
ежедневно находят уязвимости в софте, операционных системах,
фреймворках, библиотеках и т.д. Но можно обезопасить себя от «детских»
атак. Для этого необходимо выполнить несколько пунктов. Самое главное
действие, которое необходимо отпечатать на коре головного мозга – это в
файле проекта settings.py в строке DEBUG поставить флаг FALSE. Пол дела
сделано. Теперь можно переходить к следующим пунктам. После
размещения сайта на хостинге необходимо закрыть лишние порты (это
логично). Необходимо избавиться от старого ПО так как в нём чертова туча
известных всем уязвимостей. Нельзя хранить пароли с исходным кодом
приложения в одном репозитории, так как репозиторий проще взломать, а
значит при взломе оного все пароли попадут сразу в руки хакеров. Также
нужно использовать надёжный код чем писать свои «велосипеды»,
использовать официальную документацию, в которой описаны проверенные
способы использования методов и функций. А так же не нужно забывать о
DOS атаках, так что лучше потратить время и средства что бы установить
защиту от DOS чем нести убытки от того что сервис «упал». Простой способ
защиты от DOS – это правильная настройка Nginx[30] на отдачу статики и
настройки кэширования.
И вот после всех мучений вы разместили сайт на сервере и по
неведомой вам причине его посещаемость упала до нуля и все ваши старания
пропали даром. Теперь обсудим что нужно сделать что бы подобного не
произошло.
1) Mobile-ready
Ни для кого не секрет, что большую часть посещений сайтов совершается
через мобильные устройства. А раз так, то интерфейс сайта должен быть
прекрасно подогнан под смартфоны, иначе можно потерять огромное число
посетителей.
2) Скорость загрузки
Поисковые системы ранжируют сайты не только по популярности, но и по
скорости загрузки. Часты случаи, когда новый сайт за счет своей скорости
56
загрузки получает ранг выше чем известные конкуренты. Именно поэтому
необходимо оптимизировать свой сайт, под оптимизацией подразумевается
следующее: отдача статических файлов, настройка кэширования,
оптимизация JS кода (короткие переменные, удалить лишние пробелы),
оптимизация CSS файлов, сжатие картинок и т.д. Чем выше скорость
загрузки сайта, тем выше он будет отображаться в результатах поиска.
3) Юзабилити
Слово странное, но смысл передаёт неплохо. Интерфейс сайта должен быть
понятен пользователю. Понятные шрифты оптимального размера, удобные
кнопки, которые бросаются в глаза и не нужно искать пару минут куда
кликнуть, нет скрытых ссылок. Самый простой способ проверить
юзабильный сайт или нет – это посмотреть на время, проведённое
посетителем на сайте. Если посетитель просидел на сайте пару минут, да ещё
и перешёл по ссылкам, то сайт вполне нормальный. Если же уже через
несколько секунд посетитель ушёл с сайта – значит у сайта большие
проблемы.
4) Структура сайта
1. Правильные URL: иерархия и текст
2. Навигационные цепочки
3. Заголовки
Чем понятнее структура сайта, тем больше возможностей будет у поисковика
и тем выше будет ранг сайта в поисковике. Текст в URL или в запросе даёт
плюс к рангу сайта. Навигационная цепочка помогает пользователю
ориентироваться на сайте и так же повышает ранг сайта в глазах поисковика.
5) Карта сайта
Карта сайта – это специальный файл, который обычно именуют sitemap.xml,
который нужен что бы поисковик лучше видел все страницы на вашем сайте.
Поисковики быстрее и охотнее индексируют сайты у которых есть sitemap.
6) Внутренняя перелинковка
57
Простыми словами, страница сайта должны содержать ту информацию,
которая содержится в тексте ссылки на эту страницу. То есть, если ссылка
называется «Вопросы», то при переходе по ней должны открываться
страница с вопросами и заголовком «Вопросы». Идея простая, но поисковики
её используют на всю катушку. По сути, 50% ранжирования зависит как раз
от перелинковки.
Всё это касается внутренней оптимизации сайта. Теперь же поговорим о
внешней оптимизации, которая так же важна.
Для продвижения своего сайта можно заключить партнёрский договор
с сайтом похожей тематики. Совместные конкурсы, акции, бонусы и прочее.
Тем самым аудитория будет увеличиваться у обоих сайтов. По сути это
обычный обмен ссылками, но пользы от него очень много.
Также можно создавать пресс-релизы и отсылать их в новостные
агентства. Или же писать рекламные статьи и тематические публикации.
Если всё написано качественно и интересно, то пользователи непременно
заглянут к вам на сайт. Необходимо использовать качественные каталоги,
чем больше записей в каталогах, тем больше чистых ссылок на ваш сайт и
тем больше посетителей. Ну и наконец самый простой и действенный способ
продвижения сайта – продвижение в социальных сетях. Создать группу в
соц. сетях, заполнить её качественным контентом, сделать ссылки на сайт.
Если ссылки сохраняют к себе или пересылают друзьям, значит страница
качественная, и поисковик это учитывает, причем подобные ссылки имеют
очень большой вес при ранжировании.
Как говорится «нет предела совершенству», а значит продвигать и
развивать сайт необходимо постоянно и без устали, иначе ваши конкуренты
оставят вас далеко позади и ваш сайт, на который вы потратили уйму
времени и сил канет в Лету.
58
Заключение
Откровенно говоря, я не предполагал, что смогу осилить написание
выпускной квалификационной работы. Нужно было изучить огромное
количество учебного материала, а если учесть, что Python и Django пришлось
изучать полностью самостоятельно, так как в институте нет таких учебных
курсов, то работа казалась ещё более сложной. Но благодаря огромному
количеству книг, видео, различных статей и блогов, работа оказалась менее
сложной чем ожидалось, а сложность вызвало поиск качественной
информации, ведь так уж заведено в современном мире, что любой недоучка
вроде меня норовит кого-то учить, поэтому обилие информации – это
обоюдоострый меч.
Тем не менее работа была выполнена в полном объёме, в полном
соответствии с план-проектом. Задачи, поставленные перед написанием ВКР
были изучены и выполнены.
Был изучен язык программирования высокого уровня Python, его
история, достоинства и недостатки, причины по которым он так популярен
среди разработчиков, не только в среде web разработки, но и по другим
направлениям. Особый вес в последнее время он набирает в машинном
обучении, благодаря своему простому синтаксису и в то же время огромным
возможностям.
Была изучена СУБД PostgreSQL, которая благодаря своей бесплатной
системе распространения, весьма значительным достоинствам, которые были
перечислены в первой главе, а также постоянному развитию, приобрела
огромную популярность. На её основе была создана ER-диаграмма будущей
базы данных, необходимой для практической части работы.
Были изучены и описаны web сервера Nginx и Gunicorn[31]. История
создания, принципы работы, достоинства и недостатки, а главное был описан
принцип их взаимодействия.
59
Ну и наконец, главным достижением в данной ВКР, является
изученный фреймворк Django. Всех его возможностей, пожалуй, не знают
даже сами создатели, но тех знаний, которые я получил при написании ВКР,
было достаточно, что реализовать практическую часть. Да, это типовой
интернет магазин, но тем не менее, даже такой проект даст хоть небольшое,
но преимущество перед конкурентами при поиске работы, ведь работодателю
необходим не просто человек с дипломом и кучей теоретических знаний
которые нигде нельзя применить, а специалист, способный решать
практические задачи. Именно поэтому, мною была выбрана подобная темы
ВКР.
Могу с уверенностью заявить, что цель работы была полностью
достигнута, так как я получил навыки практического применения
полученных теоретических знаний о разработке web-приложений с помощью
фрейморка Django.
60
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
Источники на русском языке
1. Айвалиотис Д. Администрирование сервера NGINX – М.: ДМК, 2013. –
288 с.
2. Бибо Б., Кац И. jQuery. Подробное руководство по продвинутому
JavaScript - Спб.: Символ, 2011. 624с.
3. Бизли Дэвид Python Cookbook 3rd Edition - Спб.: Питер, 2014. 788 с.
4. Васильев А. Работа с PostgreSQL: настройка и масштабирование –
Leopard, 2014. - 205с.
5. Головатый А., Каплан-Мосс Дж. Django. Подробное руководство, 2
издание – Спб.: Символ, 2010. – 552 с.
6. Грабер. М. SQL для простых смертных. - ЛОРИ, 2014. – 383с.
7. Дронов В. Django: практика создания web-сайтов на Python – БХВ
Петербург, 2016. – 530 с.
8. Карвин Б. Программирование баз данных SQL. Типичные ошибки и их
устранение. — М.: Рид Групп, 2012. —336 с.
9. Лёвшин И., Рогов Е., Лузанов П. PostgreSQL для начинающих –
Postgres Professional. — М., 2017. — 256 с.
10. Лутц М. Изучаем Python 4 издание — Спб.: Символ-Плюс, 2011. - 1280
с
11. Лутц М. Программирование на Python, том I, 4-е издание. – Спб.:
Символ-Плюс, 2011. – 992 с
12. Любанович Билл «Простой Python. Современный стиль
программирования» - Спб.: Питер, 2016. - 480с.
13. МакГрат Майкл «Программирование на Python» - Эксмо, 2015. - 194с.
14. Моргунов Е. Язык SQL. Базовый курс: учеб.-практ. пособие - Postgres
Professional. — М., 2017. — 256 с.
15. Мусин Д. Самоучитель Python - 2015. - 136с.
16. Рейтц Кеннет, Шлюссер Таня Автостопом по Python – Питер, 2017. –
336 с.
17. Саммерфилд М. Программирование на Python 3. Подробное
руководство. - Пер. с англ. - СПб.: Символ-Плюс, 2009. - 608 с, ил.
18. Седжвик Роберт, Кевин Уэйн, Роберт Дондеро Программирование на
языке Python. Учебный курс – Диалектика, 2017. - 736с.
19. Сузи Р. Python. Наиболее полное руководство - БВХ-Петербург, 2002. -
768с.
20. Форсье Дж., Биссекс П., Чан У. Django. Разработка web-приложений
на Python – Спб.:Символ, 2010. – 456с.
Источники на иностранных языках

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран