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

Связаться со мной:
Позднее Ctrl + ↑

Обновился до 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 добавлены на сервер в весте.

Защита от DDoS атаки ботнета взломанных Wordpress сайтов

Столкнулся с атакой взломанных wordpress говносайтов на один из клиентских серверов. Клиент пожаловался на недоступность сайта, сайт отдавал ошибку gateway timeout. Зашёл на сервер, вижу

load average: 145.44, 114.78, 78.83

Странно что сервер ещё отвечал при такой нагрузке. Смотрю лог недоступного виртуалхоста и вижу кучу запростов типа

GET /index.php HTTP/1.0" 200 37648 "-" "WordPress/4.5.2; http://52.39.213.67; verifying pingback from 191.96.249.54"

Блокируем ботов по ключевому слову WordPress

# iptables -A INPUT -p tcp --dport 80 -m string --string 'WordPress' --algo kmp -j DROP

Проблема решена.

Простая установка OpenVPN сервера с помощью QuickOpenVPN.

QuickOpenvpn тулза для быстрого разворачивания OpenVPN сервера и генерации клиентских конфигов, сертификатов и ключей. Адрес на github https://github.com/shmulya/quickopenvpn

Рассмотрим установку на Ubuntu 14.04.
Заходим на сервер по ssh и устанавливаем нужные пакеты

# apt-get install python-pip openssl openvpn git
# pip install pyyaml

Скачаем установщик тулзы

# git clone https://github.com/shmulya/quickopenvpn.git

Переходим в каталог установщика и запускаем установку

# cd quickopenvpn
# python install.py

Установщик задаст несколько вопросов(email, где разместить ключи, пароль для веб-морды и т.д), отвечаем на них и дожидаемся генерации всех ключей и завершения установки. Также если вы используете именно Ubuntu 14.04 тулза спросит переместить ли конфиг в /etc/openvpn и запустить ли vpn-сервер. На других дистрах эта функция не реализована и придется все делать вручную, поэтому рекомендую именно Ubuntu 14.04. Также спросит разрешить ли форвардинг пакетов и добавить ли правило натирования в iptables. Отвечаем на все «y», и по окончанию работы тулзы мы получим полностью настроенный и работающий OpenVPN сервер.
Для старта веб-морды выполняем

./start

И заходим на https://ip_сервера:4443/ там логинимся с паролем который мы указали при установке

Жмакаем «Add» для добавления клиентского сертификата, указываем имя сертификаты. И после генерации мы сможем скачать архив со всем необходимым для подключения к серверу.

Жмакаем «Download» и получаем архив. На клиенте устанавливаем OpenVPN, распаковываем архив в /etc/openvpn. Не забываем в конфиге клиента поправить пути к ключам и сертификату. И стартуем сервис.
Видим что появился новый интерфейс и сервер пингуется. Значит все работает.

2016   openvpn   quickopenvpn   ubuntu

Мультиверсионность php на CentOS с VestaCP.

В комментариях к статье Мультиверсионность php на сервере с VestaCP один из читателей попросил написать статью как сделать тоже самое на CentOS. Я уже приготовился писать статью про компиляцию php из исходников, но почитав форум весты увидел что все уже сделано за меня.

На официальном форуме VestaCP есть скрипт, который добавляет репозиторий с уже собранными версиями php 5.5, 5.6 и 7.0. По умолчанию в CentOS 6.8 установлен php 5.4. В итоге после установки скрипта мы имеем все версии php начиная от 5.4.

Установка супер простая

# wget http://mirror.skamasle.com/vestacp/PHP/sk-phpinstaller_beta02_3.sh
# bash sk-phpinstaller_beta02_3.sh

Вывод установщика не очень многословен

После установки при редактировании виртуального хоста в web-шаблонах мы видим что появились новые пункты с новыми версиями php.
Пробуем переключится и смотрим phpinfo
Как видим, все работает. За скрипт спасибо пользователю с ником skamasle.

Установка ispmanager 4 на Ubuntu 14.04

Существует ПО которое работает только под определенной ОС. Так вот понадобилось одному клиенту такое ПО, которое работает только под ubuntu 14.04, но при всем при этом клиенту необходимо чтобы на сервере был установлен ispmanager 4. Как мы знаем ispmanager 4 не поддерживает 14 убунту. Придется выкручиваться.
Итак. Стандартно начинаем установку испы

wget "http://download.ispsystem.com/install.4.sh"
sh install.sh

Отвечаем на вопросы установщика и практически сразу получаем ошибку

Can’t get information about available packages

Видим в логе что произошел segmentation fault. Ищем какая либа его вызвала.

cat /usr/local/ispmgr/var/pkgctl.log|grep LoadModule

В последней строчке мы увидим эту либу.

Переименовываем её

mv /usr/local/ispmgr/lib/xxx.so /usr/local/ispmgr/lib/_xxx.so

Затем снова запускаем установку.

/usr/local/ispmgr/sbin/ISPmanager-install.sh

Теперь установка идет относительно нормально, ошибки мы получим только при проверке установленного ПО, т.к панель не умеет работать с апачем 2.4. Ну и ладно, главное панель установилась. Теперь нам нужно установить апач 2.2 вместо 2.4 для корректной работы панели.
Апач 2.2 мы возьмем в репозиториях 12 убунты.
Создаем файлы с содержимым
/etc/apt/sources.list.d/ubuntu1204.list

deb http://ru.archive.ubuntu.com/ubuntu/ precise main

/etc/apt/preferences.d/apache22

Package: apache*
Pin: release a=precise
Pin-Priority: 500

/etc/apt/preferences.d/libapache

Package: libapache*
Pin: release a=precise
Pin-Priority: 500

Выполняем

apt-get update

Затем идем в меню Возможности isp панели и удаляем апач. После удаления нужно подчистить оставшееся за панелью. Выполняем

apt-get purge apache2*

Все. Теперь идем в меню Возможности и жмакаем установить веб-сервер Apache. Установится apache 2.2. Далее доустанавливаем необходимое ПО, такое как php, phpmyadmin, webmail. Все это ПО не установилось по умолчанию, т.к оно не может работать без апача 2.2. Лучше также сразу установить nginx.

Есть ещё один ньюанс, не установится модуль апач для php, соответственно сразу после установки нужно удалить старые конфиги для webmail и phpmyadmin. Создать пользователя default-user и у него домен default.domain, которому разрешён php как cgi. И соответсвенно создать симлинки в каталог виртуалхоста юзера.

ln -s /usr/share/squirrelmail/ /home/default-user/data/www/default.domain/webmail
ln -s /usr/share/phpmyadmin /home/default-user/data/www/default.domain/myadmin

Придется смирится что myadmin и webmail будут работать по http, а не по https.
Также возможно придется поправить некоторые ошибки в конфигах squirrelmail и phpmyadmin, что выходит за пределы этой статьи.

А вообще лучше не использовать все эти пляски с бубном, и отказаться от устаревшей продукции isp. Например в пользу панели VestaCP.

2016   isp   isp-manager   ispmanager   ispmgr   ubuntu

Мультиверсионность php на сервере с VestaCP.

Можно использовать скрипт который упрощает установку разных версий php
Сделаем возможность использовать несколько разных версий php на одном сервере c Ubuntu 14.04 и VestaCP. Возможность переключать версию php будет для каждого сайта отдельно. По умолчанию в ubuntu 14.04.4 с вестой установился php 5.5.

Все действия производятся под root’ом.
Соберем старый php 5.4.
Установим необходимые пакеты.

apt-get build-dep -y php5
apt-get install libt1-dev libonig-dev libmcrypt-dev libreadline-dev

Создаем каталог для исходников

mkdir /php/
mkdir /php/src

Скачиваем туда сорцы с http://php.net.

wget -O /php/src/php-5.4.45.tar.bz2 http://de1.php.net/get/php-5.4.45.tar.bz2/from/this/mirror
cd /php/src/
tar -xjf php-5.4.45.tar.bz2
cd php-5.4.45

И создаем каталог куда будем собирать php

mkdir /php/php54

Конфигурим(обратите внимание на переменную —prefix=, она указывает на каталог куда собираем php)

./configure \
--prefix=/php/php54 \
--with-config-file-path=/etc \
--with-regex=php \
--disable-rpath \
--disable-static \
--with-pic \
--with-layout=GNU \
--enable-calendar \
--enable-sysvsem \
--enable-sysvshm \
--enable-sysvmsg \
--enable-bcmath \
--with-bz2 \
--enable-ctype \
--with-cdb \
--with-iconv \
--enable-exif \
--enable-ftp \
--with-gettext \
--enable-mbstring \
--with-onig=/usr \
--with-pcre-regex=/usr \
--enable-shmop \
--enable-sockets \
--enable-wddx \
--with-libxml-dir=/usr \
--with-zlib \
--with-kerberos=/usr \
--with-openssl=/usr \
--enable-soap \
--enable-zip \
--with-mhash=yes \
--with-mysql-sock=/var/run/mysqld/mysqld.sock \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--enable-pdo \
--with-pdo-mysql=mysqlnd \
--enable-exif \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-freetype-dir=/usr \
--with-t1lib \
--with-zlib-dir=/usr \
--with-mcrypt=/usr \
--with-mhash \
--with-xsl=/usr \
--enable-zip \
--enable-cgi \
--with-curl \
--with-gd \
--enable-pcntl \
--enable-mbregex \
--enable-gd-native-ttf \
--with-libdir=lib64 \
--enable-dba=shared \
--enable-intl \
--with-readline=/usr \
--enable-simplexml \
--with-libdir=/lib/x86_64-linux-gnu \
--with-config-file-scan-dir="$instdir"/etc \
--with-pspell

Компиляем

make
make install

Включаем модуль cgi для апача

a2enmod cgi

Переключать будем шаблонами apache. Скопируем существующий шаблон phpcgi

cp /usr/local/vesta/data/templates/web/apache2/phpcgi.sh /usr/local/vesta/data/templates/web/apache2/php54.sh
cp /usr/local/vesta/data/templates/web/apache2/phpcgi.stpl /usr/local/vesta/data/templates/web/apache2/php54.stpl
cp /usr/local/vesta/data/templates/web/apache2/phpcgi.tpl /usr/local/vesta/data/templates/web/apache2/php54.tpl

Открываем файл /usr/local/vesta/data/templates/web/apache2/php54.sh и находим там строку

wrapper_script='#!/usr/bin/php-cgi -cphp5-cgi.ini'

заменяем на

wrapper_script='#!/php/php54/bin/php-cgi -cphp5-cgi.ini'

И перезапускаем весту

service vesta restart

Теперь если зайти в весте в редактирование домена в web, то в шаблонах апача можно увидеть новый шаблон php54. Можно попробовать переключится.

Аналогично собираем php 5.6 и php 7.0, в каталоги /php/php56 и /php/php70 соответсвенно. И создаем для них шаблоны php56 и php70. Конфигурирование для php7 несколько отличается от php5. Мои параметры для конфигурирования есть в этой статье.

В результате этих манипуляций у нас появятся новые шаблоны php54, php56 и php70, с соответсвующими версиями php. Теперь для каждого домена мы можем выбрать любую версию php от 5.4 до 7.0. С выходом новых версий их можно добавлять к текущим таким же способом.

Дампы всех баз mysql

Сделать дампы всех баз данных пользователя, каждую базу в отдельный дамп:

for i in `mysql -u $USER -p$PASSWORD -e'show databases;' | \
 grep -v performance_schema | grep -v information_schema | grep -v mysql | \
 grep -v Database`; do mysqldump -u $USER -p$PASSWORD $i > /backup/mysql/$i.sql;done
$USER - пользователь mysql
$PASSWORD - пароль пользователя mysql
2015   mysql   mysqldump
Ранее Ctrl + ↓