30
Как работает веб: адресация, сервера, протоколы Разработчики. Занятие 7

Стажировка-2013, разработчики, занятие 7. Web, HTTP

  • Upload
    7bits

  • View
    236

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Как работает веб: адресация, сервера, протоколы

Разработчики. Занятие 7

Page 2: Стажировка-2013, разработчики, занятие 7. Web, HTTP

• IP адрес• Доменные имена• DNS (Domain Name System)••

Иерархическая адресация, стек TCP/IP

Page 3: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Domain Name System

Page 4: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Архитектура клиент-сервер

Page 5: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Архитектура клиент-сервер

Page 6: Стажировка-2013, разработчики, занятие 7. Web, HTTP

HTTP(HyperText Transfer Protocol) – протокол передачи гипертекста.• основа HTTP – технология клиент-

сервер.• используется повсеместно в интернете.• основной объект – URL• не сохраняет промежуточное состояние

https://ru.wikipedia.org/wiki/HTTP

Протокол HTTP

Page 7: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Каждый HTTP-запрос состоит из трёх частей:

1. Стартовая строка – тип запроса.2. Заголовки (headers) –параметры передачи3. Тело запроса.

Структура протокола HTTP

Page 8: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Запрос клиента

GET /news/recent HTTP/1.1Host: www.example.com

Структура протокола HTTP

Page 9: Стажировка-2013, разработчики, занятие 7. Web, HTTP

• GET• POST• PUT• DELETE• …и остальные

HTTP-методы

Page 11: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Заголовки HTTP

Заголовки HTTP (HTTP Headers) - это строки в HTTP-сообщении, содержащие разделённую двоеточием пару имя-значение.

http://ru.wikipedia.org/wiki/Заголовки_HTTP

Page 12: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Примеры HTTP заголовков

• General Headers (Cache-Control, Date)

• Request Headers (Referer, User Agent)

• Response Headers (Age, ETag)• Entity Headers (Content-Language,

Content-Encoding)

Page 13: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Заголовки HTTP

Пример запроса:

GET /wiki/страница HTTP/1.1Host: ru.wikipedia.orgUser-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5Accept: text/htmlConnection: close(пустая строка)

Page 14: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Заголовки HTTP

Пример ответа:

HTTP/1.1 200 OKDate: Wed, 11 Feb 2009 11:20:59 GMTServer: ApacheX-Powered-By: PHP/5.2.4-2ubuntu5wm1Last-Modified: Wed, 11 Feb 2009 11:20:59 GMTContent-Language: ruContent-Type: text/html; charset=utf-8Content-Length: 1234Connection: close(пустая строка)

Page 15: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Cookie и сессии

Cookie – небольшой фрагмент данных, отправленный сервером и хранимый на компьютере пользователя.

Page 18: Стажировка-2013, разработчики, занятие 7. Web, HTTP

HTTP сервер

Веб сервер это сервер, принимающий HTTP запросы от клиентов, и выдающий им HTTP-ответы (веб-страницы в HTML, изображения, файлы)

Page 19: Стажировка-2013, разработчики, занятие 7. Web, HTTP

HTTP сервера

• Apache• Nginx• Lighttpd• Microsoft IIS• Cherokee

Page 20: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Apache

Особенности:• система модулей• механизм виртуальных

хостов• язык для описания конфигов

https://ru.wikipedia.org/wiki/Apache

Page 21: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Установка Apache

Ubuntu:sudo apt-get install apache2 php5

/etc/apache2/ports.conf/etc/apache2/sites-available//etc/apache2/sites-enabled/

Page 22: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Пример VirtualHost

<VirtualHost *:80> DocumentRoot /var/www/demo ServerName www.example.com</VirtualHost>

Page 23: Стажировка-2013, разработчики, занятие 7. Web, HTTP

NginxОсобенности:

• асинхронная обработка запросов

• использует меньше ресурсов• очень быстр при отдаче

статики

https://ru.wikipedia.org/wiki/Apache

Page 24: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Установка nginx

Ubuntu:sudo apt-get install nginx

/etc/nginx/nginx.conf/etc/nginx/sites-available//etc/nginx/sites-enabled/

Page 25: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Пример конфигурации сервера

server { listen 80; server_name example.com; root /var/www/nginx; location / { #… }}

Page 26: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Сервера приложений

• Apache Tomcat (Java)• Phusion Passenger (Ruby, Python,

Node.js)• Unicorn, thin (Ruby)• gUnicorn, uWSGI (Python)

Page 28: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Компилируемые языки vs. интерпретируемые

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

браузере

Page 29: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Задание

• установить и настроить Apache и Nginx на разные порты: Nginx – 80, Apache – 8080.

• установить PHP5• вывести страницу с php кодом

через Apache и Nginx на запущенных портах.

Page 30: Стажировка-2013, разработчики, занятие 7. Web, HTTP

Задание

Для запуска скриптов PHP нужно:• Apache – mod_php5• Nginx – php5-fpm + настройка

блока location {} в конфиге.

http://wiki.nginx.org/PHPFcgiExample