<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>vanoc.ru</title>
	<atom:link href="https://vanoc.ru/feed/" rel="self" type="application/rss+xml" />
	<link>https://vanoc.ru</link>
	<description>it заметки</description>
	<lastBuildDate>Tue, 03 Sep 2019 09:58:05 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.2.2</generator>
	<item>
		<title>pgrepup: обновление postgresql 9.5 до 10</title>
		<link>https://vanoc.ru/ubuntu/postgresql-pgrepup/</link>
				<comments>https://vanoc.ru/ubuntu/postgresql-pgrepup/#respond</comments>
				<pubDate>Mon, 01 Jul 2019 14:21:43 +0000</pubDate>
		<dc:creator><![CDATA[vanoc]]></dc:creator>
				<category><![CDATA[centos]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[pgrepup]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">https://vanoc.ru/?p=2327</guid>
				<description><![CDATA[<p>Заметки по которым делал: https://habr.com/ru/company/true_engineering/blog/437318/ https://github.com/rtshome/pgrepup &#160; Устанавливал на тестовых машинах с нуля, поэтому ставил в том числе и postgresql. Сразу скажу, что на бою пока не делал, однако тестовые машинки обновлялись на ура. Судя по ману с хабра, базу можно обновить и до 11 версии, тем не менее я тестировал только до 10. ubuntu &#8230; </p>
<p class="link-more"><a href="https://vanoc.ru/ubuntu/postgresql-pgrepup/" class="more-link">Читать далее<span class="screen-reader-text"> «pgrepup: обновление postgresql 9.5 до 10»</span></a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/ubuntu/postgresql-pgrepup/">pgrepup: обновление postgresql 9.5 до 10</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Заметки по которым делал:<br />
<a href="https://habr.com/ru/company/true_engineering/blog/437318/" target="_blank" rel="noopener noreferrer">https://habr.com/ru/company/true_engineering/blog/437318/</a><br />
<a href="https://github.com/rtshome/pgrepup" target="_blank" rel="noopener noreferrer">https://github.com/rtshome/pgrepup</a></p>
<p>&nbsp;</p>
<p>Устанавливал на тестовых машинах с нуля, поэтому ставил в том числе и postgresql. Сразу скажу, что на бою пока не делал, однако тестовые машинки обновлялись на ура. Судя по ману с хабра, базу можно обновить и до 11 версии, тем не менее я тестировал только до 10.<span id="more-2327"></span></p>
<h4>ubuntu 16.04</h4>
<p>Подключаем репозиторий postgresql<br />
<a href="https://www.postgresql.org/download/linux/ubuntu/" target="_blank" rel="noopener noreferrer">https://www.postgresql.org/download/linux/ubuntu/</a></p>
<p>&nbsp;</p>
<p><strong>postgresql 9.5</strong></p>
<pre>apt install postgresql-9.5 postgresql-9.5-pglogical postgresql-9.5-pgl-ddl-deploy</pre>
<p>vim /etc/postgresql/9.5/main/postgresql.conf</p>
<pre>listen_addresses = '*'
wal_level = logical
shared_preload_libraries = 'pglogical.so'
max_replication_slots = 2		        # или больше
max_wal_senders = 2				# или больше</pre>
<p>vim /etc/postgresql/9.5/main/pg_hba.conf<br />
в начало прописываем</p>
<pre>host    all             postgres        192.168.0.0/24          trust
host    all             postgres        127.0.0.1/32            trust
host    replication     pgrepup_replication    127.0.0.1/32     md5
host    all             pgrepup_replication    127.0.0.1/32     md5</pre>
<pre>systemctl restart postgresql@9.5-main.service</pre>
<p>&nbsp;</p>
<p><strong>postgresql 10</strong></p>
<pre>apt install postgresql-10 postgresql-10-pglogical postgresql-server-dev-10 checkinstall</pre>
<p>vim /etc/postgresql/10/main/postgresql.conf</p>
<pre>wal_level = logical
shared_preload_libraries = 'pglogical.so,pgl_ddl_deploy.so'</pre>
<p>vim /etc/postgresql/10/main/pg_hba.conf<br />
в начало прописываем</p>
<pre>host    all             postgres         192.168.0.0/24         trust
host    all             postgres         127.0.0.1/32           trust
host    replication     pgrepup_replication    127.0.0.1/32     md5
host    all             pgrepup_replication    127.0.0.1/32     md5</pre>
<p>устанавливаем pgl_ddl_deploy</p>
<pre>git clone https://github.com/enova/pgl_ddl_deploy.git
cd pgl_ddl_deploy
PATH=/usr/lib/postgresql/10/bin/:$PATH
echo $PATH
make CLANG=true
checkinstall</pre>
<pre>systemctl restart postgresql@10-main.service</pre>
<p>&nbsp;</p>
<p><strong>pgrepup</strong></p>
<p>Ставим python2.7 и pgrepup</p>
<pre>apt install python2.7 python-virtualenv</pre>
<pre>mkdir pgrepup
python2.7 -m virtualenv pgrepup
source pgrepup/bin/activate
pip install pgrepup</pre>
<p>Переходим в окружение</p>
<pre>source pgrepup/bin/activate</pre>
<p>Настраиваем конфиг</p>
<pre>pgrepup config</pre>
<p>cat ~/.pgrepup</p>
<pre>[Security]
encrypted_credentials = n
tmp_folder = /tmp
app_owner = postgres

[Source]
host = 127.0.0.1
port = 5432
connect_database = template1
user = postgres
password = 

[Destination]
host = 127.0.0.1
port = 5433
connect_database = template1
user = postgres
password =</pre>
<p>&nbsp;</p>
<p><strong>Правим баги pgrepup</strong></p>
<p>1. Баг первый</p>
<pre>grep "def .*()" pgrepup/lib/python2.7/site-packages/pgrepup/commands/*.py</pre>
<p>vim pgrepup/lib/python2.7/site-packages/pgrepup/commands/</p>
<p>В каждом файле *.py добавляем пропущенные **kwargs в описании функции</p>
<p>Пример: меняем</p>
<pre>def setup():</pre>
<p>на</p>
<pre>def setup(**kwargs):</pre>
<p>&nbsp;</p>
<p>2. Баг второй</p>
<p>vim pgrepup/lib/python2.7/site-packages/pgrepup/commands/setup.py</p>
<p>Ищем строки с sh -c и объединяем в одну</p>
<p><a href="https://github.com/rtshome/pgrepup/pull/16/commits/ef582405cce90959c751157414e3fadab183bef5" target="_blank" rel="noopener noreferrer">https://github.com/rtshome/pgrepup/pull/16/commits/ef582405cce90959c751157414e3fadab183bef5</a></p>
<p>Должно получиться:</p>
<pre>os.system('sh -c "PGPASSFILE=%(pgpass)s pg_dumpall -U %(user)s -h %(host)s -p%(port)s -s -f %(fname)s --if-exists -c"' %</pre>
<pre>'sh -c "PGPASSFILE=%(pgpass)s psql -U %(user)s -h %(host)s -p%(port)s -f %(fname)s -d postgres &gt;/dev/null 2&gt;&amp;1"'</pre>
<p>&nbsp;</p>
<p>3. Баг третий</p>
<p>Если в названии базы есть &#8212; , например test-base</p>
<p>vim pgrepup/lib/python2.7/site-packages/pgrepup/helpers/replication.py</p>
<p>Ищем строку:</p>
<pre>c.execute('GRANT CREATE ON DATABASE ' + db + ' TO ' + user)</pre>
<p>Правим на:</p>
<pre>c.execute('GRANT CREATE ON DATABASE ' + '"' + db + '"' + ' TO ' + user)</pre>
<p>&nbsp;</p>
<p>Проверяем</p>
<pre>pgrepup check</pre>
<p>Если есть ошибки</p>
<pre>pgrepup fix</pre>
<p>Ставим</p>
<pre>pgrepup setup
pgrepup start

pgrepup status
...
Replication status 
 &gt;  Database postgres 
 &gt;      Replication status ..............................................replicating
 &gt;  Database template1 
 &gt;      Replication status ..............................................replicating
 &gt;  Database test-base
 &gt;      Replication status .............................................initializing
 &gt;  Xlog difference (bytes) ...................................................68128
</pre>
<p>Когда статус <em>initializing</em> перейдет в <em>replicating</em> можно останавливать</p>
<pre>pgrepup stop</pre>
<p>Удаляем хвосты</p>
<pre>pgrepup uninstall</pre>
<p>Выходим из окружения pgrepup</p>
<pre>deactivate</pre>
<h4>centos 7</h4>
<p>Подключаем репозиторий postgresql<br />
<a href="https://www.postgresql.org/download/linux/redhat/" target="_blank" rel="noopener noreferrer">https://www.postgresql.org/download/linux/redhat/</a></p>
<p>&nbsp;</p>
<p><strong>postgresql 9.5</strong></p>
<pre>yum install postgresql95 postgresql95-devel</pre>
<p>Инициализируем базу</p>
<pre>/usr/pgsql-9.5/bin/postgresql95-setup initdb</pre>
<p>База и конфиг файлы здесь, там же и логи</p>
<pre>ls -l /var/lib/pgsql/9.5/data/</pre>
<p>&nbsp;</p>
<p><strong>postgresql 10</strong></p>
<pre>yum install postgresql10 postgresql10-devel</pre>
<p>Инициализируем базу</p>
<pre>/usr/pgsql-10/bin/postgresql-10-setup initdb</pre>
<p>База и конфиг файлы здесь, там же и логи</p>
<pre>ls -l /var/lib/pgsql/10/data/</pre>
<p>&nbsp;</p>
<p>Установка pglogical<br />
&#8212; для 9.5</p>
<pre>curl https://access.2ndquadrant.com/api/repository/dl/default/release/9.5/rpm | bash
yum install postgresql95-pglogical</pre>
<p>&#8212; для 10</p>
<pre>curl https://access.2ndquadrant.com/api/repository/dl/default/release/10/rpm | bash
yum install postgresql10-pglogical</pre>
<p>&nbsp;</p>
<p>Устанавливаем pgl_ddl_deploy extension</p>
<pre>git clone https://github.com/enova/pgl_ddl_deploy.git
cd pgl_ddl_deploy</pre>
<p>&#8212; для 9.5</p>
<pre>PATH=/usr/pgsql-9.5/bin/:$PATH
USE_PGXS=1 make
USE_PGXS=1 make install
make clean</pre>
<p>&#8212; для 10</p>
<pre>PATH=/usr/pgsql-10/bin/:$PATH
make CLANG=true
make install</pre>
<p>&nbsp;</p>
<p>Настраиваем конфиг файлы</p>
<p>vim /var/lib/pgsql/9.5/data/postgresql.conf</p>
<pre>listen_addresses = '*'
wal_level = logical
shared_preload_libraries = 'pglogical.so,pgl_ddl_deploy.so'
max_replication_slots = 2		        # или больше
max_wal_senders = 2				# или больше</pre>
<p>vim /var/lib/pgsql/9.5/data/pg_hba.conf</p>
<pre>host    all             postgres        192.168.0.0/22          trust
host    all             postgres        127.0.0.1/32            trust
host    replication     pgrepup_replication    127.0.0.1/32     md5
host    all             pgrepup_replication    127.0.0.1/32     md5</pre>
<pre>systemctl restart postgresql@9.5-main.service</pre>
<p>vim /var/lib/pgsql/10/data/postgresql.conf</p>
<pre>port = 5433
wal_level = logical
shared_preload_libraries = 'pglogical.so,pgl_ddl_deploy.so'</pre>
<p>vim /var/lib/pgsql/10/data/pg_hba.conf</p>
<pre>host    all             postgres         127.0.0.1/32           trust
host    all             postgres         192.168.0.0/22         trust
host    replication     pgrepup_replication    127.0.0.1/32     md5
host    all             pgrepup_replication    127.0.0.1/32     md5</pre>
<pre>systemctl restart postgresql@10-main.service</pre>
<p>Настройку pgrepup идентична тому как на убунте</p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/ubuntu/postgresql-pgrepup/">pgrepup: обновление postgresql 9.5 до 10</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://vanoc.ru/ubuntu/postgresql-pgrepup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>oracle java8 jdk</title>
		<link>https://vanoc.ru/ubuntu/oracle-java8-jdk/</link>
				<comments>https://vanoc.ru/ubuntu/oracle-java8-jdk/#respond</comments>
				<pubDate>Thu, 27 Jun 2019 13:17:30 +0000</pubDate>
		<dc:creator><![CDATA[vanoc]]></dc:creator>
				<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">https://vanoc.ru/?p=2318</guid>
				<description><![CDATA[<p>Ввиду того, что теперь нет возможности скачать deb пакет будем его создавать. Для начала ставим необходимые пакеты sudo apt install java-package java-common libgtk-3-dev libcairo-gobject2 Качаем jdk архив jdk-8u211-linux-x64.tar.gz с сайта оракла https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html (нужна учетка, но её можно создать) Создаем из архива deb пакет make-jpkg jdk-8u211-linux-x64.tar.gz Устанавливаем sudo dpkg -i oracle-java8-jdk_8u211_amd64.deb Смотрим версию java -version java &#8230; </p>
<p class="link-more"><a href="https://vanoc.ru/ubuntu/oracle-java8-jdk/" class="more-link">Читать далее<span class="screen-reader-text"> «oracle java8 jdk»</span></a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/ubuntu/oracle-java8-jdk/">oracle java8 jdk</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Ввиду того, что теперь нет возможности скачать deb пакет будем его создавать.</p>
<p>Для начала ставим необходимые пакеты</p>
<pre>sudo apt install java-package java-common libgtk-3-dev libcairo-gobject2</pre>
<p>Качаем jdk архив jdk-8u211-linux-x64.tar.gz с сайта оракла <a href="https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" target="_blank" rel="noopener noreferrer">https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html</a> (нужна учетка, но её можно создать)</p>
<p>Создаем из архива deb пакет</p>
<pre>make-jpkg jdk-8u211-linux-x64.tar.gz</pre>
<p>Устанавливаем</p>
<pre>sudo dpkg -i oracle-java8-jdk_8u211_amd64.deb</pre>
<p>Смотрим версию</p>
<pre>java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)</pre>
<p>Если ставили до этого javа</p>
<pre>update-alternatives --list java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-8-oracle/jre/bin/java
/usr/lib/jvm/java-9-openjdk-amd64/bin/java
/usr/lib/jvm/oracle-java8-jdk-amd64/jre/bin/java</pre>
<p>Выбрать нужную</p>
<pre>sudo update-alternatives --set java /usr/lib/jvm/oracle-java8-jdk-amd64/jre/bin/java</pre>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/ubuntu/oracle-java8-jdk/">oracle java8 jdk</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://vanoc.ru/ubuntu/oracle-java8-jdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Tiny Tiny RSS: ошибка после обновления</title>
		<link>https://vanoc.ru/centos/tiny-tiny-rss-oshibka-posle-obnovleniya/</link>
				<comments>https://vanoc.ru/centos/tiny-tiny-rss-oshibka-posle-obnovleniya/#respond</comments>
				<pubDate>Tue, 21 May 2019 10:14:51 +0000</pubDate>
		<dc:creator><![CDATA[vanoc]]></dc:creator>
				<category><![CDATA[centos]]></category>
		<category><![CDATA[ttrss]]></category>

		<guid isPermaLink="false">https://vanoc.ru/?p=2311</guid>
				<description><![CDATA[<p>Startup failed Tiny Tiny RSS was unable to start properly. This usually means a misconfiguration or an incomplete upgrade. Please fix errors indicated by the following messages: PHP UConverter class is missing, it's provided by the Internationalization (intl) module. You might want to check tt-rss wiki or the forums for more information. Please search the &#8230; </p>
<p class="link-more"><a href="https://vanoc.ru/centos/tiny-tiny-rss-oshibka-posle-obnovleniya/" class="more-link">Читать далее<span class="screen-reader-text"> «Tiny Tiny RSS: ошибка после обновления»</span></a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/centos/tiny-tiny-rss-oshibka-posle-obnovleniya/">Tiny Tiny RSS: ошибка после обновления</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p><a href="https://vanoc.ru/wp-content/uploads/2019/05/Screenshot_20190521_130533.png"><img class="aligncenter size-large wp-image-2312" src="https://vanoc.ru/wp-content/uploads/2019/05/Screenshot_20190521_130533-1024x285.png" alt="" width="525" height="146" srcset="https://vanoc.ru/wp-content/uploads/2019/05/Screenshot_20190521_130533-1024x285.png 1024w, https://vanoc.ru/wp-content/uploads/2019/05/Screenshot_20190521_130533-300x84.png 300w, https://vanoc.ru/wp-content/uploads/2019/05/Screenshot_20190521_130533-768x214.png 768w, https://vanoc.ru/wp-content/uploads/2019/05/Screenshot_20190521_130533.png 1182w" sizes="(max-width: 525px) 100vw, 525px" /></a></p>
<pre>Startup failed
Tiny Tiny RSS was unable to start properly. This usually means a misconfiguration or an incomplete upgrade. Please fix errors indicated by the following messages:
PHP UConverter class is missing, it's provided by the Internationalization (intl) module.
You might want to check tt-rss wiki or the forums for more information. Please search the forums before creating new topic for your question.</pre>
<p>Лечится установкой пакета php-intl</p>
<pre>yum install php-intl
systemctl restart php-fpm.service</pre>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/centos/tiny-tiny-rss-oshibka-posle-obnovleniya/">Tiny Tiny RSS: ошибка после обновления</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://vanoc.ru/centos/tiny-tiny-rss-oshibka-posle-obnovleniya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>LVM восстановление рейда</title>
		<link>https://vanoc.ru/linux/lvm-vosstanovlenie/</link>
				<comments>https://vanoc.ru/linux/lvm-vosstanovlenie/#respond</comments>
				<pubDate>Thu, 18 Apr 2019 09:55:47 +0000</pubDate>
		<dc:creator><![CDATA[vanoc]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[LVM]]></category>

		<guid isPermaLink="false">https://vanoc.ru/?p=2162</guid>
				<description><![CDATA[<p>Есть сервер на котором выполнили vgreduce &#8212;removemissing vgraid до замены диска на новый и репейра. В итоге картинка была такая # lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices lvraid vgraid rwi-a-r--- 9,98g 100,00 lvraid_rimage_0(0),lvraid_rimage_1(0),lvraid_rimage_2(0),lvraid_rimage_3(0) [lvraid_rimage_0] vgraid iwi-aor--- 4,99g /dev/sdb(1) [lvraid_rimage_1] vgraid iwi-aor--- 4,99g /dev/sdd(1) [lvraid_rimage_2] &#8230; </p>
<p class="link-more"><a href="https://vanoc.ru/linux/lvm-vosstanovlenie/" class="more-link">Читать далее<span class="screen-reader-text"> «LVM восстановление рейда»</span></a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/linux/lvm-vosstanovlenie/">LVM восстановление рейда</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Есть сервер на котором выполнили <em>vgreduce &#8212;removemissing vgraid</em> до замены диска на новый и репейра. В итоге картинка была такая</p>
<pre># lvs -a -o +devices
  LV                VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices
  lvraid            vgraid rwi-a-r---  9,98g                                    100,00           lvraid_rimage_0(0),lvraid_rimage_1(0),lvraid_rimage_2(0),lvraid_rimage_3(0)
  [lvraid_rimage_0] vgraid iwi-aor---  4,99g                                                     /dev/sdb(1)
  [lvraid_rimage_1] vgraid iwi-aor---  4,99g                                                     /dev/sdd(1)
  [lvraid_rimage_2] vgraid iwi-aor---  4,99g                                                     /dev/sde(1)
<span style="color: #ff0000;">  [lvraid_rimage_3] vgraid vwi-a-r---  4,99g</span>
  [lvraid_rmeta_0]  vgraid ewi-aor---  4,00m                                                     /dev/sdb(0)
  [lvraid_rmeta_1]  vgraid ewi-aor---  4,00m                                                     /dev/sdd(0)
  [lvraid_rmeta_2]  vgraid ewi-aor---  4,00m                                                     /dev/sde(0)
<span style="color: #ff0000;">  [lvraid_rmeta_3]  vgraid ewi-a-r---  4,00m</span></pre>
<p>repair не получалось сделать</p>
<pre># lvconvert --repair vgraid/lvraid /dev/sdf
Attempt to replace failed RAID images (requires full device resync)? [y/n]: y
  Unable to remove 1 images:  Only 0 devices given.
  Failed to remove the specified images from vgraid/lvraid
  Failed to replace faulty devices in vgraid/lvraid.</pre>
<p>В итоге удалось починить таким способом. Не претендую на правильность и не мне говорить, что сперва следует протестировать.<span id="more-2162"></span></p>
<p>Что хочу сделать. Обмануть рейд сказав, что у него все работает, затереть на нужном диске метадату, получив статус <em>unknown device(1)</em> и дальше по ману восстановить рейд.</p>
<p>Смотрю архив бэкапов конфигов группы.</p>
<pre>vgcfgrestore --list vgraid</pre>
<p>Интересует вот этот</p>
<pre>File:         /etc/lvm/archive/vgraid_00003-2109598279.vg
VG name:      vgraid
Description:  Created *before* executing 'vgreduce --removemissing vgraid'
Backup Time:  Mon Apr 15 16:01:59 2019</pre>
<p>Делаю на всякий случай копию этого файла</p>
<pre>cp /etc/lvm/archive/vgraid_00003-2109598279.vg /etc/lvm/archive/vgraid_00003-2109598279.vg.orig</pre>
<p>Редактирую /etc/lvm/archive/vgraid_00003-2109598279.vg и смотрю uuid нужного диска</p>
<pre># vim /etc/lvm/archive/vgraid_00003-2109598279.vg

Заменяю
device = "unknown device"       # Hint only
на
device = "/dev/sdf"     # Hint only

и
flags = ["MISSING"]
на
flags = []</pre>
<p>Создаю PV</p>
<pre># pvcreate --uuid "PT8JJy-5BvS-fzCv-qO20-cwzv-FWIl-HQ83Xb" --restorefile /etc/lvm/archive/vgraid_00003-2109598279.vg /dev/sdf
  Physical volume "/dev/sdf" successfully created</pre>
<p>Добавляю его в группу</p>
<pre># vgextend vgraid /dev/sdf
  Volume group "vgraid" successfully extended</pre>
<p>Восстанавливаю групу. Теперь в ней нет информации о потерянном диске.</p>
<pre># vgcfgrestore -f /etc/lvm/archive/vgraid_00003-2109598279.vg vgraid
  Restored volume group vgraid</pre>
<pre># lvs -a -o +devices
   LV                VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices
   lvraid            vgraid rwi-a-r---  9,98g                                    100,00           lvraid_rimage_0(0),lvraid_rimage_1(0),lvraid_rimage_2(0),lvraid_rimage_3(0)
   [lvraid_rimage_0] vgraid iwi-aor---  4,99g                                                     /dev/sdb(1)
   [lvraid_rimage_1] vgraid iwi-aor---  4,99g                                                     /dev/sdd(1)
   [lvraid_rimage_2] vgraid iwi-aor---  4,99g                                                     /dev/sde(1)
<span style="color: #ff0000;">   [lvraid_rimage_3] vgraid iwi-a-r---  4,99g                                                     /dev/sdf(1)</span>
   [lvraid_rmeta_0]  vgraid ewi-aor---  4,00m                                                     /dev/sdb(0)
   [lvraid_rmeta_1]  vgraid ewi-aor---  4,00m                                                     /dev/sdd(0)
   [lvraid_rmeta_2]  vgraid ewi-aor---  4,00m                                                     /dev/sde(0)
<span style="color: #ff0000;">   [lvraid_rmeta_3]  vgraid ewi-a-r---  4,00m                                                     /dev/sdf(0)</span></pre>
<p>Ура. Получилось.</p>
<p>Дальше прибиваю метадату, выкидываю диск и нахожу его заново. Дальше его можно добавить как новый и восстановить рейд.</p>
<p>Трем метадату. Одного килобайта достаточно для того, чтоб перевести его в состояние unknown device(1) Нужно для того, чтоб он заново не влетал в групу.</p>
<pre># dd if=/dev/zero of=/dev/sdf bs=512 count=2</pre>
<pre># lvs -a -o +devices
  WARNING: Device for PV PT8JJy-5BvS-fzCv-qO20-cwzv-FWIl-HQ83Xb not found or rejected by a filter.
  LV                VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices
  lvraid            vgraid rwi-a-r-p-  9,98g                                    100,00           lvraid_rimage_0(0),lvraid_rimage_1(0),lvraid_rimage_2(0),lvraid_rimage_3(0)
  [lvraid_rimage_0] vgraid iwi-aor---  4,99g                                                     /dev/sdb(1)
  [lvraid_rimage_1] vgraid iwi-aor---  4,99g                                                     /dev/sdd(1)
  [lvraid_rimage_2] vgraid iwi-aor---  4,99g                                                     /dev/sde(1)
<span style="color: #ff0000;">  [lvraid_rimage_3] vgraid iwi-a-r-p-  4,99g                                                     unknown device(1)</span>
  [lvraid_rmeta_0]  vgraid ewi-aor---  4,00m                                                     /dev/sdb(0)
  [lvraid_rmeta_1]  vgraid ewi-aor---  4,00m                                                     /dev/sdd(0)
  [lvraid_rmeta_2]  vgraid ewi-aor---  4,00m                                                     /dev/sde(0)
<span style="color: #ff0000;">  [lvraid_rmeta_3]  vgraid ewi-a-r-p-  4,00m                                                     unknown device(0)</span></pre>
<p>Отключаю диск</p>
<pre>echo 1 &gt; /sys/block/sdf/device/delete</pre>
<p>Ищю его заново. Здесь могут быть host, host1, host2. Смотрю lsblk когда он появится. Имя диска может измениться. На тестовом сервере три раза имя менялось на новое, на боевом осталось прежним.</p>
<pre>echo "- - -" &gt; /sys/class/scsi_host/host2/scan</pre>
<p>Дальше по манам.</p>
<pre># pvcreate /dev/sdi
  WARNING: Device for PV PT8JJy-5BvS-fzCv-qO20-cwzv-FWIl-HQ83Xb not found or rejected by a filter.
  Physical volume "/dev/sdi" successfully created</pre>
<pre># vgextend vgraid /dev/sdi
  WARNING: Device for PV PT8JJy-5BvS-fzCv-qO20-cwzv-FWIl-HQ83Xb not found or rejected by a filter.
  WARNING: Device for PV PT8JJy-5BvS-fzCv-qO20-cwzv-FWIl-HQ83Xb not found or rejected by a filter.
  Volume group "vgraid" successfully extended</pre>
<pre># lvconvert --repair vgraid/lvraid /dev/sdi
  WARNING: Device for PV PT8JJy-5BvS-fzCv-qO20-cwzv-FWIl-HQ83Xb not found or rejected by a filter.
  Attempt to replace failed RAID images (requires full device resync)? [y/n]: y
  Faulty devices in vgraid/lvraid successfully replaced.</pre>
<p>Смотрю процесс восстановления</p>
<pre># lvs -a -o +devices
  WARNING: Device for PV PT8JJy-5BvS-fzCv-qO20-cwzv-FWIl-HQ83Xb not found or rejected by a filter.
  LV                VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices
  lvraid            vgraid rwi-a-r---  9,98g                                    28,13            lvraid_rimage_0(0),lvraid_rimage_1(0),lvraid_rimage_2(0),lvraid_rimage_3(0)
  [lvraid_rimage_0] vgraid iwi-aor---  4,99g                                                     /dev/sdb(1)
  [lvraid_rimage_1] vgraid iwi-aor---  4,99g                                                     /dev/sdd(1)
  [lvraid_rimage_2] vgraid iwi-aor---  4,99g                                                     /dev/sde(1)
<span style="color: #ff0000;">  [lvraid_rimage_3] vgraid Iwi-aor---  4,99g                                                     /dev/sdi(1)</span>
  [lvraid_rmeta_0]  vgraid ewi-aor---  4,00m                                                     /dev/sdb(0)
  [lvraid_rmeta_1]  vgraid ewi-aor---  4,00m                                                     /dev/sdd(0)
  [lvraid_rmeta_2]  vgraid ewi-aor---  4,00m                                                     /dev/sde(0)
<span style="color: #ff0000;">  [lvraid_rmeta_3]  vgraid ewi-aor---  4,00m                                                     /dev/sdi(0)</span></pre>
<p>Убираю хвосты</p>
<pre># vgreduce --removemissing vgraid
  WARNING: Device for PV PT8JJy-5BvS-fzCv-qO20-cwzv-FWIl-HQ83Xb not found or rejected by a filter.
  WARNING: Device for PV PT8JJy-5BvS-fzCv-qO20-cwzv-FWIl-HQ83Xb not found or rejected by a filter.
  Wrote out consistent volume group vgraid</pre>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/linux/lvm-vosstanovlenie/">LVM восстановление рейда</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://vanoc.ru/linux/lvm-vosstanovlenie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Tiny Tiny RSS на nginx, php-fpm и postgresql</title>
		<link>https://vanoc.ru/centos/tiny-tiny-rss-s-nginx-php-fpm-i-postgresql/</link>
				<comments>https://vanoc.ru/centos/tiny-tiny-rss-s-nginx-php-fpm-i-postgresql/#respond</comments>
				<pubDate>Wed, 27 Mar 2019 13:45:51 +0000</pubDate>
		<dc:creator><![CDATA[vanoc]]></dc:creator>
				<category><![CDATA[centos]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[ttrss]]></category>

		<guid isPermaLink="false">https://vanoc.ru/?p=2135</guid>
				<description><![CDATA[<p>Качаем tt-rss с официального сайта https://tt-rss.org/ git clone https://tt-rss.org/git/tt-rss.git /path/to/tt-rss/www Ставим nginx rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum install nginx Конфиг nginx server { listen 443 ssl http2; server_name rss.site.name; root /path/to/tt-rss/www/; index index.php index.html index.htm; access_log /path/to/tt-rss/log/ssl-access.log main; error_log /path/to/tt-rss/log/ssl-error.log; keepalive_timeout 60; ssl_certificate /etc/letsencrypt/live/rss.site.name/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/rss.site.name/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header Strict-Transport-Security &#8230; </p>
<p class="link-more"><a href="https://vanoc.ru/centos/tiny-tiny-rss-s-nginx-php-fpm-i-postgresql/" class="more-link">Читать далее<span class="screen-reader-text"> «Tiny Tiny RSS на nginx, php-fpm и postgresql»</span></a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/centos/tiny-tiny-rss-s-nginx-php-fpm-i-postgresql/">Tiny Tiny RSS на nginx, php-fpm и postgresql</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Качаем tt-rss с официального сайта <a href="https://tt-rss.org/" target="_blank" rel="noopener noreferrer">https://tt-rss.org/</a></p>
<pre>git clone https://tt-rss.org/git/tt-rss.git /path/to/tt-rss/www</pre>
<p>Ставим nginx</p>
<pre>rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx</pre>
<p>Конфиг nginx</p>
<pre>server {
    listen 443 ssl http2;
    server_name rss.site.name;
    root /path/to/tt-rss/www/;
    index index.php index.html index.htm;
    access_log /path/to/tt-rss/log/ssl-access.log main;
    error_log /path/to/tt-rss/log/ssl-error.log;

    keepalive_timeout           60;
    ssl_certificate             /etc/letsencrypt/live/rss.site.name/fullchain.pem;
    ssl_certificate_key         /etc/letsencrypt/live/rss.site.name/privkey.pem;
    ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_dhparam                 /etc/ssl/certs/dhparam.pem;
    add_header                  Strict-Transport-Security 'max-age=604800';

    # GZIP Compression
    gzip on;
    gzip_vary on;
    gzip_min_length 10240;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
    gzip_disable "MSIE [1-6]\.";

    location ~ \.php$ {
    try_files  $uri =404;
    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    #fastcgi_pass    127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param DOCUMENT_ROOT /path/to/tt-rss/www/;
    fastcgi_param SCRIPT_FILENAME /path/to/tt-rss/www$fastcgi_script_name;
    fastcgi_param PATH_TRANSLATED /path/to/tt-rss/www$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param HTTPS on;
    fastcgi_intercept_errors on;
    fastcgi_ignore_client_abort off;
    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 180;
    fastcgi_read_timeout 180;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    }
    
    location /cache {
        deny all;
    }
    
    location = /config.php {
        deny all;
    }

}

server {
     listen  443 ssl http2;
     server_name  www.rss.site.name;
     rewrite ^ https://rss.site.name$request_uri? permanent;
}</pre>
<p>Обращаю внимание, что у меня nginx работает с php-fpm через сокет. Если у вас по tcp порту, то ставьте<br />
fastcgi_pass 127.0.0.1:9000;</p>
<p>Создаем директрию для логов</p>
<pre>mkdir /path/to/tt-rss/log</pre>
<p>Выставляем права</p>
<pre>chown -R nginx. /path/to/tt-rss</pre>
<p>Ставим сертификат от LetsEncrypt</p>
<pre>yum install certbot
certbot certonly --standalone --preferred-challenges=http -d rss.site.name</pre>
<p>Запускаем nginx</p>
<pre>systemctl start nginx
systemctl enable nginx</pre>
<p>Ставим php-fpm</p>
<pre>rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install epel-release yum-utils
yum-config-manager --enable remi-php71
yum install php71 php-intl
yum install php-fpm php-pgsql 
systemctl start php-fpm
systemctl enable php-fpm</pre>
<p>Настроим php-fpm</p>
<pre>yum install net-tools
netstat -tulpn | grep php-fpm</pre>
<p>Все в порядке, повис на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:</p>
<p>vim /etc/php-fpm.d/www.conf</p>
<pre>;listen = 127.0.0.1:9000</pre>
<p>Вместо нее добавляем несколько других:</p>
<pre>listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx</pre>
<p>Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx</p>
<pre>user = nginx
group = nginx</pre>
<pre>systemctl restart php-fpm</pre>
<p>Открываем 80, 443 порты</p>
<pre>firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload</pre>
<p>Уже можно заходить на rss.site.name и должно перекинуть в <a href="https://rss.site.name/install/" target="_blank" rel="noopener noreferrer">https://rss.site.name/install/</a></p>
<p>Осталось настроить postgresql</p>
<p>Подключим репозитрий</p>
<pre>yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm</pre>
<p>Установим и запустим postgresql 11</p>
<pre>yum install postgresql11-server
/usr/pgsql-11/bin/postgresql-11-setup initdb
systemctl start postgresql-11
systemctl enable postgresql-11</pre>
<p>Cоздаем базу и пользователя для tt-rss</p>
<pre>sudo -u postgres psql
postgres=# create database mydb;
postgres=# create user myuser with encrypted password 'mypass';
postgres=# grant all privileges on database mydb to myuser;</pre>
<p>Смотрим где наша база и конфиги к ней</p>
<pre>postgres=# SHOW config_file;
              config_file               
----------------------------------------
 /var/lib/pgsql/11/data/postgresql.conf
(1 row)</pre>
<p>Выходим из postgresql</p>
<pre>postgres=# \q</pre>
<p>Правим файл /var/lib/pgsql/11/data/pg_hba.conf<br />
Приводим его к виду</p>
<pre>#local   all             all                                     peer
#host    all             all             127.0.0.1/32            ident
#host    all             all             ::1/128                 ident
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5</pre>
<p>Перезапускаем postgresql</p>
<pre>systemctl restart postgresql-11</pre>
<p>Возвращаемся к странице настроек <a href="https://rss.site.name/install/" target="_blank" rel="noopener noreferrer">https://rss.site.name/install/</a></p>
<p>По идее ошибок быть не должно. Сохраняем предложенный config.php файл. Его можно будет потом поправить и настроить под себя.</p>
<p>Дефолтные логин и пароль: admin &#8212; password</p>
<p>Осталось настроить проверку новых постов. Можно запускать по крону или написать демона, как подсказывает wiki: <a href="https://git.tt-rss.org/fox/tt-rss/wiki/UpdatingFeeds" target="_blank" rel="noopener noreferrer">https://git.tt-rss.org/fox/tt-rss/wiki/UpdatingFeeds</a></p>
<p>Выбираю демоном</p>
<p>vim /etc/systemd/system/tt-rss.service</p>
<pre>[Unit]
Description=ttrss_backend
After=network.target mysql.service postgresql.service

[Service]
User=nginx
ExecStart=/path/to/tt-rss/www/update_daemon2.php

[Install]
WantedBy=multi-user.target</pre>
<pre>systemctl start tt-rss.service
systemctl enable tt-rss.service</pre>
<p>Обновляю так</p>
<pre>cp -r /path/to/tt-rss/ /path/to/tt-rss.copy
cd /path/to/tt-rss/www/
git pull origin master</pre>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/centos/tiny-tiny-rss-s-nginx-php-fpm-i-postgresql/">Tiny Tiny RSS на nginx, php-fpm и postgresql</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://vanoc.ru/centos/tiny-tiny-rss-s-nginx-php-fpm-i-postgresql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Postfix: Illegal address syntax</title>
		<link>https://vanoc.ru/linux/postfix-illegal-address-syntax/</link>
				<comments>https://vanoc.ru/linux/postfix-illegal-address-syntax/#comments</comments>
				<pubDate>Thu, 15 Nov 2018 13:40:11 +0000</pubDate>
		<dc:creator><![CDATA[vanoc]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Postfix]]></category>

		<guid isPermaLink="false">https://vanoc.ru/?p=2080</guid>
				<description><![CDATA[<p>Редко, но бывает вижу в логах постфикса такие ошибки: Nov 6 17:22:44 mx postfix/smtpd[22836]: warning: Illegal address syntax from unknown[192.168.XX.XX] in RCPT command: &#60;'email_1@example.com'&#62; Nov 6 17:22:45 mx postfix/smtpd[22836]: warning: Illegal address syntax from unknown[192.168.XX.XX] in RCPT command: &#60;'email_2@example.com'&#62; Nov 6 17:22:46 mx postfix/smtpd[22836]: warning: Illegal address syntax from unknown[192.168.XX.XX] in RCPT command: &#60;'email_3@example.com'&#62; Nov &#8230; </p>
<p class="link-more"><a href="https://vanoc.ru/linux/postfix-illegal-address-syntax/" class="more-link">Читать далее<span class="screen-reader-text"> «Postfix: Illegal address syntax»</span></a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/linux/postfix-illegal-address-syntax/">Postfix: Illegal address syntax</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Редко, но бывает вижу в логах постфикса такие ошибки:</p>
<pre>Nov  6 17:22:44 mx postfix/smtpd[22836]: warning: Illegal address syntax from unknown[192.168.XX.XX] in RCPT command: &lt;'email_1@example.com'&gt;
Nov  6 17:22:45 mx postfix/smtpd[22836]: warning: Illegal address syntax from unknown[192.168.XX.XX] in RCPT command: &lt;'email_2@example.com'&gt;
Nov  6 17:22:46 mx postfix/smtpd[22836]: warning: Illegal address syntax from unknown[192.168.XX.XX] in RCPT command: &lt;'email_3@example.com'&gt;
Nov  6 17:22:48 mx postfix/smtpd[22836]: too many errors after RCPT from unknown[192.168.XX.XX]</pre>
<p>Проблема в одинарных кавычках &#8217;email&#8217; которых не должно быть и которые появляются, как правило, у пользователей Outlook. Лечится вот таким вот фильтром в постификсе:</p>
<p>В main.cf добавляем</p>
<pre>smtpd_command_filter = pcre:/etc/postfix/command_filter.regex</pre>
<p>в /etc/postfix/command_filter.regex</p>
<pre>/^RCPT\s+TO:\s*&lt;'([^[:space:]]+)'&gt;(.*)/		RCPT TO:&lt;$1&gt;$2</pre>
<p>Спасибо <a href="https://extremeshok.com/6904/postfix-bug-fix-warning-illegal-address-syntax-fix-malformed-emails/" target="_blank" rel="noopener">extremeshok.com</a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/linux/postfix-illegal-address-syntax/">Postfix: Illegal address syntax</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://vanoc.ru/linux/postfix-illegal-address-syntax/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Dovecot deleted-to-trash plugin</title>
		<link>https://vanoc.ru/centos/dovecot-deleted-to-trash-plugin/</link>
				<comments>https://vanoc.ru/centos/dovecot-deleted-to-trash-plugin/#respond</comments>
				<pubDate>Tue, 16 Oct 2018 12:33:02 +0000</pubDate>
		<dc:creator><![CDATA[vanoc]]></dc:creator>
				<category><![CDATA[centos]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[Outlook]]></category>

		<guid isPermaLink="false">https://vanoc.ru/?p=2061</guid>
				<description><![CDATA[<p>По умолчанию Outlook, при подключении по IMAP, некорректно работает с Dovecot, а именно при удалении письма только перечеркивает его и не перемещает в Корзину. Этот плагин при удалении письма копирует его в Корзину. Именно копирует, потому что помеченное перечеркнутое Outlook-ом письмо останется там же где и было. Удалить же помеченные письма можно перейдя в Правка &#8230; </p>
<p class="link-more"><a href="https://vanoc.ru/centos/dovecot-deleted-to-trash-plugin/" class="more-link">Читать далее<span class="screen-reader-text"> «Dovecot deleted-to-trash plugin»</span></a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/centos/dovecot-deleted-to-trash-plugin/">Dovecot deleted-to-trash plugin</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>По умолчанию Outlook, при подключении по IMAP, некорректно работает с Dovecot, а именно при удалении письма только перечеркивает его и не перемещает в Корзину. Этот плагин при удалении письма копирует его в Корзину. Именно копирует, потому что помеченное перечеркнутое Outlook-ом письмо останется там же где и было. Удалить же помеченные письма можно перейдя в Правка &#8212; Очистить &#8212; Очистить помеченные элементы. Так же можно настроить автоматические удаление помеченных элементов перейдя в Правка &#8212; Очистить &#8212; Параметры очистки и выставив галку рядом с &#171;Удалять элементы при переключении папок в сети&#187;</p>
<p>Вернемся к настройке плагина.</p>
<p>Установим необходимые пакеты</p>
<pre>yum install autoconf automake gcc git dovecot-devel</pre>
<p>Скачаем и установим плагин</p>
<pre>git clone https://github.com/lexbrugman/dovecot_deleted_to_trash
cd dovecot_deleted_to_trash
make
cp lib_deleted_to_trash_plugin.so /usr/lib64/dovecot/lib95_deleted_to_trash_plugin.so</pre>
<p>Правим <em>/etc/dovecot/conf.d/20-imap.conf</em></p>
<pre>protocol imap {
  mail_plugins = $mail_plugins imap_quota acl <strong>deleted_to_trash</strong>
}</pre>
<p>И <em>/etc/dovecot/conf.d/90-plugin.conf</em></p>
<pre>plugin {
  <strong>deleted_to_trash_folder = Trash</strong>
}</pre>
<p>Перезапустим Dovecot</p>
<pre>systemctl restart dovecot.service</pre>
<p>Спасибо <a href="https://extremeshok.com/6864/dovecot-deleted-to-trash-plugin-outlook-delete-to-trash-imap-fix-on-centos-iredmail-compatible/" rel="noopener noreferrer" target="_blank">https://extremeshok.com/</a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/centos/dovecot-deleted-to-trash-plugin/">Dovecot deleted-to-trash plugin</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://vanoc.ru/centos/dovecot-deleted-to-trash-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>K3b: cdrecord has no permission to open the device</title>
		<link>https://vanoc.ru/linux/k3b-cdrecord-has-no-permission-to-open-the-device/</link>
				<comments>https://vanoc.ru/linux/k3b-cdrecord-has-no-permission-to-open-the-device/#comments</comments>
				<pubDate>Fri, 14 Sep 2018 08:11:48 +0000</pubDate>
		<dc:creator><![CDATA[vanoc]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[K3b]]></category>

		<guid isPermaLink="false">https://vanoc.ru/?p=2054</guid>
				<description><![CDATA[<p>Первый раз за пару лет понадобилось записать пару файлов на CD диск и получил ошибку &#171;cdrecord has no permission to open the device (cdrecord не имеет прав на открытие устройства)&#187; Как оказалось лечится довольно легко. В K3b заходим в Настройки K3b &#8212; Программы &#8212; Права доступа. Там у меня была такая картинка: Правим права на &#8230; </p>
<p class="link-more"><a href="https://vanoc.ru/linux/k3b-cdrecord-has-no-permission-to-open-the-device/" class="more-link">Читать далее<span class="screen-reader-text"> «K3b: cdrecord has no permission to open the device»</span></a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/linux/k3b-cdrecord-has-no-permission-to-open-the-device/">K3b: cdrecord has no permission to open the device</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Первый раз за пару лет понадобилось записать пару файлов на CD диск и получил ошибку &#171;cdrecord has no permission to open the device (cdrecord не имеет прав на открытие устройства)&#187; Как оказалось лечится довольно легко. В K3b заходим в Настройки K3b &#8212; Программы &#8212; Права доступа.</p>
<p>Там у меня была такая картинка:</p>
<p><a href="https://vanoc.ru/wp-content/uploads/2018/09/Screenshot_20180914_110332.png"><img class="aligncenter wp-image-2056" src="https://vanoc.ru/wp-content/uploads/2018/09/Screenshot_20180914_110332.png" alt="" width="700" height="472" srcset="https://vanoc.ru/wp-content/uploads/2018/09/Screenshot_20180914_110332.png 786w, https://vanoc.ru/wp-content/uploads/2018/09/Screenshot_20180914_110332-300x202.png 300w, https://vanoc.ru/wp-content/uploads/2018/09/Screenshot_20180914_110332-768x518.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
<p>Правим права на те, что предлагает программа.</p>
<pre>sudo chmod 4711 /usr/bin/cdrdao
sudo chmod 4711 /usr/bin/wodim</pre>
<p>Получается так:</p>
<p><a href="https://vanoc.ru/wp-content/uploads/2018/09/Screenshot_20180914_110418.png"><img class="aligncenter wp-image-2055" src="https://vanoc.ru/wp-content/uploads/2018/09/Screenshot_20180914_110418.png" alt="" width="700" height="477" srcset="https://vanoc.ru/wp-content/uploads/2018/09/Screenshot_20180914_110418.png 781w, https://vanoc.ru/wp-content/uploads/2018/09/Screenshot_20180914_110418-300x204.png 300w, https://vanoc.ru/wp-content/uploads/2018/09/Screenshot_20180914_110418-768x523.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
<p>После этого запись идет нормально.</p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/linux/k3b-cdrecord-has-no-permission-to-open-the-device/">K3b: cdrecord has no permission to open the device</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://vanoc.ru/linux/k3b-cdrecord-has-no-permission-to-open-the-device/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Zabbix 3 на nginx и php-fpm на centos 7</title>
		<link>https://vanoc.ru/centos/zabbix-3-na-nginx-i-php-fpm-na-centos-7/</link>
				<comments>https://vanoc.ru/centos/zabbix-3-na-nginx-i-php-fpm-na-centos-7/#respond</comments>
				<pubDate>Fri, 25 May 2018 11:32:01 +0000</pubDate>
		<dc:creator><![CDATA[vanoc]]></dc:creator>
				<category><![CDATA[centos]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Zabbix]]></category>

		<guid isPermaLink="false">https://vanoc.ru/?p=2006</guid>
				<description><![CDATA[<p>Идея в том, чтоб настроить веб-интерфейс zabbix 3 на nginx и php-fpm на одном сервере, а zabbix-server на другом. Настраиваем веб-сервер Ставим nginx rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum install nginx systemctl start nginx systemctl enable nginx Конфиг nginx vim /etc/nginx/conf.d/zabbix.conf server { listen 80; root /usr/share/zabbix; access_log /var/log/nginx/zabbix.access.log; server_name 172.16.16.10; location / { index index.php index.html &#8230; </p>
<p class="link-more"><a href="https://vanoc.ru/centos/zabbix-3-na-nginx-i-php-fpm-na-centos-7/" class="more-link">Читать далее<span class="screen-reader-text"> «Zabbix 3 на nginx и php-fpm на centos 7»</span></a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/centos/zabbix-3-na-nginx-i-php-fpm-na-centos-7/">Zabbix 3 на nginx и php-fpm на centos 7</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Идея в том, чтоб настроить веб-интерфейс zabbix 3 на nginx и php-fpm на одном сервере, а zabbix-server на другом.</p>
<p><strong>Настраиваем веб-сервер</strong></p>
<p>Ставим nginx</p>
<pre>rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx

systemctl start nginx
systemctl enable nginx</pre>
<p>Конфиг nginx</p>
<pre>vim /etc/nginx/conf.d/zabbix.conf</pre>
<pre>server {
listen 80;

root /usr/share/zabbix;
access_log /var/log/nginx/zabbix.access.log;
server_name 172.16.16.10;

location / {
index index.php index.html index.htm;
}

location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PHP_VALUE "
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = Europe/Moscow
always_populate_raw_post_data = -1
";
fastcgi_buffers 8 256k;
fastcgi_buffer_size 128k;
fastcgi_intercept_errors on;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}

client_max_body_size 32m;

}</pre>
<p>Обращаю внимание, что у меня nginx работает с php-fpm через сокет. Если у вас по tcp порту, то ставьте</p>
<pre>fastcgi_pass 127.0.0.1:9000;</pre>
<p>Открываем 80, 443 порты</p>
<pre>firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload</pre>
<p>Ставим php-fpm</p>
<pre>rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install epel-release yum-utils
yum-config-manager --enable remi-php71

yum install php71
yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap

systemctl start php-fpm
systemctl enable php-fpm</pre>
<p>Настроим php-fpm</p>
<pre>yum install net-tools

netstat -tulpn | grep php-fpm</pre>
<p>Все в порядке, повис на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:</p>
<pre>vim /etc/php-fpm.d/www.conf

;listen = 127.0.0.1:9000</pre>
<p>Вместо нее добавляем несколько других:</p>
<pre>listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx</pre>
<p>Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx</p>
<pre>user = nginx
group = nginx</pre>
<p>Ставим zabbix</p>
<pre>rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
yum install zabbix-web-mysql</pre>
<p>Настроим selinux<br />
Дадим права на подключение к удаленной базе mysql</p>
<pre>getsebool -a | grep httpd_can_network_connect_db
setsebool -P httpd_can_network_connect_db 1</pre>
<p>Дадим возможность вебморде подключаться к серверной части</p>
<pre>getsebool -a | grep zabbix
setsebool -P httpd_can_connect_zabbix 1</pre>
<p>Настроим права</p>
<pre>chown -R nginx. /etc/zabbix/web
chown -R nginx. /usr/share/zabbix</pre>
<p>Дабы не получать ошибку</p>
<pre>PHP message: PHP Fatal error:  Uncaught Exception: Cannot start session. in /usr/share/zabbix/include/classes/core/CSession.php:50</pre>
<p>в /etc/php-fpm.d/www.conf ищем строку</p>
<pre>php_value[session.save_path]    = /var/lib/php/session</pre>
<p>И выставляем полные права на директорию /var/lib/php/session</p>
<pre>chmod 770 /var/lib/php/session
chown :nginx /var/lib/php/session
systemctl restart php-fpm</pre>
<p>Перезапускаем nginx</p>
<pre>systemctl restart nginx.service</pre>
<p>&nbsp;</p>
<p><strong>Настраиваем второй сервер</strong></p>
<p>Ставим mariadb</p>
<pre>yum install mariadb-server mariadb-devel
systemctl enable mariadb.service
systemctl start mariadb.service</pre>
<p>Создадим базу и дадим права</p>
<pre>create database zabbix;
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'пароль';
grant all privileges on zabbix.* to 'zabbix'@'172.16.16.10' identified by 'пароль';
flush privileges;</pre>
<p>где 172.16.16.10 &#8212; ip адрес веб-сервера</p>
<p>Ставим zabbix-сервер</p>
<pre>rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-agent</pre>
<p>Указываем пароль базы</p>
<pre>vim /etc/zabbix/zabbix_server.conf
DBPassword=пароль</pre>
<p>Запускаем</p>
<pre>systemctl start zabbix-server.service
systemctl enable zabbix-server.service
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service</pre>
<p>Откроем порт mysql</p>
<pre>firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload</pre>
<p>Открываем порты 10051, 10050, snmp</p>
<pre>firewall-cmd --permanent --new-service=zabbix
firewall-cmd --service=zabbix --add-port=10051/tcp --permanent
firewall-cmd --service=zabbix --add-port=10050/tcp --permanent
firewall-cmd --add-service=zabbix --permanent
firewall-cmd --add-service=snmp --permanent
firewall-cmd --reload</pre>
<p>По мотивам:<br />
<a href="https://serveradmin.ru/ustanovka-i-nastroyka-nginx-php-fpm-php7-1-na-centos-7/" target="_blank" rel="noopener noreferrer">https://serveradmin.ru/ustanovka-i-nastroyka-nginx-php-fpm-php7-1-na-centos-7/</a><br />
<a href="https://serveradmin.ru/ustanovka-zabbix-3-na-nginx-php-fpm/" target="_blank" rel="noopener noreferrer">https://serveradmin.ru/ustanovka-zabbix-3-na-nginx-php-fpm/</a></p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/centos/zabbix-3-na-nginx-i-php-fpm-na-centos-7/">Zabbix 3 на nginx и php-fpm на centos 7</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://vanoc.ru/centos/zabbix-3-na-nginx-i-php-fpm-na-centos-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>добавляем в vim синтаксис для nginx</title>
		<link>https://vanoc.ru/linux/dobavlyaem-v-vim-sintaksis-dlya-nginx/</link>
				<comments>https://vanoc.ru/linux/dobavlyaem-v-vim-sintaksis-dlya-nginx/#respond</comments>
				<pubDate>Sun, 20 May 2018 11:53:50 +0000</pubDate>
		<dc:creator><![CDATA[vanoc]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">https://vanoc.ru/?p=2001</guid>
				<description><![CDATA[<p>Качам синтаксис mkdir -p ~/.vim/syntax/ wget http://www.vim.org/scripts/download_script.php?src_id=19394 -O ~/.vim/syntax/nginx.vim Указываем где находятся конфиги nginx vim ~/.vim/filetype.vim au BufRead,BufNewFile /etc/nginx/*,/etc/nginx/conf.d/*,/usr/local/etc/nginx/* if &#38;ft == '' &#124; setfiletype nginx &#124; endif</p>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/linux/dobavlyaem-v-vim-sintaksis-dlya-nginx/">добавляем в vim синтаксис для nginx</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Качам синтаксис</p>
<pre>mkdir -p ~/.vim/syntax/
wget http://www.vim.org/scripts/download_script.php?src_id=19394 -O ~/.vim/syntax/nginx.vim</pre>
<p>Указываем где находятся конфиги nginx</p>
<pre>vim ~/.vim/filetype.vim
au BufRead,BufNewFile /etc/nginx/*,/etc/nginx/conf.d/*,/usr/local/etc/nginx/* if &amp;ft == '' | setfiletype nginx | endif
</pre>
<p>Сообщение <a rel="nofollow" href="https://vanoc.ru/linux/dobavlyaem-v-vim-sintaksis-dlya-nginx/">добавляем в vim синтаксис для nginx</a> появились сначала на <a rel="nofollow" href="https://vanoc.ru">vanoc.ru</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://vanoc.ru/linux/dobavlyaem-v-vim-sintaksis-dlya-nginx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
	</channel>
</rss>
