Финальная практическая работа
Постановка задачи
- Установить веб серевер на базе Linux
- Все работы проводить на тестовом сервере demo-vmX.sac.kopmans.com
- Создать пользователя app, так же как и www-data не имеющего шелла
- Через менеджер пакетов установить php-fpm, поменять его конфигурацию(/etc/php/7.3/fpm), так чтобы слушал на unix-socket (или проверить что это уже так) и был запущен от пользователя app
- Через менеджер пакетов установить nginx, поменять его конфигурацию (/etc/nginx), так чтобы
- слушал на порту 8080 на IP 127.0.0.1 и отдавал файлы из каталога /var/www/html (проверить)
- был запущен от пользователя app
- Все php файлы в директории /var/www/html обрабатывал с помощью php-fpm (добавить в конфигурацию внутри cекции server)
location ~* \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
- Взять файлы веб сайта отсюда, распаковать и положить их в /var/www/html, сделать пользователя app их владельцем
- Через менеджер пакетов установить varnish
- Поменять конфигурацию varnish, так чтобы
- слушал на основном IP-адресе сервера и отвечал на порту 80
- пробрасывал запросы на nginx
- кешировал файл cached.php, но не кешировал (всегда запрашивал у nginx) файл served.php
Подсказка 2: в Ubuntu/Debian скрипт автозапуска varnish содержит ошибку, из-за которой он игнорирует настройки. Нужно удалить параметр -a :6081 из /lib/systemd/system/varnish.service и перезапустить systemd (systemctl daemon-reload) чтобы он прочитал поправленный скрипт, тогда удастся сменить порт на 80
Подсказка 3: Varnish настраивается "скриптами" на его внутреннем языке, код для исключения из кеширования выглядит примерно так:if (req.url == "/served.php") {и поместить его надо внутри функции vcl_recv в файле /etc/varnish/default.vcl
return(pass);
}
- слушал на основном IP-адресе сервера и отвечал на порту 80
- Создать Dockerfile, для сборки контейнера, делающего то же самое что и в первой части задания