<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Аникин: заметки с тегом ubuntu</title>
<link>https://anikin.pw/tags/ubuntu/</link>
<description>Блог об администрировании Linux, BSD и не только</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Блог об администрировании Linux, BSD и не только</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Стандартное ядро в OVH</title>
<guid isPermaLink="false">80</guid>
<link>https://anikin.pw/all/standartnoe-yadro-v-ovh/</link>
<pubDate>Fri, 05 May 2017 13:29:36 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/standartnoe-yadro-v-ovh/</comments>
<description>
&lt;p&gt;В OVH по умолчанию ставится модифицированное датацентром ядро, в котором нет многих нужных модулей. И некоторое ПО не работает. Например virtualbox не запускается с ошибкой типа:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ERROR ../libkmod/libkmod-module.c:1638 kmod_module_new_from_loaded: could not open /proc/modules: No such file or directory&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;К тому же ядро в образах ДЦ зачастую уже «протухшее».&lt;/p&gt;
&lt;p&gt;Чтобы все заработало как надо, нужно поставить стандартное ядро из реп.&lt;br /&gt;
Смотрим какие ядра есть у нас в репозиториях&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt search linux-image&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Выбираем стандартное ядро stable и устанавливаем.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt install linux-image-3.16.0-4-amd64 linux-headers-3.16.0-4-amd64&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем в /etc/default/grub правим диррективу GRUB_DEFAULT чтобы сервер грузился с нашего ядра.&lt;br /&gt;
Делаем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;update-grub&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;и ребутимся&lt;/p&gt;
&lt;p&gt;Если все работает правильно, ядро OVH можно вообще удалить.&lt;/p&gt;
</description>
</item>

<item>
<title>Менеджер версий php для Debian/Ubuntu.</title>
<guid isPermaLink="false">78</guid>
<link>https://anikin.pw/all/menedzher-versiy-php/</link>
<pubDate>Sat, 18 Mar 2017 17:46:31 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/menedzher-versiy-php/</comments>
<description>
&lt;p&gt;&lt;b&gt;Скрипт мультиверсионности мной более не поддерживается, т.к в новых версиях дебиан все сложнее автоматизировать установку старых версий php. Поэтому php 5 собирайте руками. Либо проходите по &lt;a href="https://anikin.pw/all/virtualki-v-rf/"&gt;ссылке&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Выкладываю мой скрипт который поможет установить несколько версий php из исходных кодов на ваш сервер. Скрипт делался в первую очередь для Debian и проверялся на Debian 8 x64. Но работает и на Ubuntu. Удобно с помощью скрипта поддерживать актуальные версии php на сервере с вестой, т.к скрипт умеет автоматически обновлять шаблоны весты при сборке.&lt;br /&gt;
На debian 7/8 с моими флагами установки без проблем собираются php 5.2 и выше.&lt;br /&gt;
На ubuntu 14.04/16.04 по умолчанию собираются php 5.3 и выше. 5.2 при компиляции валится с ошибкой. Поэтому если нужен 5.2 юзайте дебиан.&lt;br /&gt;
Что делает скрипт:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;При запуске спрашивает какие версии php требуется собрать(версию нужно вводить полностью. Например 7.1.2, а не 7.1. Можно ввести несколько версий через пробел), создавать ли на бинарник php-cgi симлинк в /usr/bin для быстрого доступа. Проверяет наличие на сервере панели vestacp. Если находит её, то спрашивает создавать ли шаблон web для каждой версии.&lt;/li&gt;
&lt;li&gt;При первом запуске спрашивает, нужно ли ставить зависимости. Если вы откажетесь от установки зависимостей, то вам нужно их установить самостоятельно. Иначе при сборке вы получите ошибки. При последующих запусках этот шаг пропускается. Нужно понимать что скрипт старается поставить все возможные зависимости, но в разных дистрибутивах могут использоваться разные пакеты или при использовании кастомных флагов компиляции может потребоваться что-то доустановить.&lt;/li&gt;
&lt;li&gt;Парсит &lt;a href="http://php.net/downloads.php"&gt;http://php.net/downloads.php&lt;/a&gt; и &lt;a href="http://php.net/releases/"&gt;http://php.net/releases/&lt;/a&gt; на наличие bz2 архива с исходниками указанной юзером версии php. Если находит, скачивает и распаковывает исходники в /opt/php/src.&lt;br /&gt;
&lt;details&gt;&lt;br /&gt;
&lt;summary&gt;&lt;/summary&gt;&lt;br /&gt;
Также можно положить архивы с иходниками в /opt/php/src/bzips, тогда скрипт не будет их скачивать.&lt;br /&gt;
&lt;/details&gt;&lt;/li&gt;
&lt;li&gt;Конфигурит, по умолчанию с моими параметрами компиляции(подойдут для большинства пользователей). Собирает.&lt;br /&gt;
&lt;details&gt;&lt;br /&gt;
&lt;summary&gt;&lt;b&gt;Тем кто хочет использовать свои параметры компиляции обязательно кликнуть сюда&lt;/b&gt;&lt;/summary&gt;&lt;br /&gt;
Можно свои параметры конфигурирования положить в файл /opt/php/options. Если скрипт находит этот файл, то он использует его  для конфигурирования. Свой файл можно сделать на основе &lt;a href="https://anikin.pw/files/options"&gt;моего&lt;/a&gt;. Скрипт заменяет &lt;b&gt;version&lt;/b&gt; в файле конфигурирования на текущую собираемую версию. Это сделано для того чтобы скрипт автоматом создавал свой каталог для каждой версии. Если вы собираете например версию 5.3.29 и в вашем файле конфигурирования указано prefix=/opt/php/php-version, то это по сути равно prefix=/opt/php/php-5.3.29. При сборке нескольких версий одновременно эту фичу нужно использовать чтобы не собирать все версии в один каталог.&lt;br /&gt;
&lt;/details&gt;&lt;/li&gt;
&lt;li&gt;При необходимости создает симлинк и шаблон для весты. Если создает темплейты для весты, то проверяет включен ли модуль cgi  в апаче. Если модуль не включен, то включает его.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Запустить скрипт очень просто&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# git clone https://github.com/petranikin/mgrvphp.git
# cd mgrvphp
# bash mgrvphp&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Немного скриншотов&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1068" data-ratio="1.5300859598854"&gt;
&lt;img src="https://anikin.pw/pictures/-_2017-03-18_16-15-49.png" width="1068" height="698" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/-_2017-03-18_16-16-20.png" width="1068" height="698" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/-_2017-03-18_16-17-12.png" width="1068" height="698" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/-_2017-03-18_16-18-08.png" width="1068" height="698" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/-_2017-03-18_17-38-08.png" width="1068" height="679" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/-_2017-03-18_17-41-27.png" width="952" height="525" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Установка ispmanager 4 на Ubuntu 14.04</title>
<guid isPermaLink="false">63</guid>
<link>https://anikin.pw/all/ustanovka-ispmanager-4-na-ubuntu-14-04/</link>
<pubDate>Mon, 11 Apr 2016 18:09:15 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/ustanovka-ispmanager-4-na-ubuntu-14-04/</comments>
<description>
&lt;p&gt;Существует ПО которое работает только под определенной ОС. Так вот понадобилось одному клиенту такое ПО, которое работает только под ubuntu 14.04, но при всем при этом клиенту необходимо чтобы на сервере был установлен ispmanager 4. Как мы знаем ispmanager 4 не поддерживает 14 убунту. Придется выкручиваться.&lt;br /&gt;
Итак. Стандартно начинаем установку испы&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;wget &amp;quot;http://download.ispsystem.com/install.4.sh&amp;quot;
sh install.sh&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Отвечаем на вопросы установщика и практически сразу получаем ошибку&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Can’t get information about available packages&lt;/b&gt;&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-17:20:29.png" width="600" height="215" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Видим в логе что произошел segmentation fault. Ищем какая либа его вызвала.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;cat /usr/local/ispmgr/var/pkgctl.log|grep LoadModule&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В последней строчке мы увидим эту либу.&lt;/p&gt;
&lt;p&gt;Переименовываем её&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mv /usr/local/ispmgr/lib/xxx.so /usr/local/ispmgr/lib/_xxx.so&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-17:21:59.png" width="915" height="134" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Затем снова запускаем установку.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/usr/local/ispmgr/sbin/ISPmanager-install.sh&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь установка идет относительно нормально, ошибки мы получим только при проверке установленного ПО, т.к панель не умеет работать с апачем 2.4. Ну и ладно, главное панель установилась. Теперь нам нужно установить апач 2.2 вместо 2.4 для корректной работы панели.&lt;br /&gt;
Апач 2.2 мы возьмем в репозиториях 12 убунты.&lt;br /&gt;
Создаем файлы с содержимым&lt;br /&gt;
&lt;b&gt;/etc/apt/sources.list.d/ubuntu1204.list&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;deb http://ru.archive.ubuntu.com/ubuntu/ precise main&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;/etc/apt/preferences.d/apache22&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Package: apache*
Pin: release a=precise
Pin-Priority: 500&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;/etc/apt/preferences.d/libapache&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Package: libapache*
Pin: release a=precise
Pin-Priority: 500&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Выполняем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;apt-get update&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем идем в меню Возможности isp панели и удаляем апач. После удаления нужно подчистить оставшееся за панелью. Выполняем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;apt-get purge apache2*&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Все. Теперь идем в меню Возможности и жмакаем установить веб-сервер Apache. Установится apache 2.2. Далее доустанавливаем необходимое ПО, такое как php, phpmyadmin, webmail. Все это ПО не установилось по умолчанию, т.к оно не может работать без апача 2.2. Лучше также сразу установить nginx.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-18:27:54.png" width="1719" height="635" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Есть ещё один ньюанс, не установится модуль апач для php, соответственно сразу после установки нужно удалить старые конфиги для webmail и phpmyadmin. Создать пользователя default-user и у него домен default.domain, которому разрешён php как cgi. И соответсвенно создать симлинки в каталог виртуалхоста юзера.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;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&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Придется смирится что myadmin и webmail будут работать по http, а не по https.&lt;br /&gt;
Также возможно придется поправить некоторые ошибки в конфигах squirrelmail и phpmyadmin, что выходит за пределы этой статьи.&lt;/p&gt;
&lt;p&gt;А вообще лучше не использовать все эти пляски с бубном, и отказаться от устаревшей продукции isp. Например в пользу &lt;a href="http://anikin.pw/all/obzor-besplatnoy-paneli-upravlenia-hostingom-vestacp/"&gt;панели VestaCP&lt;/a&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>Мультиверсионность php на сервере с VestaCP.</title>
<guid isPermaLink="false">64</guid>
<link>https://anikin.pw/all/multiversionnost-php-na-servere-s-vestacp/</link>
<pubDate>Mon, 11 Apr 2016 13:59:31 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/multiversionnost-php-na-servere-s-vestacp/</comments>
<description>
&lt;p&gt;&lt;a href="https://anikin.pw/all/menedzher-versiy-php/"&gt;Можно использовать скрипт который упрощает установку разных версий php&lt;/a&gt;&lt;br /&gt;
Сделаем возможность использовать несколько разных версий php на одном сервере c Ubuntu 14.04 и VestaCP. Возможность переключать версию php будет для каждого сайта отдельно. По умолчанию в ubuntu 14.04.4 с вестой установился php 5.5.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-13:09:42.png" width="1255" height="533" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Все действия производятся под root’ом.&lt;br /&gt;
Соберем старый php 5.4.&lt;br /&gt;
Установим необходимые пакеты.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;apt-get build-dep -y php5
apt-get install libt1-dev libonig-dev libmcrypt-dev libreadline-dev&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создаем каталог для исходников&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mkdir /php/
mkdir /php/src&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Скачиваем туда сорцы с &lt;a href="http://php.net"&gt;http://php.net&lt;/a&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;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&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И создаем каталог куда будем собирать php&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mkdir /php/php54&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Конфигурим(обратите внимание на переменную —prefix=, она указывает на каталог куда собираем php)&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;./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=&amp;quot;$instdir&amp;quot;/etc \
--with-pspell&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Компиляем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;make
make install&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Включаем модуль cgi для апача&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;a2enmod cgi&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Переключать будем шаблонами apache. Скопируем существующий шаблон phpcgi&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;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&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Открываем файл /usr/local/vesta/data/templates/web/apache2/php54.sh и находим там строку&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;wrapper_script='#!/usr/bin/php-cgi -cphp5-cgi.ini'&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;заменяем на&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;wrapper_script='#!/php/php54/bin/php-cgi -cphp5-cgi.ini'&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И перезапускаем весту&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;service vesta restart&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь если зайти в весте в редактирование домена в web, то в шаблонах апача можно увидеть новый шаблон php54. Можно попробовать переключится.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-13:08:59.png" width="386" height="405" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-13:10:07.png" width="1283" height="733" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Аналогично собираем php 5.6 и php 7.0, в каталоги /php/php56 и /php/php70 соответсвенно. И создаем для них шаблоны php56 и php70. Конфигурирование для php7 несколько отличается от php5. Мои параметры для конфигурирования есть в &lt;a href="http://anikin.pw/all/sborka-php-7-na-debian-8-jessie/"&gt;этой статье&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;В результате этих манипуляций у нас появятся новые шаблоны php54, php56 и php70, с соответсвующими версиями php. Теперь для каждого домена мы можем выбрать любую версию php от 5.4 до 7.0. С выходом новых версий их можно добавлять к текущим таким же способом.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-13:57:27.png" width="355" height="483" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1258" data-ratio="1.6444444444444"&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-13:58:11.png" width="1258" height="765" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-13:58:34.png" width="1257" height="620" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-13:58:55.png" width="1427" height="648" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2016-04-11-13:59:19.png" width="1430" height="648" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Установка virtualbox с web-интерфейсом на сервер.</title>
<guid isPermaLink="false">60</guid>
<link>https://anikin.pw/all/ustanovka-virtualbox-s-web-interfeysom-na-server/</link>
<pubDate>Thu, 03 Sep 2015 17:40:36 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/ustanovka-virtualbox-s-web-interfeysom-na-server/</comments>
<description>
&lt;p&gt;Имеем сервер на ubuntu 14.04. Нужно установить virtualbox с веб интерфейсом, чтобы установить несколько виртуальных машин на сервер.&lt;br /&gt;
&lt;a href="https://anikin.pw/all/skript-ustanovki-virtualbox-s-veb-interfeysom-na-server/"&gt;&lt;b&gt;Скрипт автоустановки для ленивых&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Установка virtualbox.&lt;/h2&gt;
&lt;p&gt;Для начала установим сам virtualbox последней версии с репозиториев oracle.&lt;br /&gt;
Добавляем репозиторий и импортируем ключ&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# echo &amp;quot;deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib&amp;quot; | sudo tee -a /etc/apt/sources.list
# wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Устанавливаем virtualbox и модули ядра&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get update
# apt-get install dkms virtualbox-5.0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Установим пакет дополнений гостевой ОС. Смотрим версию virtualbox&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# vboxwebsrv -V
Oracle VM VirtualBox web service Version 5.0.2
(C) 2007-2015 Oracle Corporation
All rights reserved.
5.0.2r102096&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И на &lt;a href="http://download.virtualbox.org/virtualbox/"&gt;этой странице&lt;/a&gt; берем ссылку для дополнений для нужной нам версии.&lt;br /&gt;
Скачиваем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# wget http://download.virtualbox.org/virtualbox/5.0.2/Oracle_VM_VirtualBox_Extension_Pack-5.0.2-102096.vbox-extpack&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И устанавливаем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.2-102096.vbox-extpack&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь создадим юзера, под которым будут работать наши виртуальные машины и добавим его в группу vboxusers&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# adduser vbox
# usermod -a -G vboxusers 'vbox'&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Не забываем пароль, который мы назначили пользователю vbox. Он нам ещё потребуется.&lt;br /&gt;
Настраиваем веб-сервис virtualbox&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# nano /etc/default/virtualbox&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;VBOXWEB_USER=vbox #пользователь под которым работает virtualbox
VBOXWEB_HOST=xxx.xxx.xxx.xxx #ip
VBOXWEB_PORT=18083 #порт для веб-сервиса&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Запускаем веб-сервис&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# service vboxweb-service stop
# service vboxweb-service start&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Установка web-интервейса.&lt;/h2&gt;
&lt;p&gt;Для работы веб интерфейса нам потребуется веб-сервер(мы будем использовать nginx) и php. Установим их.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get install nginx php5-common php5-fpm php-pear&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;details&gt;&lt;br /&gt;
&lt;summary&gt;&lt;b&gt;Для ubuntu 16.04 кликнуть сюда&lt;/b&gt;&lt;/summary&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get install nginx php-common php-fpm php-pear php-soap&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/details&gt;&lt;br /&gt;
Создадим каталог для виртуального хоста.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mkdir /var/www &amp;amp;&amp;amp; mkdir /var/www/phpvirtualbox&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;На &lt;a href="http://sourceforge.net/projects/phpvirtualbox/files/"&gt;этой странице&lt;/a&gt; мы можем получить ссылки на архивы веб-интерфейса phpvirtualbox для разных версий virtualbox. В данном случае скачиваем и распаковываем в каталог виртуального хоста phpvirtualbox для нашей версии.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# cd /var/www/phpvirtualbox/ &amp;amp;&amp;amp; wget http://sourceforge.net/projects/phpvirtualbox/files/phpvirtualbox-5.0-2.zip/download &amp;amp;&amp;amp; mv download phpvirtualbox-5.0-2.zip
# unzip phpvirtualbox-5.0-2.zip &amp;amp;&amp;amp; mv ./phpvirtualbox-5.0-2/* /var/www/phpvirtualbox&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Копируем пример конфига&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# cp /var/www/phpvirtualbox/config.php-example /var/www/phpvirtualbox/config.php&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И редактируем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# nano /var/www/phpvirtualbox/config.php&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# Пользователь и пароль под которым работает virtualbox
var $username = 'vbox';
var $password = 'PaS$w0rd';

# Адрес веб-сервиса
var $location = 'http://xxx.xxx.xxx.xxx:18083/';

# Диапазон rdp портов
var $vrdeports = '9000-9100';

# IP сервера
var $consoleHost = 'xxx.xxx.xxx.xxx';&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создаем файл виртуального хоста в nginx&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# nano /etc/nginx/conf.d/phpvirtualbox.conf&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;server {
        listen   xxx.xxx.xxx.xxx:80;
 
        root /var/www/phpvirtualbox/;
        index index.php index.html index.htm;
 
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }
 
 
        # pass the PHP scripts to FastCGI server listening on 1$
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+.php)(.*)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
 
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;details&gt;&lt;br /&gt;
&lt;summary&gt;&lt;b&gt;Для ubuntu 16.04 конфиг такой&lt;/b&gt;&lt;/summary&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;server {
        listen   XXX.XXX.XXX.XXX:80;

        root /var/www/phpvirtualbox/;
        index index.php index.html index.htm;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }


        # pass the PHP scripts to FastCGI server listening on 1$
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+.php)(.*)$;
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/details&gt;&lt;br /&gt;
Перезапускаем nginx&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# service nginx restart&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь перейдя по адресу &lt;a href="http://ip-сервера/"&gt;http://ip-сервера/&lt;/a&gt; мы увидим форму логина. По умолчанию логин — admin и пароль — admin. Логинимся, открываем меню File, пункт Preferences и меняем пароль в графе Users. В графе Language можно поставить русский язык.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="949" data-ratio="1.6886120996441"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-16:24:05.png" width="949" height="562" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-16:24:40.png" width="1504" height="857" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-16:24:55.png" width="356" height="337" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-16:25:11.png" width="917" height="518" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Установка виртуальной машины.&lt;/h2&gt;
&lt;p&gt;Скачиваем установочный образ нужной нам ОС(в данном случае debian 8) в домашний каталог юзера vbox&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# cd /home/vbox/
# wget http://mirror.yandex.ru/debian-cd/8.1.0/amd64/iso-cd/debian-8.1.0-amd64-CD-1.iso&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем в веб-интерфейсе, кликаем кнопку создать и создаем виртуальную машину с нужными нам характеристиками.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="709" data-ratio="1.7420147420147"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-17:26:55.png" width="709" height="407" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-17:27:15.png" width="707" height="405" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-17:27:41.png" width="705" height="453" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Переходим в настройки виртуальной машины — Дисплей. И во вкладке «Удаленный дисплей» включаем доступ по rdp с нужными нам данными авторизации и портом.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-17:35:09.png" width="914" height="507" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Запускаем нашу виртуальную машину. При первом запуске она спросит установочный iso образ, который мы скачали в домашний каталог пользователя vbox.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="708" data-ratio="1.7481481481481"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-17:39:41.png" width="708" height="405" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-17:39:57.png" width="411" height="607" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-17:40:08.png" width="707" height="408" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;После запуска виртуальной машины мы можем подключится любым rdp клиентом к хост-машине по порту указанному в настройках удаленного дисплея и продолжить установку как обычно. Также можно подключится прямо через веб-интерфейс, просто кликнув «Консоль» справа сверху.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="640" data-ratio="1.259842519685"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-17:40:55.png" width="640" height="508" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-09-03-17:57:10.png" width="1913" height="980" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Изолируем пользователей ssh в домашней директории с помощью lshell</title>
<guid isPermaLink="false">54</guid>
<link>https://anikin.pw/all/izoliruem-polzovatelya-ssh-v-domashney-direktorii-s-pomoschyu-ls/</link>
<pubDate>Wed, 01 Apr 2015 16:20:07 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/izoliruem-polzovatelya-ssh-v-domashney-direktorii-s-pomoschyu-ls/</comments>
<description>
&lt;p&gt;Установим lshell, он есть в репозиториях большинства дистрибутивов. Установка для дебианоподобных дистров:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get install lshell&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем открываем конфигурационный файл и редактируем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# nano /etc/lshell.conf&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Там в основном все просто и понятно, обратим внимания на некоторые переменные в разделе [default].&lt;br /&gt;
Команды разрешённые для выполнения:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;allowed         : ['ls','echo','cd','ll','rsync','mkdir']&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В allowed нельзя вписывать программы которые умеют бродить по каталогам например mc, т.к из lshell выполнение передается в bash и такие программы смогут выйти за пределы домашнего каталога. Поэтому тут будьте внимательны.&lt;/br&gt;&lt;br /&gt;
Команды которые можно выполнять через ssh:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;overssh         : ['ls','rsync']&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В конце конфигурационного файла можно указать индивидуальные настройки для определенного юзера примерно так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[user]
allowed: ['ls','echo','cd','ll','rsync','mkdir','cp','mv']
path: ['/backups']
overssh: ['ls', 'rsync']&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Тут например мы разрешили пользователю user выполнять команды указанные в allowed, кроме домашней папки он может ходить в /backups, и может выполнять по ssh ls и rsync.&lt;/br&gt;&lt;br /&gt;
После редактирования сохраняемся и и закрываем файл.&lt;br /&gt;
Теперь нужно изменить shell у пользователей, которых мы ограничиваем.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# chsh -s /usr/bin/lshell user
# chsh -s /usr/bin/lshell user1
# chsh -s /usr/bin/lshell user2
.....&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь пробуем зайти по ssh user’ом и проверяем, что он изолирован в домашней папке и может выполнять только команды указанные в allowed.&lt;/p&gt;
</description>
</item>

<item>
<title>Перенос linux на другой диск на примере debian/ubuntu</title>
<guid isPermaLink="false">51</guid>
<link>https://anikin.pw/all/perenos-linux-na-drugoy-disk-na-primere-debian-ubuntu/</link>
<pubDate>Thu, 19 Mar 2015 13:56:12 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/perenos-linux-na-drugoy-disk-na-primere-debian-ubuntu/</comments>
<description>
&lt;p&gt;Навеяно статьей про &lt;a href="http://anikin.pw/all/perenos-freebsd-na-drugoy-zhestkiy-disk/"&gt;перенос freebsd на другой диск&lt;/a&gt;. Будем делать тоже самое но на linux. В linux все несколько сложнее.&lt;/p&gt;
&lt;p&gt;Для начала нужно подсоединить новый диск и загрузится. В системе должны присутствовать 2 диска, первый с нашей системой, а второй пустой. Второй мы можем разметить по своему усмотрению или же скопировать разметку с первого диска(если второй диск идентичен первому). Как скопировать разметку можно прочесть &lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#parttabl"&gt;здесь&lt;/a&gt;. Как разметить вручную думаю разберётесь сами, благо мануалов в интернете полно. После создания разметки разделы надо отформатировать примерно так.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mkfs.ext4 /dev/sdb1&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем примонтируем его в /mnt&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mount /dev/sdb1 /mnt&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="640" data-ratio="1.3333333333333"&gt;
&lt;img src="https://anikin.pw/pictures/hosting.jpg" width="640" height="480" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/hosting1.jpg" width="640" height="480" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/hosting2.jpg" width="640" height="480" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/hosting3.jpg" width="640" height="480" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Теперь нам нужно создать дампы разделов, в данном случае нужно создать только дамп sda1. Установим утилиты dump/restore.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get install dump&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И создаем дамп раздела в файл /mnt/root.img&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# dump -0f /mnt/root.img /&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создание дампа в /mnt/root.img возможно когда на разделе используется менее 50% от /dev/sdb1. Иначе на разматывание дампа места не хватит. В остальных случаях нужно создавать дамп в другом месте, но не в разделе корня, чтобы дамп не мотал сам себя. Можно использовать раздел другой тачки примонтированный по sshfs, я проверял это прекрасно работает.&lt;br /&gt;
Переходим в /mnt и разматываем дамп.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# cd /mnt
# restore -rf /mnt/root.img&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Как видим раздел перенесся на /dev/sdb1. Если у нас /boot на отдельном разделе, то переносим его аналогично.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="640" data-ratio="1.3333333333333"&gt;
&lt;img src="https://anikin.pw/pictures/hosting4.jpg" width="640" height="480" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/hosting5.jpg" width="640" height="480" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Теперь нам нужно установить загрузчик.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# grub-install --root-directory=/mnt /dev/sdb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем если требуется правим /mnt/etc/fstab и меню grub в /mnt/boot/grub/grub.cfg.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# nano /mnt/etc/fstab
# nano /mnt/boot/grub/grub.cfg&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Тут немного поясню зачем проверять и править эти файлы. У меня например в этих файлах были прописаны uuid разделов, и если мы уберем старый диск то ОС соответственно не загрузится, т.к у новых разделов у нас другие uuid. Я вместо uuid прописал реальные устройства корня и свопа /dev/sda1 и /dev/sda3. Все устройства sdb, станут у нас sda после извлечение первого диска.&lt;/p&gt;
&lt;p&gt;Теперь выключаем тачку, отсоединяем первый диск и загружаемся с нового диска.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;P.S. Утилиты dump и restore не ограничиваются переносом ОС с одного диска на другой. Таким образом можно переносить linux вообще на другую тачку с другим железом и дисками. Процедура почти такая же за небольшими изменениями.&lt;/i&gt;&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;&lt;i&gt;На первой тачке создаем дамп ОС;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Загружаем вторую тачку с livecd;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Размечаем и форматируем диски;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Копируем туда дамп c первой тачки(по scp, например);&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Разворачиваем дамп с помощью restore;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Устанавливаем загрузчик;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Загружаемся.&lt;/i&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>

<item>
<title>Установка облака mail.ru в linux</title>
<guid isPermaLink="false">49</guid>
<link>https://anikin.pw/all/ustanovka-oblaka-mail-ru-v-linux/</link>
<pubDate>Thu, 12 Feb 2015 14:53:38 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/ustanovka-oblaka-mail-ru-v-linux/</comments>
<description>
&lt;p&gt;Теперь облако mail.ru распространяется не бинарником, как я описывал в &lt;a href="http://anikin.pw/all/oblako-mail-ru-kak-alternativa-ubuntu-one/"&gt;предыдущей статье&lt;/a&gt;, а установочными файлами под разные дистрибутивы. Список дистрибутивов и ссылки на установочные файлы &lt;a href="https://help.mail.ru/cloud_web/app/about"&gt;здесь&lt;/a&gt;.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-02-12-14:44:36.png" width="932" height="413" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Установка теперь очень простая. Например под Ubuntu 14.04 LTS скачиваем установочный .deb пакет и выполняем в консоли&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ sudo dpkg -i mail.ru-cloud_15.04.0021-trusty_amd64.deb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Или просто запускаем через центр приложений ubuntu.&lt;br /&gt;
После установки бинарник будет находится в /usr/bin/cloud, приложение будет в меню Dash, а после запуска иконка появится в трее.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="201" data-ratio="0.93488372093023"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-02-12-14:40:02.png" width="201" height="215" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-02-12-14:38:40.png" width="400" height="328" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-02-12-14:39:01.png" width="400" height="328" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Ошибка при запуске apf-firewall</title>
<guid isPermaLink="false">47</guid>
<link>https://anikin.pw/all/oshibka-pri-zapuske-apf-firewall/</link>
<pubDate>Fri, 30 Jan 2015 20:07:32 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/oshibka-pri-zapuske-apf-firewall/</comments>
<description>
&lt;p&gt;Если при запуске apf получаем ошибку:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;apf(23061): {glob} activating firewall
libkmod: ERROR ../libkmod/libkmod-module.c:1567 kmod_module_new_from_loaded: could not open /proc/modules: No such file or directory
Error: could not get list of modules: No such file or directory&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;или&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;kmod_module_new_from_loaded: could not open /proc/modules: No such file or directory&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;то в файле /etc/apf-firewall/conf.apf надо изменить значение директивы с&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;SET_MONOKERN=&amp;quot;0&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;на&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;SET_MONOKERN=&amp;quot;1&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После этого apf-firewall должен запустится без ошибок.&lt;/p&gt;
</description>
</item>

<item>
<title>Ошибка при восстановлении загрузчика после замены диска в RAID1</title>
<guid isPermaLink="false">46</guid>
<link>https://anikin.pw/all/could-not-find-device-for-boot-boot-not-found-or-not-a-block-dev/</link>
<pubDate>Sun, 25 Jan 2015 11:23:34 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/could-not-find-device-for-boot-boot-not-found-or-not-a-block-dev/</comments>
<description>
&lt;p&gt;Если при установке grub вы получаете ошибку следующего содержания:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;root #grub-install --root-directory=/boot /dev/sda
Could not find device for /boot/boot: not found or not a block device&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Выполните:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;root #grep -v rootfs /proc/mounts &amp;gt; /etc/mtab&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Модуль remoteip в ubuntu 14.04</title>
<guid isPermaLink="false">43</guid>
<link>https://anikin.pw/all/modul-remoteip-v-ubuntu-14-04/</link>
<pubDate>Wed, 14 Jan 2015 11:04:41 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/modul-remoteip-v-ubuntu-14-04/</comments>
<description>
&lt;p&gt;Почему-то с модулем mod_rpaf для apache2 в ubuntu 14.04 у меня не срослось. Не хотел он нормально работать и все. Поэтому было решено использовать модуль remoteip, который, собственно, выполняет те же функции.&lt;br /&gt;
Подключаем модуль.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# a2enmod remoteip&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создаем конфигурационный файл&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# nano /etc/apache2/conf-available/remoteip.conf&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1 ip_сервера&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Применяем конфиг&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# a2enconf remoteip&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Перезапускаем apache2&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# service apache2 restart&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Мониторинг нагрузки на сервер утилитой atop.</title>
<guid isPermaLink="false">36</guid>
<link>https://anikin.pw/all/monitoring-nagruzki-na-server/</link>
<pubDate>Thu, 25 Sep 2014 12:38:33 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/monitoring-nagruzki-na-server/</comments>
<description>
&lt;p&gt;Самой удобной утилитой мониторинга нагрузки на сервере, на мой взгляд, является atop. Огромным плюсом данной утилиты является постоянное ведение логов нагрузки на сервер, это удобно т.к проблемы обычно происходят когда мы не следим за сервером прямо сейчас. А с atop можно отмотать «время назад» и посмотреть нагрузку на сервер в момент проблемы.  Данная утилита есть во всех дистрибутивах линукс, также она присутствует во FreeBSD.&lt;br /&gt;
Рассмотрим установку утилиты для Ubuntu/Debian, Cenos и FreeBSD.&lt;/p&gt;
&lt;p&gt;Ubuntu/Debian:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get install atop -y&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Centos:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# yum install atop -y&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;FreeBSD:&lt;br /&gt;
Определяем местонахождение порта:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# whereis atop
atop: /usr/ports/sysutils/atop&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Переходим в каталог&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# cd  /usr/ports/sysutils/atop&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И устанавливаем порт&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# make install clean&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После установки мы можем запустить утилиту:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# atop&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После запуска мы увидим окно типа такого:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1865" data-ratio="1.9306418219462"&gt;
&lt;img src="https://anikin.pw/pictures/---2014-09-24-16:09:25.png" width="1865" height="966" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2014-09-24-16:09:35.png" width="1865" height="966" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Дожидаемся когда посередине исчезнет надпись&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;*** system and process activity since boot ***&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;теперь мы можем видеть нагрузку на сервер в реальном времени. Сверху мы видим нагрузку в процентах на основные узлы сервера: процессор, ядра процессора, память, своп, дисковые устройства и сетевые интерфейсы. Если на какой-либо узел будет повышенная нагрузка, то он будет подсвечен красным цветом.&lt;/p&gt;
&lt;p&gt;Снизу мы видим процессы с PID’ами, пользователями которым они принадлежат и данными нагрузки которые они создают. Если на какую-либо подсистему сервера идет повышенная нагрузка и нам нужно узнать какой процесс её создает, то мы можем сортировать эти процессы по нагрузке на определенный узел нажатием определенных клавиш.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;m - сортировать по занимаемой памяти
d - сортировать по создаваемой нагрузке на диск
u - покажет таблицу нагрузки по пользователям
v - покажет подробную информацию по процессам
g - вернет вывод по умолчанию
n - сортировать процессы по нагрузке на сеть(доступно только с установленным патчем ядра)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь разберёмся как смотреть логи atop. Тут все достаточно просто. Для просмотра лога за текущий день достаточно выполнить&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# atop -r&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Мы увидим обычное окно atop, как и при просмотре в реальном времени, только по состоянию на 00 часов 00 минут текущего дня. Время можно увидеть в верхней строке. Переместится вперед по времени можно с помощью клавиши &lt;b&gt;&lt;i&gt;t&lt;/i&gt;&lt;/b&gt;. Назад с помощью &lt;b&gt;&lt;i&gt;shift+t&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
Сразу перейти на нужное время можно нажав &lt;b&gt;&lt;i&gt;-b&lt;/i&gt;&lt;/b&gt;, и в появившемся диалоге ввести нужное время.&lt;br /&gt;
Также хранятся логи нагрузки за предыдущие дни. В Ubuntu 14.04 они лежат в каталоге /var/log/atop/. Открыть можно примерно так.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# atop -r /var/log/atop/atop_20140915&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Цифры в названии файла обозначают дату в формате ГГГГММДД.&lt;/p&gt;
</description>
</item>

<item>
<title>Отправка почты с сайта через smtp.yandex.ru на своём домене.(Иcправление)</title>
<guid isPermaLink="false">35</guid>
<link>https://anikin.pw/all/otpravka-pochty-s-sayta-cherez-smtp-yandex-ru-na-svoyom-domene-i/</link>
<pubDate>Mon, 22 Sep 2014 11:22:08 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/otpravka-pochty-s-sayta-cherez-smtp-yandex-ru-na-svoyom-domene-i/</comments>
<description>
&lt;p&gt;С 16 сентября 2014 года Яндекс.Почта полностью перешла на протокол SSL. При передаче данных по IMAP/POP3/SMTP сервис требует шифрование по SSL, соответственно статья &lt;a href="http://anikin.pw/all/otpravka-pochty-s-sayta-cherez-smtp-yandex-ru-na-svoyom-domene/"&gt;Отправка почты с сайта через smtp.yandex.ru на своём домене.&lt;/a&gt; потеляла свою актуальность. Сервисы настроенные с конфигом как в статье по ссылке больше не работают. При попытке отправки почты выдается ошибка типа&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# send-mail: Server didn't like our AUTH LOGIN (530 5.7.7 Email sending without SSL/TLS encryption is not allowed.
Please see: http://help.yandex.ru/mail/mail-clients/ssl.xml)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Чтобы исправить эту проблему нужно изменить конфиг /etc/ssmtp/ssmtp.conf&lt;br /&gt;
Правильный конфиг теперь выглядит так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mailhub=smtp.yandex.ru:465  #адрес и порт smtp сервера яндекса
AuthUser=post@anikin.pw  #ящик с которого будем отправлять
AuthPass=pAssw0rd #пароль к ящику
rewriteDomain=anikin.pw #принудительное указание домена в поле From
hostname=anikin.pw #hostname тачки
UseTLS=YES #Использование шифрования SSL/TLS
FromLineOverride=NO #Запрещает скриптам «решать» с какого ящика отправлять письмо.
Root=admin@anikin.pw #ящик куда будет отправляться почта предназначенная root&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Замена диска в програмном RAID1 в Linux</title>
<guid isPermaLink="false">32</guid>
<link>https://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/</link>
<pubDate>Fri, 08 Aug 2014 09:42:17 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/</comments>
<description>
&lt;p&gt;Оглавление:&lt;/p&gt;
&lt;p&gt;
&lt;ol&gt;
&lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#del"&gt;I. Удаление диска из массива&lt;/a&gt;&lt;/br&gt;
&lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#add"&gt;II. Добавление диска в массив после замены&lt;/a&gt;&lt;/br&gt;
&lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#parttabl"&gt;&amp;emsp;1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск&lt;/a&gt;&lt;/br&gt;
&lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#adddisk"&gt;&amp;emsp;2. Добавление диска в массив&lt;/a&gt;&lt;/br&gt;
&lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#grub"&gt;III. Установка загрузчика&lt;/a&gt;
&lt;/ol&gt;&lt;p&gt;
У нас есть сервер в котором 2 диска: /dev/sda и /dev/sdb. Эти диски собраны у нас в софтверный RAID1 с помощью mdadm. Один из дисков вышел из строя, в нашем случае это /dev/sdb.&lt;p&gt;
&lt;a name="del"&gt;&lt;/a&gt;
&lt;b&gt;I. Удаление диска из массива&lt;/b&gt;&lt;p&gt;

Перед заменой диска желательно убрать диск из массива. Для начала проверим как размечен диск в массиве:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# cat /proc/mdstat 
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] 
md2 : active raid1 sda4[0] sdb4[1]
      1456504640 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sda3[0] sdb3[1]
      7996352 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sda2[0] sdb2[1]
      499392 blocks super 1.2 [2/2] [UU]
      
unused devices: &amp;lt;none&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;

В данном случае массив собран так. Что md0 состоит из sda2 и sdb2, md1 из sda3 и sdb3, md2 из sda4 и sdb4. На этом сервере md0 это /boot, md1 — своп, md2 — корень. Убираем sdb из всех устройств.&lt;p&gt;

&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mdadm /dev/md0 --remove /dev/sdb2
# mdadm /dev/md1 --remove /dev/sdb3
# mdadm /dev/md2 --remove /dev/sdb4&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;

Если разделы из массива не удаляются, это как в нашем случае. Mdadm не считает диск неисправным и использует его, и при удалении мы увидим ошибку, что устройство используется. В этом случае перед удалением помечаем диск как сбойный.&lt;p&gt;

&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mdadm /dev/md0 -f /dev/sdb2
# mdadm /dev/md1 -f /dev/sdb3
# mdadm /dev/md2 -f /dev/sdb4&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;

А затем снова выполним команды по удалению разделов из массива.
Все, мы удалили сбойный диск из массива. Теперь можем писать в датацентр запрос на замену диска.&lt;p&gt;
&lt;a name="add"&gt;&lt;/a&gt;
&lt;b&gt;II. Добавление диска в массив после замены&lt;/b&gt;&lt;p&gt;
&lt;a name="parttabl"&gt;&lt;/a&gt;
&amp;emsp;&amp;emsp;&lt;b&gt;1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск&lt;/b&gt;&lt;p&gt;
После замены поврежденного диска нужно добавить новый диск в массив. Для этого надо определить какая у нас таблица разделов: GPT или MBR. Для этого будем использовать gdisk
Установим gdisk:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get install gdisk -y&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Выполняем:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# gdisk -l /dev/sda&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Где /dev/sda — исправный диск находящийся в raid.
В выводе будет примерно это для MBR:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;

И примерно это для GPT:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;

Перед добавлением диска в массив нам нужно на нем создать разделы в точности такие же как и  на sda. В зависимости от разметки диска это делается по разному.&lt;p&gt;
&lt;b&gt;Копирование разметки для GPT:&lt;/b&gt;&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# sgdisk -R /dev/sdb /dev/sda&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Здесь надо быть внимательным. Первым пишется диск на который копируется разметка, а вторым с которого копируют. Если перепутать их местами, то разметка на изначально исправном диске будет уничтожена.&lt;/br&gt;
Даем диску новый случайный UIDD:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# sgdisk -G /dev/sdb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
&lt;b&gt;Копирование разметки для MBR:&lt;/b&gt;&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# sfdisk -d /dev/sda | sfdisk /dev/sdb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Здесь наоборот первым пишется диск с которого переносим разметку, а вторым на который переносим.
Если разделы не видны в системе, то можно перечитать таблицу разделов командой:&lt;p&gt;
&lt;/code&gt;# sfdisk -R /dev/sdb&lt;/code&gt;&lt;p&gt;
&lt;a name="adddisk"&gt;&lt;/a&gt;
&amp;emsp;&amp;emsp;&lt;b&gt;2. Добавление диска в массив&lt;/b&gt;&lt;p&gt;
Когда мы создали разделы на /dev/sdb, то можно добавлять диск в массив.&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mdadm /dev/md0 -a /dev/sdb2
# mdadm /dev/md1 -a /dev/sdb3
# mdadm /dev/md2 -a /dev/sdb4&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
&lt;a name="grub"&gt;&lt;/a&gt;
&lt;b&gt;III. Установка загрузчика&lt;/b&gt;&lt;p&gt;
После добавления диска в массив нужно установить на него загрузчик. Если сервер загружен в нормальном режиме, то это делается одной командой:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# grub-install /dev/sdb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Если сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом.&lt;/br&gt;
Монтируем корневую файловую систему в  /mnt:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mount /dev/md2 /mnt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Монтируем boot:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mount /dev/md0 /mnt/boot&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Монтируем /dev, /proc и /sys:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Затем делаем chroot в примонтированную систему:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# chroot /mnt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
И устанавливаем grub на sdb:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# grub-install /dev/sdb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Теперь можно попробовать загрузится в нормальный режим.
&lt;p&gt;
&lt;b&gt;P.S.&lt;/b&gt;
Если при установке загрузчика возникнет ошибка Could not find device for /boot/boot: not found or not a block device то вам &lt;a href="http://anikin.pw/all/could-not-find-device-for-boot-boot-not-found-or-not-a-block-dev/"&gt;сюда&lt;/a&gt;.</description>
</item>

<item>
<title>Включение server-status на apache2/httpd в ubuntu и centos</title>
<guid isPermaLink="false">29</guid>
<link>https://anikin.pw/all/server-status-na-apache2-httpd/</link>
<pubDate>Mon, 04 Aug 2014 13:08:03 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/server-status-na-apache2-httpd/</comments>
<description>
&lt;p&gt;server-status это модуль веб-сервера, который может помочь установить какой из сайтов на сервере создает нагрузку или даже покажет на какой именно скрипт на сайте идет больше всего обращений. В общем это модуль который помогает в мониторинге состояния веб-сервера. Разберёмся как его установить.&lt;/p&gt;
&lt;p&gt;В centos он обычно уже установлен. В ubuntu смотрим:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# ls /etc/apache2/mods-enabled&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/br&gt;&lt;br /&gt;
Если в выводе есть status.load и status.conf, то значит он тоже установлен. Если же нет, то выполняем:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# /usr/sbin/a2enmod status&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;Затем открываем конфигурационный файл веб-сервера, в centos — /etc/httpd/conf/httpd.conf, в ubuntu — /etc/apache2/apache2.conf. Добавляем туда:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ExtendedStatus On
&amp;lt;Location /server-status&amp;gt;
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
&amp;lt;/Location&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем перезапускаем апач.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# service apache2 restart&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;в ubuntu&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# service httpd restart&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;в centos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Устанавливаем:&lt;br /&gt;
В centos:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# yum install links elinks&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/br&gt;&lt;br /&gt;
В ubuntu:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get install links elinks&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;Теперь мы можем посмотреть server-status. Для этого выполняем:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# elinks http://localhost/server-status&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/br&gt;&lt;br /&gt;
Если апач у нас висит не на 80 порту, например когда фронтэндом установлен nginx, то в эту команду нужно добавить порт апача. Например так, для порта 81:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# elinks http://localhost:81/server-status&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Шифрование данных в облаке с помощью encfs + cryptkeeper</title>
<guid isPermaLink="false">26</guid>
<link>https://anikin.pw/all/shifrovanie-dannyh-v-oblake-s-pomoschyu-encfs-cryptkeeper/</link>
<pubDate>Fri, 02 May 2014 11:42:39 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/shifrovanie-dannyh-v-oblake-s-pomoschyu-encfs-cryptkeeper/</comments>
<description>
&lt;p&gt;В &lt;a href="http://anikin.pw/all/oblako-mail-ru-kak-alternativa-ubuntu-one/" target="_blank"&gt;предыдущей статье&lt;/a&gt; я расказывал как установить облако mail.ru в ubuntu. Теперь стоит рассказать о шифровании данных в облаках, т.к у многих пользователей есть такие данные которые нельзя выкладывать в общий доступ(файлы с паролями, личные записи, проекты и т. д.). Но для этих данных так же хотелось бы пользоваться преимуществами облака. Для этих целей я использую encfs и gui для неё cryptkeeper. Преимущество encfs для облаков в том что она не создает криптоконтейнер, а шифрует каждый файл по отдельности. Т.е при изменении одного файла не придётся перезаливать все зашифрованные данные. Ниже я кратко расскажу про установку.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ sudo apt-get install encfs cryptkeeper&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;d&gt;&lt;/p&gt;
&lt;p&gt;Затем создаем папку в облаке, которая будет зашифрована.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ mkdir /home/user/cloud/encfs&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;d&gt;&lt;/p&gt;
&lt;p&gt;И папку за пределами облака, в которую будет монтироваться наша зашифрованая папка.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ mkdir /home/user/data&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;d&gt;&lt;/p&gt;
&lt;p&gt;Затем создаем зашифрованную папку /home/user/cloud/encfs с точкой монтирования /home/user/data.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ encfs /home/user/cloud/encfs /home/user/data&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;d&gt;&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2014-05-02-12:14:47.png" width="644" height="683" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Пароль запомните, т.к в случае если вы забудете пароль данные будут утеряны.&lt;br /&gt;
Теперь отмонтируем зашифрованный каталог.&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ fusermount -u /home/user/data&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;d&gt;&lt;/p&gt;
&lt;p&gt;Запускаем cryptkeeper, кликаем на значок в трее и выбираем «Импорт папки EncFS».&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="305" data-ratio="1.0971223021583"&gt;
&lt;img src="https://anikin.pw/pictures/---2014-05-02-11:51:26.png" width="305" height="278" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2014-05-02-12:22:46.png" width="478" height="108" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Выбираем нашу зашифрованную папку и папку в которую её смонтировать.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="957" data-ratio="1.2932432432432"&gt;
&lt;img src="https://anikin.pw/pictures/---2014-05-02-12:23:39.png" width="957" height="740" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2014-05-02-12:24:08.png" width="958" height="741" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Теперь мы можем монтировать наш зашифрованный каталог через иконку cryptkeeper в трее.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="482" data-ratio="3.5970149253731"&gt;
&lt;img src="https://anikin.pw/pictures/---2014-05-02-12:24:59.png" width="482" height="134" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2014-05-02-12:25:30.png" width="222" height="157" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;После правильного ввода пароля, каталог будет смонтирован. Теперь cryptkeeper можно добавить в автозагрузку так же как приложение «Облако mail.ru» в &lt;a href="http://anikin.pw/all/oblako-mail-ru-kak-alternativa-ubuntu-one/" target="_blank"&gt;предыдущей статье&lt;/a&gt;, чтобы при каждой загрузке не запускать его из меню dash. Если иконки в трее не появляются, там же есть комментарий как это починить.&lt;/p&gt;
</description>
</item>

<item>
<title>Облако mail.ru как альтернатива ubuntu one.</title>
<guid isPermaLink="false">25</guid>
<link>https://anikin.pw/all/oblako-mail-ru-kak-alternativa-ubuntu-one/</link>
<pubDate>Tue, 29 Apr 2014 17:39:52 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/oblako-mail-ru-kak-alternativa-ubuntu-one/</comments>
<description>
&lt;p&gt;&lt;b&gt;Теперь mail.ru предоставляет установочные пакеты под разные дистрибутивы. Правильный процесс установки описан &lt;a href="http://anikin.pw/all/ustanovka-oblaka-mail-ru-v-linux/"&gt;здесь&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Как недавно стало известно canonical закрывает свой облачный сервис ubuntu one, поэтому мне пришлось искать альтернативу их облаку. Когда mail.ru раздавали терабайт в своем облаке, я его взял но не использовал. Но раз уж такое дело, то решил попробовать интегрировать его в ubuntu в качестве альтернативы ubuntu one. Как я это делал я расскажу ниже.&lt;/p&gt;
&lt;p&gt;Для начала установим сам клиент. На странице &lt;a href="https://cloud.mail.ru/home/"&gt;https://cloud.mail.ru/home/&lt;/a&gt; скачиваем клиент.&lt;br /&gt;
Кликаем «Скачай приложение для компьютера». И в открывшемся окне выбираем «Linux amd64» или «Linux i386» в зависимости от вашей архитектуры.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="248" data-ratio="1.8787878787879"&gt;
&lt;img src="https://anikin.pw/pictures/---2014-04-27-12:24:29.png" width="248" height="132" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2014-04-27-12:24:44.png" width="675" height="443" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Чтобы после установки облака в системном трее появился значок для управления облаком в терминале выполним следующие команды:&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ sudo add-apt-repository ppa:timekiller/unity-systrayfix
$ sudo apt-get update
$ sudo apt-get upgrade
$ gsettings set com.canonical.Unity.Panel systray-whitelist &amp;quot;['all']&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Если у вас ubuntu 14.04, то вместо предыдущих команд выполняем:
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ sudo apt-add-repository ppa:gurqn/systray-trusty
$ sudo apt-get update
$ sudo apt-get upgrade&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Затем скопируем приложение в /usr/bin и сделаем его исполняемым
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ sudo cp ~/Загрузки/cloud /usr/bin/
$ sudo chmod +x /usr/bin/cloud&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Затем нам нужно создать пункт в меню dash. Создаем файл
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ sudo nano /usr/share/applications/cloud.desktop&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
С текстом
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[Desktop Entry]
Name=Cloud Mail
Comment=
Exec=cloud
Icon=/usr/share/icons/Humanity-Dark/status/48/weather-snow.svg
MimeType=
Terminal=false
Type=Application
StartupNotify=true
Categories=GNOME;GTK;&lt;/code&gt;&lt;/pre&gt;

Теперь нам нужно добавить облако в автозагрузку, чтобы не тыкать каждый раз приложение в меню dash. Находим в dash пункт «Автоматически загружаемые приложения».

&lt;p&gt;&lt;img src="https://anikin.pw/pictures/pictures/---2014-04-27-13:06:49.png"&gt;&lt;p&gt;

И добавляем туда облако примерно так

&lt;p&gt;&lt;img src="https://anikin.pw/pictures/pictures/---2014-04-27-13:07:49.png"&gt;&lt;p&gt;

Если у вас не толстый канал интернета, то есть небольшая утилита trickle. Она позволяет ограничить канал интернета приложению облако, чтобы вы могли комфортно пользоваться интернетом, когда облако загружает данные.
Установить её просто
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ sudo apt-get install trickle&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Теперь в «Автоматически загружаемые приложения» пропишем команду вместо /usr/bin/cloud
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ /usr/bin/trickle -d 300 -u 150 /usr/bin/cloud&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Где 300 и 150 скорость в килобайтах в секунду закачки и отдачи соответственно.
Эту же команду пропишем в файле /usr/share/applications/cloud.desktop в строке Exec=, чтобы из меню dash облако так же запускалось с ограничением скорости.
Теперь, когда мы всё настроили либо перезагружаемся либо перелогиниваемся, чтобы применились все изменения и добавился пункт в меню dash. Приложение должно запустится автоматически при загрузке.

&lt;p&gt;&lt;img src="https://anikin.pw/pictures/pictures/---2014-04-27-12:59:16.png"&gt;&lt;p&gt;

Вводим свой логин и пароль к mail.ru. И система спросит какую папку синхронизировать.

&lt;p&gt;&lt;img src="https://anikin.pw/pictures/pictures/---2014-04-27-13:00:26.png"&gt;&lt;p&gt;

После запуска, в трее в правом верхнем углу появится значок в котором можно посмотреть статус синхронизации, приостановить/запустить синхронизации и провести другие настройки.

&lt;p&gt;&lt;img src="https://anikin.pw/pictures/pictures/---2014-04-29-18:31:38.png"&gt;&lt;p&gt;

Теперь можете закачивать файлы в каталог, который был выбран для синхронизации, файлы будут автоматически закачиваться в облако.
В &lt;a href="http://anikin.pw/all/shifrovanie-dannyh-v-oblake-s-pomoschyu-encfs-cryptkeeper/" target="_blank"&gt;следующей статье&lt;/a&gt; я расскажу как шифровать данные в облаке.&lt;p&gt;

&lt;b&gt;P.S. Теперь mail.ru предоставляет установочные пакеты под разные дистрибутивы. Правильный процесс установки описан &lt;a href="http://anikin.pw/all/ustanovka-oblaka-mail-ru-v-linux/"&gt;здесь&lt;/a&gt;.&lt;/b&gt;</description>
</item>

<item>
<title>Установка DNSCrypt в Ubuntu 13.10</title>
<guid isPermaLink="false">20</guid>
<link>https://anikin.pw/all/ustanovka-dnscrypt-v-ubuntu-13-10/</link>
<pubDate>Sat, 25 Jan 2014 22:13:07 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/ustanovka-dnscrypt-v-ubuntu-13-10/</comments>
<description>
DNSCrypt-proxy - это приложение позволяющее шифровать ваши DNS-запросы от вашего провайдера. Рассмотрим как его установить в ubuntu.&lt;p&gt;
Все действия будем производить под рутом. Переходим в root&lt;p&gt;

&lt;code&gt;$ sudo su&lt;/code&gt;&lt;p&gt;

Для начала установим build-essential&lt;p&gt;

&lt;code&gt;# apt-get install build-essential&lt;/code&gt;&lt;p&gt;

Скомпилируем актуальную версию libsodium. Скачаем актуальную версию этой библиотеки со страницы &lt;a href="https://download.libsodium.org/libsodium/releases/" target="_blank"&gt;https://download.libsodium.org/libsodium/releases/&lt;/a&gt;&lt;p&gt;

&lt;code&gt;# wget https://download.libsodium.org/libsodium/releases/libsodium-0.4.5.tar.gz&lt;/code&gt;&lt;p&gt;

&lt;code&gt;# tar -xvzf libsodium-0.4.5.tar.gz&lt;p&gt;
# cd libsodium-0.4.5&lt;p&gt;
# ./configure&lt;p&gt;
# make &amp;&amp; make install&lt;/code&gt;&lt;p&gt;

Скачаем актуальную версию dnscrypt-proxy со страницы &lt;a href="http://download.dnscrypt.org/dnscrypt-proxy/" target="_blank"&gt;http://download.dnscrypt.org/dnscrypt-proxy/&lt;/a&gt;&lt;p&gt;

&lt;code&gt;# wget http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.3.3.tar.gz&lt;/code&gt;&lt;p&gt;

&lt;code&gt;# tar -xvzf dnscrypt-proxy-1.3.3.tar.gz&lt;p&gt;
# cd dnscrypt-proxy-1.3.3&lt;p&gt;
# ./configure&lt;p&gt;
# make&lt;p&gt;
# make install&lt;/code&gt;&lt;p&gt;

Скачиваем и распаковываем архив dnscrypt-0.2.tar.gz&lt;p&gt;

&lt;code&gt;# wget http://anikin.pw/pictures/uploads/dnscrypt-0.2.tar.gz&lt;p&gt;
# tar -xvzf dnscrypt-0.2.tar.gz&lt;/code&gt;&lt;p&gt;

Копируем скрипт&lt;p&gt;

&lt;code&gt;# cp dnscrypt.conf /etc/init/&lt;p&gt;
# ln -s /lib/init/upstart-job /etc/init.d/dnscrypt&lt;/code&gt;&lt;p&gt;

Запускаем&lt;p&gt;

# service dnscrypt start&lt;p&gt;

Если все запустилось, то пропишем DNS в network manager. Если возникли проблемы, то в конце статьи рассмотрены решения некоторых проблем.&lt;p&gt;
Пропишем наши DNS в network manager.&lt;p&gt;
1. Кликаем по иконке соединений в правом верхнем углу и в выпадающем меню выбираем "Изменить соединения".&lt;p&gt;
2. В открывшемся окне выделяем наше соединение и кликаем "Изменить"&lt;p&gt;
3. Во вкладке "Параметры ipv4" прописываем в Сервера DNS - 127.0.0.2 у меня получилось примерно так&lt;p&gt;
&lt;a href="https://anikin.pw/pictures/uploads/Snimok-e`krana-ot-2014-01-25-192320.png"&gt;&lt;img src="https://anikin.pw/pictures/uploads/Snimok-e`krana-ot-2014-01-25-192320-300x246.png" alt="Снимок экрана от 2014-01-25 19:23:20" width="300" height="246" class="alignnone size-medium wp-image-72" /&gt;&lt;/a&gt;&lt;p&gt;
Всё. Наши DNS запросы шифруются и провайдер их не видит.&lt;p&gt;

&lt;strong&gt;P.S.(Важно)&lt;/strong&gt;&lt;p&gt;
&lt;strong&gt;1.&lt;/strong&gt; При запуске dnscrypt-proxy получаем ошибку:
loading shared libraries: libsodium.so.4: cannot open shared object file: No such file or directory&lt;p&gt;

&lt;strong&gt;Решение:&lt;/strong&gt;&lt;p&gt;
Если libsodium был установлен без ошибок, но проблема возникает, то выполняем:&lt;p&gt;

&lt;code&gt;# ./configure --libdir=/usr/local/lib&lt;/code&gt;&lt;p&gt;

Если проблема остается то выполняем:&lt;p&gt;

&lt;code&gt;# ln -s /usr/local/lib/libsodium.so.4 /usr/lib/libsodium.so.4&lt;/code&gt;&lt;p&gt;

&lt;strong&gt;2.&lt;/strong&gt; При выполнении service dnscrypt start получаем:&lt;p&gt;

&lt;code&gt;# service dnscrypt start&lt;p&gt;
dnscrypt stop/waiting&lt;p&gt;
&lt;/code&gt;&lt;p&gt;

У меня это было из за того что скрипт dnscrypt-proxy находится в /usr/local/sbin/dnscrypt-proxy, а скрипт его ищет в /usr/sbin/dnscrypt-proxy.&lt;p&gt;

&lt;strong&gt;Решение:&lt;/strong&gt;&lt;p&gt;

&lt;code&gt;# ln -s /usr/local/sbin/dnscrypt-proxy /usr/sbin/dnscrypt-proxy&lt;/code&gt;&lt;p&gt;

&lt;strong&gt;3.&lt;/strong&gt; Как проверить что скрипт действительно работает и dns-трафик шифруется от провайдера?&lt;p&gt;

&lt;strong&gt;Решение:&lt;/strong&gt;&lt;p&gt;

Заходим на сайт &lt;a href="http://www.opendns.com/welcome/" target="_blank"&gt;http://www.opendns.com/welcome/&lt;/a&gt; и проверяем.</description>
</item>

<item>
<title>Установка mpm-itk на apache2. Работа виртуальных хостов под разными пользователями.</title>
<guid isPermaLink="false">17</guid>
<link>https://anikin.pw/all/ustanovka-mpm-itk-na-apache2-rabota-virtualnyh-hostov-pod-raznym/</link>
<pubDate>Fri, 08 Nov 2013 18:05:50 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/ustanovka-mpm-itk-na-apache2-rabota-virtualnyh-hostov-pod-raznym/</comments>
<description>
По умолчанию apache работает под пользователем www-data. При использовании isp-manager под пользователем apache, если я не ошибаюсь. И получается, что все сайты работают под одним пользователем. Иногда требуется чтобы каждый сайт работал под своим пользователем. Сделать это можно с помощью модуля mpm-itk. Модуль доступен во всех основных дистрибутивах линукс. Мы рассмотрим как установить и настроить его под ubuntu и centos, а так же рассмотрим настройку для серверов с isp-панелью.&lt;p&gt;

&lt;strong&gt;Установка и настройка в ubuntu&lt;/strong&gt;&lt;p&gt;

Для начала установим сам модуль&lt;p&gt;

&lt;code&gt;# apt-get install apache2-mpm-itk&lt;/code&gt;&lt;p&gt;

Допустим, что сайты у нас уже есть и находятся в пользовательских каталогах. Сообтветственно нам не нужно создавать пользователей. Если это не так то можно создать пользователей для каждого сайта с помощью useradd с аргументом -d, в котором укажем каталог сайта в качестве домашнего каталога.&lt;p&gt;

Затем правим конфигурационный файл apache.&lt;p&gt;

&lt;code&gt;# nano /etc/apache2/apache2.conf&lt;/code&gt;&lt;p&gt;

Внутрь каждого виртуального хоста добавляем такие строки:&lt;p&gt;

&lt;code&gt;&amp;lt;IfModule mpm_itk_module&amp;gt;&lt;p&gt;
AssignUserId user1 user1&lt;p&gt;
&amp;lt;/IfModule&amp;gt;&lt;/code&gt;&lt;p&gt;

Где user1 user1 - пользователь и группа соответственно.&lt;p&gt;

Перезапускаем apache2&lt;p&gt;

&lt;code&gt;# service apache2 restart&lt;/code&gt;&lt;p&gt;

&lt;strong&gt;Установка в CentOS&lt;/strong&gt;&lt;p&gt;

Установим модуль&lt;p&gt;

&lt;code&gt;# yum install httpd-itk&lt;/code&gt;&lt;p&gt;

Правим конфигурационные файлы&lt;p&gt;

&lt;code&gt;# nano /etc/sysconfig/httpd&lt;/code&gt;&lt;p&gt;

Раскомментируем и изменяем строку на такую:&lt;p&gt;

&lt;code&gt;HTTPD=/usr/sbin/httpd.itk&lt;/code&gt;&lt;p&gt;

&lt;code&gt;# nano /etc/httpd/conf.d/php.conf&lt;/code&gt;&lt;p&gt;

Добавляем:&lt;p&gt;

&lt;code&gt;&amp;lt;IfModule itk.c&amp;gt;&lt;p&gt;
LoadModule php5_module modules/libphp5.so&lt;p&gt;
&amp;lt;/IfModule&amp;gt;&lt;p&gt;&lt;/code&gt;

Меняем диррективу SuexecUserGroup на AssignUserID для существующих доменов.&lt;p&gt;

&lt;code&gt;# sed -i -e 's/SuexecUserGroup/AssignUserID/g' /etc/httpd/conf/httpd.conf&lt;/code&gt;&lt;p&gt;

Для вновь созданных доменов в виртуальном хосте нужно указывать&lt;p&gt;

&lt;code&gt;AssignUserID user1 user1&lt;/code&gt;&lt;p&gt;

Где user1 user1 - пользователь и группа соответственно.&lt;p&gt;

&lt;code&gt;# nano /etc/httpd/conf/httpd.conf&lt;/code&gt;&lt;p&gt;

Вставляем настройки модуля перед виртуальными хостами&lt;p&gt;

&lt;code&gt;&amp;lt;IfModule itk.c&amp;gt;&lt;p&gt;
StartServers 1&lt;p&gt;
MinSpareServers 1&lt;p&gt;
MaxSpareServers 25&lt;p&gt;
ServerLimit 25&lt;p&gt;
MaxClients 25&lt;p&gt;
MaxRequestsPerChild 4000&lt;p&gt;
&amp;lt;/IfModule&amp;gt;&lt;p&gt;&lt;/code&gt;

Перезапускаем apache&lt;p&gt;

&lt;code&gt;# service httpd restart&lt;/code&gt;&lt;p&gt;

&lt;strong&gt;Настройка для сервера с панелью isp.&lt;/strong&gt;&lt;p&gt;

Откроем конфигурационный файл isp&lt;p&gt;

&lt;code&gt;# nano /usr/local/ispmgr/etc/ispmgr.conf&lt;/code&gt;&lt;p&gt;

И в самом начале добавим строку:&lt;p&gt;

&lt;code&gt;Option ApacheMPM&lt;/code&gt;&lt;p&gt;

И рестартим панель&lt;p&gt;

&lt;code&gt;# killall -9 ispmgr&lt;/code&gt;&lt;p&gt;

&lt;strong&gt;Как проверить что все работает правильно?&lt;/strong&gt;&lt;p&gt;

В папке виртуального хоста создаем файл с расширением .php и примерно таким содержанием:&lt;p&gt;

&lt;code&gt;&amp;lt;?php&lt;p&gt;
$userinfo = posix_getpwuid(posix_getuid());&lt;p&gt;
echo $userinfo['name'];&lt;p&gt;
?&amp;gt;&lt;p&gt;&lt;/code&gt;

Или таким:&lt;p&gt;

&lt;code&gt;&amp;lt;?php echo exec('whoami'); ?&amp;gt;&lt;/code&gt;&lt;p&gt;

Открываем этот файл в браузере и выводом этого файла должно быть имя пользователя под которым работает этот скрипт. Так же не забываем что если сервер функционирует давно то в подкаталогах куча фалов принадлежащих пользователю www-data. Неплохо бы сделать chown -R username на каталоги сайтов.</description>
</item>

<item>
<title>Как заставить работать apf-firewall на ядре версии 3.x</title>
<guid isPermaLink="false">11</guid>
<link>https://anikin.pw/all/kak-zastavit-rabotat-apf-firewall-na-yadre-versii-3-x/</link>
<pubDate>Sun, 20 Oct 2013 20:23:38 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/kak-zastavit-rabotat-apf-firewall-na-yadre-versii-3-x/</comments>
<description>
Установил apf-firewall на один из серверов, столкнулся с проблемой. При запуске фаервола получил ошибку:&lt;p&gt;

Kernel version not equal to 2.4.x or 2.6.x, aborting.&lt;p&gt;

Фаервол не запустился и правила в iptables не добавились. Путём долгого гуления выяснилось что в коде скрипта стоит проверка версии ядра и на ядрах отличных от 2.4.х и 2.6.х apf отказывается работать. Обойти данное досадное недоразумение, как оказалось, достаточно просто. В файле /etc/apf-firewall/internals/functions.apf находим строку 68 и приводим условие к такому виду:&lt;p&gt;

&lt;code&gt;elif [ "$KREL" == "3.2" ]; then&lt;p&gt;
MEXT="ko"&lt;/code&gt;&lt;p&gt;

Где 3.2 ваша версия ядра. Версию ядра можно узнать выполнив:&lt;p&gt;

&lt;code&gt;# uname -a&lt;/code&gt;&lt;p&gt;

После этих изменений apf запустился без проблем и правила добавились в iptables. Нормальная работа apf проверена на версии ядра 3.2.х и по информации в интернете 3.0.х. Решение вроде простое, но найти эту информацию оказалось довольно трудно. Поэтому сделал эту запись, возможно кому-то поможет.</description>
</item>


</channel>
</rss>