Аникин

Блог об администрировании Linux, BSD и не только.

Связаться со мной:

Автоматическое добавление новых доменов на slaveDNS(bind9)

Скрипт смотрит в конфиг named.conf на мастере на наличие новых доменов. И при появлении новых доменов добавляет их в named.conf на slave сервере. Написан на питоне.
На мастер сервере нужно создать пользователя и добавить его в группу bind, чтобы у него были права на чтение named.conf. Также на master нужно разрешить трансфер зон.

allow-transfer { ip-slave_сервера; };

На slave сервере нужно настроить ssh авторизацию по ключам с master сервером для этого юзера.
Затем получаем сам скрипт и перенесем его в /usr/bin

git clone https://github.com/shmulya/zonefetch
mv zonefetch/fetch.py /usr/bin/fetch.py

Правим там переменные:
MASTERIP — ip master сервера(можно указать несколько серверов в формате [’ip1’,’ip2’])
REMOTE_USERNAME — юзер master сервера у которого есть права на чтение named.conf
PATH_TO_MASTER_ZONEFILE — файл с зонами на master
PATH_TO_SLAVE_ZONEFILE — каталог для файлов с зонами на slave

Скрипт пишет зоны в файлы вида /etc/bind/ip.conf, например для master с ip — 192.168.0.1 это будет /etc/bind/192.168.0.1.conf.
Эти файлы нужно создать предварительно и добавить соответствующие инклуды в /etc/named.conf, например:

include "/etc/bind/192.168.0.1.conf";

В конце добавим скрипт в крон примерно так

*/5 * * * * /usr/bin/python /usr/bin/fetch.py >> /var/log/zonefetch.log 2>&1
17 мая   bind   debian   DNS

Стандартное ядро в OVH

В OVH по умолчанию ставится модифицированное датацентром ядро, в котором нет многих нужных модулей. И некоторое ПО не работает. Например virtualbox не запускается с ошибкой типа:

ERROR ../libkmod/libkmod-module.c:1638 kmod_module_new_from_loaded: could not open /proc/modules: No such file or directory

К тому же ядро в образах ДЦ зачастую уже «протухшее».

Чтобы все заработало как надо, нужно поставить стандартное ядро из реп.
Смотрим какие ядра есть у нас в репозиториях

# apt search linux-image

Выбираем стандартное ядро stable и устанавливаем.

# apt install linux-image-3.16.0-4-amd64 linux-headers-3.16.0-4-amd64

Затем в /etc/default/grub правим диррективу GRUB_DEFAULT чтобы сервер грузился с нашего ядра.
Делаем

update-grub

и ребутимся

Если все работает правильно, ядро OVH можно вообще удалить.

5 мая   debian   Kernel   ovh   ubuntu   virtualbox

Менеджер версий php для Debian/Ubuntu.

Выкладываю мой скрипт который поможет установить несколько версий php из исходных кодов на ваш сервер. Скрипт делался в первую очередь для Debian и проверялся на Debian 8 x64. Но работает и на Ubuntu. Удобно с помощью скрипта поддерживать актуальные версии php на сервере с вестой, т.к скрипт умеет автоматически обновлять шаблоны весты при сборке.
На debian 7/8 с моими флагами установки без проблем собираются php 5.2 и выше.
На ubuntu 14.04/16.04 по умолчанию собираются php 5.3 и выше. 5.2 при компиляции валится с ошибкой. Поэтому если нужен 5.2 юзайте дебиан.
Что делает скрипт:

  1. При запуске спрашивает какие версии php требуется собрать(версию нужно вводить полностью. Например 7.1.2, а не 7.1. Можно ввести несколько версий через пробел), создавать ли на бинарник php-cgi симлинк в /usr/bin для быстрого доступа. Проверяет наличие на сервере панели vestacp. Если находит её, то спрашивает создавать ли шаблон web для каждой версии.
  2. При первом запуске спрашивает, нужно ли ставить зависимости. Если вы откажетесь от установки зависимостей, то вам нужно их установить самостоятельно. Иначе при сборке вы получите ошибки. При последующих запусках этот шаг пропускается. Нужно понимать что скрипт старается поставить все возможные зависимости, но в разных дистрибутивах могут использоваться разные пакеты или при использовании кастомных флагов компиляции может потребоваться что-то доустановить.
  3. Парсит http://php.net/downloads.php и http://php.net/releases/ на наличие bz2 архива с исходниками указанной юзером версии php. Если находит, скачивает и распаковывает исходники в /opt/php/src.


    Также можно положить архивы с иходниками в /opt/php/src/bzips, тогда скрипт не будет их скачивать.
  4. Конфигурит, по умолчанию с моими параметрами компиляции(подойдут для большинства пользователей). Собирает.

    Тем кто хочет использовать свои параметры компиляции обязательно кликнуть сюда
    Можно свои параметры конфигурирования положить в файл /opt/php/options. Если скрипт находит этот файл, то он использует его для конфигурирования. Свой файл можно сделать на основе моего. Скрипт заменяет version в файле конфигурирования на текущую собираемую версию. Это сделано для того чтобы скрипт автоматом создавал свой каталог для каждой версии. Если вы собираете например версию 5.3.29 и в вашем файле конфигурирования указано prefix=/opt/php/php-version, то это по сути равно prefix=/opt/php/php-5.3.29. При сборке нескольких версий одновременно эту фичу нужно использовать чтобы не собирать все версии в один каталог.
  5. При необходимости создает симлинк и шаблон для весты. Если создает темплейты для весты, то проверяет включен ли модуль cgi в апаче. Если модуль не включен, то включает его.

Запустить скрипт очень просто

# git clone https://github.com/petranikin/mgrvphp.git
# cd mgrvphp
# bash mgrvphp

Немного скриншотов

18 марта   debian   mgrvphp   php   php7   phpmgr   ubuntu   vesta control panel   vestacp

Перемещение окон между мониторами в xfce4 сочетанием клавиш

Xfce почему-то из коробки не умеет перемещать хоткеями окна между мониторами. Не между рабочими столами, а именно физическими мониторами. Это очень не удобно, особенно если вторым монитором используется телевизор. И если окно открылась на телике, то приходится его включать и тащить окно мышью. Кошмар в общем. Исправить этот досадный недостаток пришлось с помощью утилиты xdotool.
Устанавливаем её.

$ sudo apt install xdotool

С помощью неё можно перетащить активное окно на определенную координату
Для перемещения окна на первый монитор я использовал

xdotool getactivewindow windowmove --sync 100 100

Для перемещения окна на второй монитор

xdotool getactivewindow windowmove --sync 2000 100

Надеюсь всем понятно что в первой команде коодрдинаты 100 100, а во второй 2000 100 по оси X и оси Y соответственно.
Нужно на эти команды повесить хоткеи. Для этого надо зайти в Настройки — Клавиатура, вкладка «Комбинации клавиш». Я поставил Ctrl-1 для перемещения окна на 1 монитор, и Ctrl-2 для перемещения окна на второй монитор.

3 марта   hotkey   xdotool   xfce   xfce4

При выходе из ждущего режима пропадает соединение OpenVPN

Сделаем автоматический перезапуск OpenVPN на системах с systemd. В debian 9 создаем файл /etc/systemd/system/resume.openvpn.service с содержимым:

[Unit]
Description=Run openvpn after suspend
After=suspend.target

[Service]
ExecStart=/usr/sbin/service openvpn restart

[Install]
WantedBy=suspend.target

Затем выполняем

# systemctl enable resume.openvpn.service

Теперь при выходе из ждущего режима будет автоматически перезапускаться OpenVPN.

2017   debian   openvpn   suspend

Шаблон VDS с VestaCP c мультиверсионностью PHP

На наших VDS теперь доступен готовый шаблон Debian 8 с предустановленной панелью VestaCP и уже собранными версиями PHP от 5.2 до 7.1 включительно. Версию PHP можно выбирать свою для каждого сайта. Заказать VDS можно по этой ссылке. После выдачи VDS нужно зайти в панель управления VDS, кликнуть «Переустановка VDS» и выбрать шаблон «debian-8-X86_64-vestacp_multiphp»

Пароль пользователя admin в весте, совпадает с паролем root.

Обновился до Debian 9 Stretch

Первое что заметил, что выпилили fglrx. Благо свободный драйвер ATI допилили наконец до юзабельного состояния. В jessie на свободном драйвере у меня экран валился в квадраты и становился похожим на шахматную доску(HD7700). Теперь свободный драйвер мне нравится больше проприетарного. Он лучше интегрирован в систему и можно рулить настройками нескольких мониторов с гайки настроек дисплея в xfce. В проприетарном в jessie приходилось плясать с xrandr, по крайней мере в xfce.
Вернули в репозиторий firefox актуальной версии. Можно установить нормальный firefox помимо firefox-esr, не подключая дополнительные репы.
Ну и конечно относительно новые версии ПО, и ядро 4.8(в 2017 году мы таки добрались до ядра 4.x)
В общем неплохо, багов я не заметил.

2017   debian   fglrx   stretch

Миграция с ISPManager 4 на VestaCP

Выкатываем в паблик скрипт миграции с ISPManager 4 на VestaCP.
Обращаем ваше внимание, что:

  • копирование данных скриптом isp2vesta возможно тогда и только тогда, когда на сервере установлены nginx в качестве прокси и apache в качестве основного веб-сервера
  • на исходном сервере с ISPmanager никакие данные не изменяются, пакеты и программы не устанавливаются.
  • при копировании без указания пользователя переносятся все пользователи ISPmanager, включая отключенных
  • Копирование реселлеров из ISPManager PRO не происходит в виду отсутствия этого функционала в VestaCP пути пользователей ISPManager используются дефолтные: /var/www/USERNAME
  • для копирования данных необходимо, чтобы на исходном сервере работал SSH на 22 порту и у вас был доступ к серверу root
  • для копирования баз данных MySQL необходимо, чтобы на исходном сервере работал MySQL
  • для копирования не нужна действующая лицензия ISPManager, так как её функционал для переноса не используется

Скрипт миграции можно взять на гитхаб

Запускать так:

# bash isp2vesta IP-ADDRESS ROOT-PASSWORD [имя пользователя]

При запуске без параметров копируются ВСЕ пользователи.
При запуске с параметром

all-enabled-users

копируются все активные пользователи.
При запуске с параметром

all-disabled-users

копируются все не активные пользователи.

исходная ссылка
В общем тестируйте, о проблемах сообщить можно в скайпе.

P.S. Я ещё добавляю вот эти модули перед миграцией

# a2enmod actions
# a2enmod cgi
# a2enmod authz_groupfile

ещё P.S. Новогодняя акция: мы оказываем помощь по переносу ваших сайтов из панели ISPManager 4 на VestaCP при покупке сервера линеек 1, 2, 3 за дополнительную плату, но компенсируем вам затраты, предоставив второй месяц аренды сервера бесплатно.

Ошибка при установке фряхи через bsdinstall

При установке freebsd на сторонний носитель с помощью bsdinstall после разметки диска и скачивания архива получаем ошибку

Error while fetching file:///usr/freebsd-dist/MANIFEST" - no such file or directory

идем на ftp://ftp.freebsd.org/pub/FreeBSD/releases/
Выбираем платформу, затем версию фряхи, в общем идем по каталогам. И получаем ссылку на файл, например для freebsd 11.0 amd64:
ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/11.0-RELEASE/MANIFEST

Скачиваем файл в /usr/freebsd-dist на текущей системе и снова запускаем bsdinstall.

2016   bsdinstall   Freebsd

Добавление кучи ip в vestacp

Создаем скрипт со следующим содержимым

#!/bin/bash
export VESTA=/usr/local/vesta/
file="/root/ip.txt"
while read line
do
/usr/local/vesta/bin/v-add-sys-ip $line 255.255.255.255 eth0
done < $file

В /root/ip.txt кладем список ip построчно.
Делаем скрипт исполняемым и запускаем. IP добавлены на сервер в весте.

Ctrl + ↓ Ранее