close

Вход

Забыли?

вход по аккаунту

?

Основы веб-разработки. Лекция 2

код для вставкиСкачать
Лекция 2
Основы webтехнологий
Стыценко Илья, Исаев Денис
Основы UNIX, web-серверы
1. 
2. 
3. 
4. 
5. 
Основы UNIX-систем
Способы серверной работы с сокетами
Схема работы web-сервера
Frontend. Nginx
Сервера приложений. gunicorn
2
UNIX. Пользователи, группы, права
ls /home/ - домашние директории пользователей
su username - действуем от имени другого
пользователя
adduser, addgroup - создание пользователя или
группы
chown username flename
chgrp groupname filename
chmod [u,g,o][+,-][r,w,x] filename
3
UNIX. Установка пакетов
apt-cache search name
apt-get install name
brew install name
yum install name
pip install name
4
UNIX. Процессы
pid - номер процесса
ppid - номер родительского процесса
состояние процесса (run, sleep, zomby…)
таблица дескрипторов IO
tty - текущий терминал
каждый процесс запускается от имени какоголибо пользователя
5
UNIX. Процессы
pstree, top, ps - всяко смотрим, а что же у нас
запущено в данный момент?
демоны, сигналы
kill pid
nohup … &
ls /var/run/
cat /var/run/nginx.pid
6
UNIX. Окружение, переменные
окружения
env
set VARNAME=value
export VARNAME=value
unset VARNAME
7
UNIX. stdin, stdout, stderr, pipes
8
UNIX. Полезное
man
cp, mv, rm, mkdir, ls
chmod, chown
top, ps
telnet, netcat
nohup, kill
vi, mcedit
grep
watch
screen
9
Способы серверной работы с сокетами
https://github.com/sat2707/web/blob/master/
tcp_servers/simple.py
https://github.com/sat2707/web/blob/master/
tcp_servers/simple_http.py
https://github.com/sat2707/web/blob/master/
tcp_servers/fork.py
https://github.com/sat2707/web/blob/master/
tcp_servers/prefork.py
https://github.com/sat2707/web/blob/master/
tcp_servers/async.py
10
Blocking IO
11
Non-blocking IO
12
Способы серверной работы с сокетами
1. 
2. 
3. 
4. 
5. 
blocking IO - ждем событий
fork - порождаем процесс, он ждет событий
prefork - раздаем сокет процессам
AIO - итерируемся по наступившим событиям
threads - как fork, но внутри одного процесса
AIO - select, kqueue, poll, epoll...
13
web-серверы, кто есть кто?
1.  Apache – prefork, worker, С
2.  IIS, Tomcat, Jetty – threads, Java
3.  Starman, Hypnotoad – prefork, языки высокого
уровня
4.  nginx, lighttpd – асинхронные, С
5.  haproxy - проксирование, C
6.  Node.JS, Tornado – асинхронные, языки
высокого уровня
7.  Erlang!
8.  dev servers
14
Схема работы web-сервера
1.  Читаем конфиг
2.  Получаем сокет
3.  Открываем логи на запись
4.  Понижаем привилегии
5.  Запуск дочерних процесов/потоков
6.  Работаем в цикле
15
Схема работы web-сервера
16
Модульная архитектура web-сервера
• 
• 
• 
• 
web сервер – не монолитный
LoadModule – загрузка модулей
Этапы обработки запроса и модули
Дополнительные директивы, контексты
17
Файлы web-сервера
• 
• 
• 
• 
• 
Конфиг /etc/nginx/nginx.conf
Скрипт запуска /etc/init.d/nginx
PID-файл /var/run/nginx.pid
Access-log /var/log/nginx/access.log
Error-log /var/log/nginx/error.log
18
Процессы web-сервера
1. Master (root, 1 процесс)
§ Чтение и валидация конфига
§ Открытие сокета (ов)
§ Открытие файлов логов
§ Запуск и управление дочерними процессами
(worker)
§ Graceful restart
2. Worker (www-data, 1+ процессов)
§ Обработка входящих запросов
19
NGINX vs Apache
nginx лучше, apache проще
20
Конфиг Nginx
https://github.com/sat2707/web/blob/master/
tcp_servers/nginx.conf
https://github.com/sat2707/web/blob/master/
tcp_servers/itportal.conf
https://github.com/sat2707/web/blob/master/
tcp_servers/mipt.conf
{http} -> {server} -> {location}
{server_name} - имя домена
{root}, {alias} - откуда берем файлы
error_log, access_log ― лог ошибок сервера
21
Nginx, приоритеты локейшнов
location = /img/1.jpg
location /static/
location /media/
22
Frontend и Backend
Frontend
•  Отдача статики
•  Прокси к backend
•  SSI, SSL, TSL
•  Балансировка
•  Кеширование
•  Ресайз картинок, gzip…
Backend
•  Логика
23
Способы работы с бекендом
• 
• 
• 
• 
CGI
FastCGI
mod_perl, mod_python, mod_php…
PSGI, WSGI, Rack
24
WSGI
def simplest_wsgi_app(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/
plain')])
yield 'Hello, world!’
middlewares
25
gunicorn
gunicorn -b 0.0.0.0:8080 project.wsgi:application
http://gunicorn.org/#quickstart
26
Домашнее задание № 1
•  Поставить nginx, заставить отдавать статику
•  Поставить django (без паники, дам рецепт)
•  Запустить django через WSGI
Срок сдачи
9 марта 2016
27
Спасибо за
внимание!
Стыценко Илья
skype: sat2707, mailagent:
stycenko@corp.mail.ru
Автор
tekhnostrim
Документ
Категория
Презентации
Просмотров
1 097
Размер файла
339 Кб
Теги
лекция
1/--страниц
Пожаловаться на содержимое документа