Финальная практическая работа

Постановка задачи

  1. Установить веб серевер на базе 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
      Подсказка 1: конфиг файлы в /etc/default/varsnish и /etc/varnish/default.vcl
      Подсказка 2: в Ubuntu/Debian скрипт автозапуска varnish содержит ошибку, из-за которой он игнорирует настройки. Нужно удалить параметр -a :6081 из /lib/systemd/system/varnish.service и перезапустить systemd (systemctl daemon-reload) чтобы он прочитал поправленный скрипт, тогда удастся сменить порт на 80
      Подсказка 3: Varnish настраивается "скриптами" на его внутреннем языке, код для исключения из кеширования выглядит примерно так:
      if (req.url == "/served.php") {
          return(pass);
      }
      и поместить его надо внутри функции vcl_recv в файле /etc/varnish/default.vcl
  2. Создать Dockerfile, для сборки контейнера, делающего то же самое что и в первой части задания