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

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

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

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

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

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

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

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

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

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

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

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

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

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

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

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

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

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

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

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

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

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

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

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

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

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

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

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

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

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

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

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

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

02.12.2013г.
Просмотров: 3029
Комментарии: 0
Не думай о минутах свысока

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

Друзья сайта  

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

Архив номеров / 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