Что такое веб-сервер
Веб-сервер — это штука, без которой не работает ни один сайт в интернете. Каждый раз, когда вы заходите на сайт, ваш браузер связывается с сервером и запрашивает необходимые для работы ресурсы: HTML, CSS и JS файлы, картинки, шрифты и прочее. Веб-сервер отвечает за то, чтобы найти эти ресурсы на сервере и переслать их браузеру.
Веб-сервер — это программа. Она без перерывов работает на сервере, ожидает, когда посетитель сайта запросит у неё новую страничку. Веб-серверов существует огромное множество, разбор их особенностей не входит в цели этой статьи. Рассмотрим общую схему их работы.
Когда веб-сервер не нужен
Выше сказано, что сайты не работают без веб-сервера, но вы легко можете убедиться в обратном. Выберите сайт в интернете, сохраните его страницу на свой компьютер и откройте файл в браузере. Пускай не всякий сайт такое выдержит без поломок, но зачастую это возможно: веб-сервера нет, а сайт работает.
Фокус в том, что браузер сам берет на себя функцию веб-сервера, когда сталкивается с адресами вида file://...
. Сделано это ради удобства и работает только с file://
адресами.
Подробнее про адреса читайте в статье Относительный адрес. Про *.html
, *.css
и прочие файлы — в статье про Статику.
Статический сайт на сервере
Самый простой вид сайтов — это статический сайт. Такой сайт состоит из одного HTML файла и нескольких подключаемых ресурсов — файлов статики. Чтобы опубликовать статический сайт в интернете, нужен веб-сервер, который:
- дождется запроса от браузера
- поймет, какой файл хочет браузер
- найдет файл на диске сервера
- отправит файл браузеру
Динамический сайт
Чаще всего в интернете встречаются динамические сайты: интернет-магазины, соц-сети, блоги — все они регулярно обновляются и для анонимных пользователей выглядят совсем не так, как для авторизованных. На таких сайтах каждый посетитель получает свою версию HTML-разметки, и поэтому сервер генерирует её на лету. А вот статика и медиа для всех общие, поэтому хранятся в виде обычных файлов. Чем отличается статика от медиа читайте в статье про Статику.
Веб-сервер динамического сайта напоминает пункт сортировки писем на почте — ориентируясь по адресу запроса веб-сервер либо ищет файл в одном каталоге, либо в другом, либо передаёт запрос другому веб-серверу.
Чтобы веб-серверу было проще понять, что и где искать – программисты добавляют к адресам специальные префиксы. Всю статику размещают на адресах, начинающихся со /static/...
, а всю медиа — на /media/...
. На разных сайтах используют разные префиксы, единого стандарта здесь нет. В терминах Django эти префиксы называются STATIC_URL
и MEDIA_URL
.
Пути к каталогам, в которых хранятся файлы статики и медиа в терминах Django называют STATIC_ROOT
и MEDIA_ROOT
соответственно.
STATIC_URL — это префикс урла, а STATIC_ROOT — префикс пути