<?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>Аникин: заметки с тегом centos</title>
<link>https://anikin.pw/tags/centos/</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>Сборка php 7 на Centos 6</title>
<guid isPermaLink="false">98</guid>
<link>https://anikin.pw/all/sborka-php-7-na-centos-6/</link>
<pubDate>Mon, 03 Feb 2020 19:32:18 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/sborka-php-7-na-centos-6/</comments>
<description>
&lt;p&gt;Пример configure&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;./configure  --prefix=/opt/php73 --with-config-file-path=/etc --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mysqli=mysqlnd --with-pdo-mysql --with-pdo-sqlite --enable-calendar --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --enable-shmop --enable-soap --enable-mbstring --enable-soap --enable-sockets --enable-wddx --enable-exif --enable-ftp --enable-pdo --enable-pcntl --enable-mbregex --with-gettext --with-iconv --with-mhash --with-gd --with-curl --with-libxml-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --with-zlib --without-libzip --enable-mbstring --with-xsl --with-openssl  --enable-ftp --enable-exif --enable-cgi --enable-zip --with-readline --enable-simplexml --enable-intl --with-pcre-regex=/opt/pcre2 --with-config-file-scan-dir=/opt/php73/etc&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для его успешного выполнения ставим devel пакеты на основе получаемых ошибок.&lt;br /&gt;
Pcre2 собираем из исходников, т.к нужной версии в репах centos 6 нет.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# wget ftp://ftp.pcre.org/pub/pcre/pcre2-10.30.tar.gz
# tar -xf pcre2-10.30.tar.gz
# cd pcre2-10.30
# ./configure --prefix=/opt/pcre2                       \
            --docdir=/usr/share/doc/pcre2-10.30 \
            --enable-unicode                    \
            --enable-pcre2-16                   \
            --enable-pcre2-32                   \
            --enable-pcre2grep-libz             \
            --enable-pcre2grep-libbz2           \
            --enable-pcre2test-libreadline      \
            --disable-static    
# make
# make install&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После успешного configure для php делаем make и make install&lt;/p&gt;
&lt;p&gt;&lt;b&gt;UPD:&lt;/b&gt; Если у вас в wordpress не отправляется почта через контактную форму функцией mail(), то pcre2 качаем версии 10.33.&lt;/p&gt;
</description>
</item>

<item>
<title>Не стартует mysql в centos 6 после обновления.</title>
<guid isPermaLink="false">94</guid>
<link>https://anikin.pw/all/ne-startuet-mysql-v-centos-6-posle-obnovleniya/</link>
<pubDate>Mon, 17 Jun 2019 16:35:55 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/ne-startuet-mysql-v-centos-6-posle-obnovleniya/</comments>
<description>
&lt;p&gt;После обновления mysql до 5.7 он не стартует с ошибкой&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[ERROR] Fatal error: mysql.user table is damaged. Please run mysql_upgrade.&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Добавляем в my.cnf в секцию [mysqld]&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;skip-grant-tables&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;С этим параметром стартуем mysql и делаем mysql_upgrade&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;service mysqld start
mysql_upgrade&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем убираем skip-grant-tables из конфига и рестартим mysql&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;service mysql restart&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mysql должен запустится без ошибок&lt;/p&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>Мониторинг нагрузки на сервер утилитой 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>Включение 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>Установка 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>Смена пароля admin в vdsmanager.</title>
<guid isPermaLink="false">7</guid>
<link>https://anikin.pw/all/smena-parolya-admin-v-vdsmanager/</link>
<pubDate>Sun, 20 Oct 2013 11:06:05 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/smena-parolya-admin-v-vdsmanager/</comments>
<description>
Vds manager хранит пароли в виде хеша в файле /usr/local/ispmgr/etc/vdsmgr.conf&lt;p&gt;

Для смены пароля на понадобится известный хеш. Возьмем например хеш root пароля из файла /etc/shadow&lt;p&gt;

&lt;code&gt;# cat /etc/shadow|grep root&lt;/code&gt;&lt;p&gt;

Копируем строчку с хеш пароля и заменяем старый хеш в vdsmgr.conf. Затем перезапускаем панель&lt;p&gt;

&lt;code&gt;# killall -9 vdsmgr&lt;/code&gt;&lt;p&gt;

Заходим в панель с логином admin и паролем root. И меняем пароль на новый.&lt;p&gt;</description>
</item>


</channel>
</rss>