www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Мониторинг  

Какая задача мониторинга отнимает больше всего времени?

Многие системные администраторы тратят до 30% рабочего времени на рутину мониторинга. Но

 Читать далее...

Рынок труда  

Какие навыки вы хотите развивать в 2026 году?

Рынок труда меняется быстро. Еще вчера его называли рынком соискателей, а сегодня

 Читать далее...

Книжная полка  

От сисадмина до архитектора: книги, которые прокачают ваш стек в этом году

Новинки от издательства «БХВ» отличаются тем, что в них часто делается упор

 Читать далее...

Автоматизация  

Автоматизируем рутину: что реально работает?

Многие сисадмины автоматизировали что-то за последний год. Но далеко не все остались

 Читать далее...

Защита ИТ-системы  

Практическая защита: что вы внедрили и что мешает?

Какие меры безопасности реально внедрить в реальных условиях – и что не

 Читать далее...

Вопрос-ответ  

Обеспечиваем безопасную эксплуатацию базы данных

Что для вас чаще всего является причиной инцидентов с БД? Как вы

 Читать далее...

Книжная полка  

От «безопасного» Linux до Контролируемого взлома

Издательство «БХВ» продолжает радовать читателей интересными новинками и в наступившем году. Вы можете

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 13425
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 13532
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 10991
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 5891
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 6740
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 6613
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 9454
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 6066
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 6278
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 10442
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 13895
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 15368
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 17676
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 12531
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 10541
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 8747
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 7352
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 6159
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 5781
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 6093
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Использование шаблонов веб-сервера

Архив номеров / 2017 / Выпуск №7-8 (176-177) / Использование шаблонов веб-сервера

Рубрика: Администрирование /  How To

Использование шаблонов веб-сервера

В процессе разработки веб-приложений необходимо постоянно тестировать их работу. Для этого после локального прогона следует перенести все на удаленный сервер, где файлы будут доступны автотестам и разработчикам

Самый простой вариант – сделать все стандартно, то есть скопировать файлы и настроить в веб-сервере новый сайт, но для этого потребуются соответствующие права, плюс затраты по времени будут больше. Поэтому выкладку на веб-сервер желательно максимально автоматизировать. Для небольших проектов необязательно использовать CI, можно выполнить несколько простых настроек. Простейший процесс деплоя при помощи штатных возможностей Git в BitBucket рассмотрен в [1]. С веб-сервером тоже можно создать готовую настройку, при которой он будет сам забирать файлы с подкаталога /var/www/имя_поддомена при обращении поддомен.example.org.

server {

    listen 80;

    server_name *.example.org;

    set $subdomain "";

    if ($host ~* ^([a-z0-9-\.]+)\.example.org$) {

        set $subdomain $1;

    }

        location / {

        root /var/www/$subdomain;

        index index.html index.php;

            location ~ \.php$ {

                include snippets/fastcgi-php.conf;

                fastcgi_pass unix:/run/php/php7.0-fpm.sock;

        }

    }

}

Теперь при деплое достаточно создать нужный каталог и скопировать в него файлы любым удобным методом. Веб-сервер все сам подхватит без перезапуска.

Но если приложение требует разных сред, то лучшим вариантом будет использование контейнеров. Здесь можно самостоятельно настроить шаблон для proxy_pass nginx, но есть более удобный вариант, требующий меньше затрат [2] ипозволяющий все сделать буквально парой команд.

Перестраиваем DNS, чтобы имя *.example.org смотрело на нужный IP. Запускаем контейнер jwilder/nginx-proxy:

$ docker run -d -p 80:80 -v /var/run/docker.sock: /tmp/docker.sock:ro jwilder/nginx-proxy

И при запуске контейнера указываем в параметре VIRTUAL_HOST нужный домен:

$ docker run -e VIRTUAL_HOST=foo.example.com nginx

Теперь к контейнеру можем обратиться по DNS. nginx-proxy поддерживает wild-домены, SSL, несколько портов, разные параметры проксирования и многое другое, с его помощью можно реализовать любой сценарий. Только смотреть логи при массовом применении Docker не очень удобно, так как они разбросаны по каталогам, путь к которым у каждого контейнера свой. По умолчанию используется --log-driver=json-file, который складывает данные в JSON-формате вподкаталоги /var/lib/docker/containers, и так просто их в ELK (Elasticsearch + Logstash + Kibana) не подашь. Можно перенастроить Docker в --log-driver=syslog, но разбирать информацию из одного файла не очень удобно. Разработчик nginx-proxy предложил свой вариант решения этой задачи – docker-gen [3], который самостоятельно генерирует нужные пути. Настраивается он просто.

Устанавливаем filebeat [4], который используется для отправки логов в Logstash:

$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

$ sudo apt install apt-transport-https

$ sudo apt update

$ sudo apt install filebeat

Добавляем в автостарт:

$ sudo systemctl daemon-reload

$ sudo systemctl enable filebeat

Скачиваем архив:

$ wget -c https://github.com/jwilder/docker-gen/releases/download/0.7.3/docker-gen-linux-amd64-0.7.3.tar.gz

Копипуем файл docker-gen в /opt/docker-gen. Для удобства создаем конфигурацию для systemd:

$ sudo vi /etc/systemd/system/docker-gen.service

 

[Unit]

Description=A file generator that renders templates using

Docker Container meta-data.

Documentation=https://github.com/jwilder/docker-gen

After=network.target docker.socket

Requires=docker.socket=

 

[Service]

ExecStart=/opt/docker-gen/docker-gen -notify "/etc/init.d

/filebeat restart > /dev/null 2>&1 &" -notify-output -watch

/etc/docker-gen/filebeat.tmpl /etc/filebeat/filebeat.yml

Restart=always

 

[Install]

WantedBy=multi-user.target

Alias=docker-gen.service

Принцип простой. При запуске и работе docker-gen проверяет текущие контейнеры и создает на основе шаблона конфигурацию для filebeat (файл /etc/filebeat/filebeat.yml). Параметры могут быть разные. В примере отбираем контейнеры изопределенного репозитория, для удобства последующего отбора используем в качестве поля информацию из VIRTUAL_HOST:

$ sudo vi /etc/docker-gen/filebeat.tmpl

 

filebeat.prospectors:

 {{ range $key, $value := . }}

  - paths:

     - /var/lib/docker/containers/{{ $value.ID }}/{{ $value.ID }}-json.log

     - /var/log/plugins/{{ $value.Name }}/*.log

    tags: ["{{ $value.Image.Repository }}"]

    fields:

       {{ if eq $value.Image.Repository "testsite" }}

       virtual_host: "{{ $value.Env.VIRTUAL_HOST }}"

       {{ end }}

 {{ end }}

output:

  logstash:

    hosts: ['logstash.expamle.org:5044']

    tls:

      certificate_authorities: ['/etc/ssl/logstash/logstash.crt']

    ssl:

      enabled: true

      verification_mode: none

      supported_protocols: [SSLv3, TLSv1.0, TLSv1.1, TLSv1.2]

 

logging:

  files:

    rotateeverybytes: 10485760

Запускаем:

$ sudo systemctl start filebeat

Проверяем изменения в /etc/filebeat/filebeat.yml. Все готово к работе.

  1. Яремчук С. Работаем с BitBucket. // «Системный администратор», №10, 2016 г. – С. 70-73 (http://samag.ru/archive/article/3298).
  2. Проект nginx-proxy – https://github.com/jwilder/nginx-proxy.
  3. Проект docker-gen – https://github.com/jwilder/docker-gen.
  4. Страница filebeat – https://www.elastic.co/products/beats/filebeat.

Подготовил Сергей Яремчук


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru