Upload
7bits
View
236
Download
1
Embed Size (px)
Как работает веб: адресация, сервера, протоколы
Разработчики. Занятие 7
• IP адрес• Доменные имена• DNS (Domain Name System)••
Иерархическая адресация, стек TCP/IP
Domain Name System
Архитектура клиент-сервер
Архитектура клиент-сервер
HTTP(HyperText Transfer Protocol) – протокол передачи гипертекста.• основа HTTP – технология клиент-
сервер.• используется повсеместно в интернете.• основной объект – URL• не сохраняет промежуточное состояние
https://ru.wikipedia.org/wiki/HTTP
Протокол HTTP
Каждый HTTP-запрос состоит из трёх частей:
1. Стартовая строка – тип запроса.2. Заголовки (headers) –параметры передачи3. Тело запроса.
Структура протокола HTTP
Запрос клиента
GET /news/recent HTTP/1.1Host: www.example.com
Структура протокола HTTP
• GET• POST• PUT• DELETE• …и остальные
HTTP-методы
Коды состояния HTTP
Код состояния = код ответа + поясняющая
фраза
200 – OK404 – Not Found
Список кодов состояния HTTP
Заголовки HTTP
Заголовки HTTP (HTTP Headers) - это строки в HTTP-сообщении, содержащие разделённую двоеточием пару имя-значение.
http://ru.wikipedia.org/wiki/Заголовки_HTTP
Примеры HTTP заголовков
• General Headers (Cache-Control, Date)
• Request Headers (Referer, User Agent)
• Response Headers (Age, ETag)• Entity Headers (Content-Language,
Content-Encoding)
Заголовки 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(пустая строка)
Заголовки 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(пустая строка)
Cookie и сессии
Cookie – небольшой фрагмент данных, отправленный сервером и хранимый на компьютере пользователя.
Developer Tools
Firefox Nightly:
HTTP сервер
Веб сервер это сервер, принимающий HTTP запросы от клиентов, и выдающий им HTTP-ответы (веб-страницы в HTML, изображения, файлы)
HTTP сервера
• Apache• Nginx• Lighttpd• Microsoft IIS• Cherokee
Apache
Особенности:• система модулей• механизм виртуальных
хостов• язык для описания конфигов
https://ru.wikipedia.org/wiki/Apache
Установка Apache
Ubuntu:sudo apt-get install apache2 php5
/etc/apache2/ports.conf/etc/apache2/sites-available//etc/apache2/sites-enabled/
Пример VirtualHost
<VirtualHost *:80> DocumentRoot /var/www/demo ServerName www.example.com</VirtualHost>
NginxОсобенности:
• асинхронная обработка запросов
• использует меньше ресурсов• очень быстр при отдаче
статики
https://ru.wikipedia.org/wiki/Apache
Установка nginx
Ubuntu:sudo apt-get install nginx
/etc/nginx/nginx.conf/etc/nginx/sites-available//etc/nginx/sites-enabled/
Пример конфигурации сервера
server { listen 80; server_name example.com; root /var/www/nginx; location / { #… }}
Сервера приложений
• Apache Tomcat (Java)• Phusion Passenger (Ruby, Python,
Node.js)• Unicorn, thin (Ruby)• gUnicorn, uWSGI (Python)
Web Programming Languages
ruby
java
pythonerlang
javascript
phpasp.net
node.jsscala go perl
c
c++
groovy
Компилируемые языки vs. интерпретируемые
Возможные задержки при загрузке страниц в вебе:• задержки соединения• загрузка статики• запросы к базам данных• скорость выполнения на сервере• скорость обработки страницы в
браузере
Задание
• установить и настроить Apache и Nginx на разные порты: Nginx – 80, Apache – 8080.
• установить PHP5• вывести страницу с php кодом
через Apache и Nginx на запущенных портах.
Задание
Для запуска скриптов PHP нужно:• Apache – mod_php5• Nginx – php5-fpm + настройка
блока location {} в конфиге.
http://wiki.nginx.org/PHPFcgiExample