<?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>Аникин: заметки с тегом debian</title>
<link>https://anikin.pw/tags/debian/</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>Поддержка samba в ffmpeg</title>
<guid isPermaLink="false">111</guid>
<link>https://anikin.pw/all/podderzhka-samba-v-ffmpeg/</link>
<pubDate>Sun, 13 Aug 2023 12:27:29 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/podderzhka-samba-v-ffmpeg/</comments>
<description>
&lt;p&gt;В debian 12 вымарали поддержку самбы в ffmpeg. И соответственно стандартные плееры типа mpv или parole перестали воспроизводить видео по самбе. Ментейнеры предлагают тем кому нужна самба, собирать ffmpeg из сорцев. Этим и займемся.&lt;br /&gt;
Поставим зависимости необходимые для сборки.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;apt install libavcodec-dev libavformat-dev libavutil-dev libchromaprint-tools libchromaprint-dev libchromaprint-tools libchromaprint-dev frei0r-plugins-dev gnutls-dev libunistring-dev libgnutls28-dev libunistring-dev libgnutls28-dev gnutls-dev qttools5-dev qttools5-dev-tools libqt5svg5-dev ladspa-sdk git cmake libsndfile1-dev libsamplerate-ocaml-dev libjack-jackd2-dev liblilv-dev libiec61883-dev libass-dev libbluray-dev libbs2b-dev libcaca-dev libcodec2-dev libdav1d-dev libdc1394-dev libdrm-dev libshaderc-dev libgme-dev libgsm1-dev libjxl-dev libmfx-dev libmp3lame-dev libmysofa-dev libopenjp2-7-dev libopenmpt-dev libplacebo-dev libpulse-dev librabbitmq-dev librav1e-dev librist-dev librsvg2-dev librubberband-dev libshine-dev libsmbclient-dev libsnappy-dev libsoxr-dev libssh-dev libspeex-dev libsrt-gnutls-dev libsvtav1-dev libsvtav1enc-dev libtheora-dev libtwolame-dev libvidstab-dev libvpx-dev libx264-dev libx265-dev libxvidcore-dev libzimg-dev cppzmq-dev libzmq3-dev libzvbi-dev libopenal-dev ocl-icd-opencl-dev libomxil-bellagio-dev libpocketsphinx-dev libcdio-dev libcdparanoia-dev libsdl2-dev&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Скачаем ffmpeg &lt;a href="https://ffmpeg.org/download.html#releases"&gt;тут&lt;/a&gt;, я скачал версию 5.1.3, такую же как в репах debian 12.&lt;br /&gt;
Распакуем куда-нибудь, и не забываем создать каталог куда будем собирать /opt/ffmpeg&lt;/p&gt;
&lt;p&gt;Теперь configure, я взял стандартный configure из дебы, его можно получить выполнив ffmpeg в консоли, там в выхлопе будут параметры с которым его собирали. Добавил туда «—enable-libsmbclient» и ещё несколько параметров. Получилось вот так.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;./configure --prefix=/opt/ffmpeg --extra-version=1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --disable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --disable-sndio --enable-libjxl --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-librav1e --enable-shared --enable-libsmbclient --enable-version3 --disable-x86asm&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;И сделаем симлинки в /usr/bin, предварительно убрав от туда бинарники ffmpeg из репозитория.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ln -s /opt/ffmpeg/bin/ffplay /usr/bin/ffplay
ln -s /opt/ffmpeg/bin/ffprobe /usr/bin/ffprobe
ln -s /opt/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Canon LBP-810 драйвер для современных ОС</title>
<guid isPermaLink="false">101</guid>
<link>https://anikin.pw/all/canon-lbp-810-drayver-dlya-sovremennyh-os/</link>
<pubDate>Fri, 26 Jun 2020 11:29:49 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/canon-lbp-810-drayver-dlya-sovremennyh-os/</comments>
<description>
&lt;p&gt;Принтер древний, современными ОСями не поддерживается. Соберем драйвер 2004 года из сорцев.&lt;br /&gt;
&lt;a href="https://anikin.pw/files/capt-0.1.tar.gz"&gt;Сам драйвер capt-0.1.tar.gz&lt;/a&gt;&lt;br /&gt;
Распаковываем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# tar xzf capt-0.1.tar.gz&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Открываем Makefile любым текстовым редактором и в опции gcc добавляем -std=gnu89&lt;br /&gt;
Далее&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# make
# make install
# service cups restart&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Далее добавляем принтер в систему через GUI. Драйвер LBP-810 появится там в списке.&lt;br /&gt;
В свойствах принтера обязательно меняем URI принтера на&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;file:/dev/null&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;На этом все.&lt;br /&gt;
Использованы материалы &lt;a href="https://www.fedora.md/2018/05/09/%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D0%BC-c%D0%B0non-lbp-810-%D0%B2-cups/"&gt;тыц&lt;/a&gt; и &lt;a href="http://www.boichat.ch/nicolas/capt/"&gt;тыц&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Проблема с wifi карточками MT7601U в Debian 9.</title>
<guid isPermaLink="false">86</guid>
<link>https://anikin.pw/all/problema-s-wifi-katrochkami-mt7601u-v-debian-9/</link>
<pubDate>Wed, 19 Sep 2018 16:42:54 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/problema-s-wifi-katrochkami-mt7601u-v-debian-9/</comments>
<description>
&lt;p&gt;NetworkManager сети видит, но не может к ним подключиться. Пишет что соединение разорвано.&lt;br /&gt;
Карточка выглядит примерно так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;А чтобы все заработало достаточно выполнить:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ln -s /dev/null /etc/systemd/network/99-default.link&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Автоматическое добавление новых доменов на slaveDNS(bind9)</title>
<guid isPermaLink="false">81</guid>
<link>https://anikin.pw/all/avtomaticheskoe-dobavlenie-novyh-domenov-na-slavedns-bind9/</link>
<pubDate>Wed, 17 May 2017 17:42:00 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/avtomaticheskoe-dobavlenie-novyh-domenov-na-slavedns-bind9/</comments>
<description>
&lt;p&gt;Скрипт смотрит в конфиг named.conf на мастере на наличие новых доменов. И при появлении новых доменов добавляет их в named.conf на slave сервере. Написан на питоне.&lt;br /&gt;
На мастер сервере нужно создать пользователя и добавить его в группу bind, чтобы у него были права на чтение named.conf. Также на master нужно разрешить трансфер зон.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;allow-transfer { ip-slave_сервера; };&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;На slave сервере нужно настроить ssh авторизацию по ключам с master сервером для этого юзера.&lt;br /&gt;
Затем получаем сам скрипт и перенесем его в /usr/bin&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;git clone https://github.com/shmulya/zonefetch
mv zonefetch/fetch.py /usr/bin/fetch.py&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Правим там переменные:&lt;br /&gt;
MASTERIP — ip master сервера(можно указать несколько серверов в формате [’ip1’,’ip2’])&lt;br /&gt;
REMOTE_USERNAME — юзер master сервера у которого есть права на чтение named.conf&lt;br /&gt;
PATH_TO_MASTER_ZONEFILE — файл с зонами на master&lt;br /&gt;
PATH_TO_SLAVE_ZONEFILE — каталог для файлов с зонами на slave&lt;/p&gt;
&lt;p&gt;Скрипт пишет зоны в файлы вида /etc/bind/ip.conf, например для master с ip — 192.168.0.1 это будет /etc/bind/192.168.0.1.conf.&lt;br /&gt;
Эти файлы нужно создать предварительно и добавить соответствующие инклуды в /etc/named.conf, например:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;include &amp;quot;/etc/bind/192.168.0.1.conf&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;*/5 * * * * /usr/bin/python /usr/bin/fetch.py &amp;gt;&amp;gt; /var/log/zonefetch.log 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<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>При выходе из ждущего режима пропадает соединение OpenVPN</title>
<guid isPermaLink="false">76</guid>
<link>https://anikin.pw/all/vosstanovlenie-soedineniya-vpn-pri-vyhode-iz-zhduschego-rezhima/</link>
<pubDate>Sat, 11 Feb 2017 15:19:29 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/vosstanovlenie-soedineniya-vpn-pri-vyhode-iz-zhduschego-rezhima/</comments>
<description>
&lt;p&gt;Сделаем автоматический перезапуск OpenVPN на системах с systemd. В debian 9 создаем файл /etc/systemd/system/resume.openvpn.service с содержимым:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[Unit]
Description=Run openvpn after suspend
After=suspend.target

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

[Install]
WantedBy=suspend.target&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем выполняем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# systemctl enable resume.openvpn.service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь при выходе из ждущего режима будет автоматически перезапускаться OpenVPN.&lt;/p&gt;
</description>
</item>

<item>
<title>Обновился до Debian 9 Stretch</title>
<guid isPermaLink="false">73</guid>
<link>https://anikin.pw/all/obnovilsya-do-debian-9-stretch/</link>
<pubDate>Sat, 14 Jan 2017 11:38:45 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/obnovilsya-do-debian-9-stretch/</comments>
<description>
&lt;p&gt;Первое что заметил, что выпилили fglrx. Благо свободный драйвер ATI допилили наконец до юзабельного состояния. В jessie на свободном драйвере у меня экран валился в квадраты и становился похожим на шахматную доску(HD7700). Теперь свободный драйвер мне нравится больше проприетарного. Он лучше интегрирован в систему и можно рулить настройками нескольких мониторов с гайки настроек дисплея в xfce. В проприетарном в jessie приходилось плясать с xrandr, по крайней мере в xfce.&lt;br /&gt;
Вернули в репозиторий firefox актуальной версии. Можно установить нормальный firefox помимо firefox-esr, не подключая дополнительные репы.&lt;br /&gt;
Ну и конечно относительно новые версии ПО, и ядро 4.8(в 2017 году мы таки добрались до ядра 4.x)&lt;br /&gt;
В общем неплохо, багов я не заметил.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/-_2017-01-14_11-35-03.png" width="444" height="116" alt="" /&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Установка Debian 8 на OrangePI PC.</title>
<guid isPermaLink="false">61</guid>
<link>https://anikin.pw/all/ustanovka-debian-8-na-orangepi-pc/</link>
<pubDate>Sat, 10 Oct 2015 16:25:14 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/ustanovka-debian-8-na-orangepi-pc/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/orange-pi-pc.jpg" width="660" height="427" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;На днях мне пришла эта платка. Плата достаточно новая и информации по ней в русскоязычном сегменте интернета крайне мало. Расскажу как я усстанавливал на неё Debian 8.&lt;br /&gt;
Для любителей первоисточника, оригинальный мануал &lt;a href="http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&amp;tid=342"&gt;здесь&lt;/a&gt;&lt;br /&gt;
В общем вот &lt;a href="https://drive.google.com/folderview?id=0B1hyW7T0dqn6fndnZTRhRm5BaW4zVDVyTGlGMWJES3Z1eXVDQzI5R1lnV21oRHFsWnVwSEU&amp;usp=sharing"&gt;отсюда&lt;/a&gt; нам понадобится 2 файла, собственно образ нужного дистрибутива(Я выбрал OrangePI_Jessie_Xfce.img.xz) и scriptbin_kernel.tar.gz.&lt;br /&gt;
Распаковываем образ дистрибутива и заливаем на нашу microsd с помощью dd&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ sudo dd if=OrangePI_Jessie_Xfce.img of=/dev/sdX bs=1M oflag=direct&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Прогресс заливки можно глядеть выполнив в соседней консоли&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ sudo killall -USR1 dd&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После записи нужно примонтировать первый раздел на нашей microsd, который с меткой BOOT.&lt;br /&gt;
Теперь нужно взять файл uImage_OPI-2 из архива scriptbin_kernel.tar.gz, переименовать его в ulimage и положить в раздел BOOT. Затем так же из архива взять один из файлов script.bin.OPI-PC_*****(я взял, например, script.bin.OPI-PC_720p60), переименовать его в script.bin и тоже положить в BOOT. Можно отмонтировать раздел.&lt;br /&gt;
Затем нужно второй раздел, который будет корнем нашей будущей ОС, увеличить до конца нашей флешки. С увеличением по оригинальному мануалу у меня ничего не получилось, были ошибки. Я делал по своему.&lt;br /&gt;
Выполняем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$ sudo fdisk /dev/sdX&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В fdisk вводим p и нажимаем enter. Запоминаем цифру обведенную на картинке.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-10-10-16:04:05.png" width="682" height="234" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Жмем d, удаляем второй раздел&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-10-10-16:15:43.png" width="248" height="45" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Жмем n для создания на его месте нового раздела с началом там же где был старый раздел. На все вопросы можно ответить по умолчанию, кроме начала раздела. В качестве начала введите запомненное вами число. После создания нового раздела нажмите w для применения изменений.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="719" data-ratio="3.4567307692308"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-10-10-16:16:26.png" width="719" height="208" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-10-10-16:16:45.png" width="497" height="97" alt="" /&gt;
&lt;/div&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;sudo e2fsck -f /dev/sdc2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;потом&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;sudo resize2fs /dev/sdc2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь можно примонтировать раздел и убедится что он расширен до конца флешки.&lt;br /&gt;
Все отмонтируем, берем microsd, вставляем в orangepi и загружаемся. Можно не подключать монитор и клавиатуру, в образе сразу настроен ssh. Подключится можно рутом или юзером opengepi, пароль у обоих orangepi. Я сразу после установки поднял vnc.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="765" data-ratio="1.9125"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-10-10-16:30:01.png" width="765" height="400" alt="" /&gt;
&lt;img src="https://anikin.pw/pictures/---2015-10-10-16:31:01.png" width="1030" height="879" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Установка php 7 на Debian 8 «jessie» из исходных кодов</title>
<guid isPermaLink="false">56</guid>
<link>https://anikin.pw/all/sborka-php-7-na-debian-8-jessie/</link>
<pubDate>Sat, 23 May 2015 16:32:06 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/sborka-php-7-na-debian-8-jessie/</comments>
<description>
&lt;p&gt;&lt;a href="https://anikin.pw/all/menedzher-versiy-php/"&gt;Можно использовать скрипт который упрощает установку разных версий php&lt;/a&gt;&lt;br /&gt;
Сегодня дождливый и пасмурный день. И нет ничего более уютного и расслабляющего чем попивая горячий чай собирать ПО из исходников. Поэтому самое время собрать php 7 на debian 8.&lt;br /&gt;
У нас есть тачка с debian 8, установленым с образа netinstall. Установка минимальная, кроме ssh ничего не ставилось.&lt;br /&gt;
Для установки php 7 нам нужно выполнить по ssh или в консоли тачки несколько ругательств из под рута.&lt;br /&gt;
Первым делом установим все необходимые для сборки пакеты:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get install git apache2 mysql-server make autoconf gcc bison libxml2 \
libxml2-dev libcurl4-openssl-dev pkg-config libssl-dev \
bzip2 libbz2-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev \
libgmp-dev libgmp3-dev libmcrypt-dev libmysqlclient-dev \
libpspell-dev librecode-dev&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Также нам нужен пакет libt1-dev, который отсутствует в репах debian 8, возьмем его из репов debian 7 wheezy, для этого добавим в /etc/apt/sources.list следующую строку&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;deb http://ftp.debian.org/debian wheezy main contrib non-free&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
# apt-get install libt1-dev&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Затем убираем добавленную строку из /etc/apt/sources.list и затем выполняем&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;Теперь сделаем симлинк gmp.h в /usr/include/&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь все готово для сборки. Создадим папку для исходников и скачаем их туда.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mkdir /root/php7
# cd /root/php7
# git clone https://git.php.net/repository/php-src.git&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Переходим к сырцам и конфигурим&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# cd php-src
# ./buildconf
# ./configure \
    --prefix=/usr \
    --with-config-file-path=/etc \
    --enable-mbstring \
    --enable-zip \
    --enable-bcmath \
    --enable-pcntl \
    --enable-ftp \
    --enable-exif \
    --enable-calendar \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-wddx \
    --with-curl \
    --with-mcrypt \
    --with-iconv \
    --with-gmp \
    --with-pspell \
    --with-gd \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr \
    --with-zlib-dir=/usr \
    --with-xpm-dir=/usr \
    --with-freetype-dir=/usr \
    --with-t1lib=/usr \
    --enable-gd-native-ttf \
    --enable-gd-jis-conv \
    --with-openssl \
    --with-mysql=/usr \
    --with-pdo-mysql=/usr \
    --with-gettext=/usr \
    --with-zlib=/usr \
    --with-bz2=/usr \
    --with-recode=/usr \
    --with-mysqli=/usr/bin/mysql_config&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Если все в порядке, то результатом выполнения предыдущей команды будет что-то типа:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.&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;Проверяем, что установка прошла успешно&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;root@debian:~/php7/php-src# php -v
PHP 7.0.0-dev (cli) (built: May 23 2015 15:48:27) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Вобщем то php7 установлен, но если мы хотим заставить веб-сервер обрабатывать php, то надо ещё настроить apache2.&lt;br /&gt;
Заставим apache2 обрабатывать php, с помощью php-cgi.&lt;br /&gt;
У меня в системе есть пользователь user, и я решил сделать для него виртуальный хост.&lt;br /&gt;
Создаем каталог cgi-bin у пользователя&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mkdir /home/user/cgi-bin/&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создаем файл /home/user/cgi-bin/php со следующим содержимым&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/usr/bin/php-cgi&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И выставляем права 555 на него&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# chmod 555 /home/user/cgi-bin/php&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создаем файл /home/user/cgi-bin/php.ini со следующим содержимым&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;max_execution_time=600
memory_limit=128M
error_reporting=0
display_errors=0
log_errors=0
user_ini.filename=
realpath_cache_size=2M
cgi.check_shebang_line=0
 
zend_extension=opcache.so
opcache.enable_cli=1
opcache.save_comments=0
opcache.fast_shutdown=1
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.use_cwd=1
opcache.max_accelerated_files=100000
opcache.max_wasted_percentage=5
opcache.memory_consumption=128
opcache.consistency_checks=0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создаем каталог для виртуалхоста&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mkdir /home/user/www&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И кладем в него index.php со следующим содержимым&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;?php
phpinfo();
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И т.к мы все делали из под рута, то меняем владельца всех этих созданных файлов и каталогов на user&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# chown -R user:user /home/user/&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь нужно настроить apache2. Добавим необходимые модули в apache2&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# a2enmod actions
# a2enmod cgi&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Заменим конфиг /etc/apache2/sites-enabled/000-default.conf на такой&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;Directory /home/&amp;gt;
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
&amp;lt;/Directory&amp;gt;
&amp;lt;VirtualHost *:80&amp;gt;
DocumentRoot /home/user/www
ScriptAlias /cgi-bin/ &amp;quot;/home/user/cgi-bin/&amp;quot;
AddType application/x-httpd-php .php .php3
Action  application/x-httpd-php /cgi-bin/php
DirectoryIndex index.php
&amp;lt;/VirtualHost&amp;gt;&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;&lt;p&gt;Теперь мы можем зайти браузером на ip тачки и увидеть страницу php info.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://anikin.pw/pictures/---2015-05-23-16:21:02.png" width="1916" height="1015" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Аналогично можно настроить другие виртуальные хосты.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Про настройку разных версий php для каждого сайта на одном сервере можно прочитать в &lt;a href="http://anikin.pw/all/multiversionnost-php-na-servere-s-vestacp/"&gt;статье про мультиверсионность php&lt;/a&gt;.&lt;/b&gt;&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>Ошибка при запуске 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>Мониторинг нагрузки на сервер утилитой 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>Как заставить работать 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>

<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>

<item>
<title>Отправка почты с сайта через smtp.yandex.ru на своём домене.</title>
<guid isPermaLink="false">5</guid>
<link>https://anikin.pw/all/otpravka-pochty-s-sayta-cherez-smtp-yandex-ru-na-svoyom-domene/</link>
<pubDate>Sat, 19 Oct 2013 17:41:57 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/otpravka-pochty-s-sayta-cherez-smtp-yandex-ru-na-svoyom-domene/</comments>
<description>
Делать это будем через маленькую утилиту ssmtp. Допустим что у нас есть почта на собственном домене в яндексе.&lt;p&gt;

Установим ssmtp, для дебианоподобных систем так:&lt;p&gt;

&lt;code&gt;# apt-get install ssmtp&lt;/code&gt;&lt;p&gt;

Очищаем конфиг /etc/ssmtp/ssmtp.conf и пишем свой:&lt;p&gt;

mailhub=smtp.yandex.ru  #адрес smtp сервера яндекса&lt;br /&gt;
AuthUser=post@anikin.pw  #ящик с которого будем отправлять&lt;br /&gt;
AuthPass=pAssw0rd  #пароль к ящику&lt;br /&gt;
rewriteDomain=anikin.pw #принудительное указание домена в поле From&lt;br /&gt;
hostname=anikin.pw #hostname тачки&lt;br /&gt;
FromLineOverride=NO #Запрещает скриптам «решать» с какого ящика отправлять письмо.&lt;br /&gt;
Root=admin@anikin.pw #ящик куда будет отправлятся почта предназначеная root&lt;p&gt;

Идем в файл /etc/ssmtp/revaliases и прописывам пользователей и значение, которое будет выставлятся в  поле From для каждого из указаных пользователей:&lt;p&gt;

&lt;code&gt;www-data:post@anikin.pw&lt;/code&gt;&lt;p&gt;

Пользователей не указаных в этом файле smtp-сервер отфутболит и почта не уйдёт.&lt;p&gt;

Проверяем отправку почты с сайта. После этих настроек почта должна уходить. Данная утилита подойдёт для небольшого количества отправляемух писем, отправка не быстрая. Обычно несколько секунд. Подходит для небольшого проекта. Если у вас большой серьёзный проект, то лучше воспользоваться другими решениями.&lt;p&gt;

&lt;b&gt;P.S. С 16 сентября 2014 года Яндекс.Почта полностью перешла на протокол SSL. При передаче данных по IMAP/POP3/SMTP сервис требует шифрование по SSL, соответственно эта статья потеляла свою актуальность. Правильный конфиг для ssmtp есть в статье &lt;a href="http://anikin.pw/all/otpravka-pochty-s-sayta-cherez-smtp-yandex-ru-na-svoyom-domene-i/" target=blank&gt;Отправка почты с сайта через smtp.yandex.ru на своём домене.(Иcправление)&lt;/a&gt;&lt;/b&gt;</description>
</item>


</channel>
</rss>