<?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>Про веб-разработку и администрирование</title>
	<atom:link href="https://webdevil.ru/feed" rel="self" type="application/rss+xml" />
	<link>https://webdevil.ru</link>
	<description>Ещё один IT-блок</description>
	<lastBuildDate>Fri, 19 Aug 2022 14:23:07 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.6.4</generator>
	<item>
		<title>Как открыть доступ к БД Postgres из вне?</title>
		<link>https://webdevil.ru/post/2022/583-kak-otkryt-dostup-k-bd-postgres-iz-vne</link>
					<comments>https://webdevil.ru/post/2022/583-kak-otkryt-dostup-k-bd-postgres-iz-vne#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 19 Aug 2022 18:17:55 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Postgres]]></category>
		<guid isPermaLink="false">http://webdevil.ru/?p=583</guid>

					<description><![CDATA[По дефолту PostgreSQL доступна с локального хоста и, конечно, это правильно. Но для разработки бывает удобно подключить каким-нибудь DBeaver снаружи. Чтобы такой доступ, требуется два действия. 1) В файле postgresql.conf надо установить: listen_addresses = '*'  2) В файле pg_hba.conf надо изменить настройки на: host all all 0.0.0.0/0 md5host all all ::/0 md5 Если у вас активен фаервол, то [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>По дефолту PostgreSQL доступна с локального хоста и, конечно, это правильно. Но для разработки бывает удобно подключить каким-нибудь DBeaver снаружи.</p>



<span id="more-583"></span>



<p>Чтобы такой доступ, требуется два действия.</p>



<p>1) В файле <strong>postgresql.conf</strong> надо установить:</p>



<p><code>listen_addresses = '*' </code></p>



<p>2) В файле <strong>pg_hba.conf</strong> надо изменить настройки на:</p>



<p><code>host   all   all   0.0.0.0/0   md5<br>host   all   all        ::/0   md5</code></p>



<p>Если у вас активен фаервол, то надо ещё открыть порт <code>5432</code> (или иногда бывает <code>5433</code> для Postgres).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webdevil.ru/post/2022/583-kak-otkryt-dostup-k-bd-postgres-iz-vne/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Устанавливаем Apache Solr на CentOS 7</title>
		<link>https://webdevil.ru/post/2021/574-ustanavlivaem-apache-solr-na-centos-7</link>
					<comments>https://webdevil.ru/post/2021/574-ustanavlivaem-apache-solr-na-centos-7#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 24 Mar 2021 19:40:44 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">http://webdevil.ru/?p=574</guid>

					<description><![CDATA[Поисковый движок Apache Solr сейчас нужен даже для сайтов, где поиск хотя бы немного сложнее, чем по точному совпадению подстроки. Соответственно, Apache Solr порой приходится ставить на VPS. В частности, под управлением VestaCP. Памятку на эту тему — запишу для себя и вас. Устанавливаем джаву: Проверяем (должна быть 11-ая): Заносим в переменную окружения номер последней [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Поисковый движок Apache Solr сейчас нужен даже для сайтов, где поиск хотя бы немного сложнее, чем по точному совпадению подстроки. Соответственно, Apache Solr порой приходится ставить на VPS. В частности, под управлением VestaCP. Памятку на эту тему — запишу для себя и вас.</p>



<span id="more-574"></span>



<p>Устанавливаем джаву:</p>



<pre class="wp-block-code"><code><code>yum install -y java-11-openjdk</code></code></pre>



<p>Проверяем (должна быть 11-ая):</p>



<pre class="wp-block-code"><code><code>java -version</code></code></pre>



<p>Заносим в переменную окружения номер последней версии:</p>



<pre class="wp-block-code"><code><code>export LATEST_VER="8.8.1"</code></code></pre>



<p>Скачиваем (тут не случайно указано зеркало от РБК, потому что архив с основного зеркала у меня постоянно распаковывается с какими-то ошибками):</p>



<pre class="wp-block-code"><code><code>curl -O https://apache-mirror.rbc.ru/pub/apache/lucene/solr/${LATEST_VER}/solr-${LATEST_VER}.tgz</code></code></pre>



<p>Распаковываем:</p>



<pre class="wp-block-code"><code>tar xvf&nbsp;solr-${LATEST_VER}.tgz</code></pre>



<p>Заходим в каталог и устанавливаем:</p>



<pre class="wp-block-preformatted"><code>cd solr-${LATEST_VER}/bin/<br>sudo ./install_solr_service.sh ~/solr-${LATEST_VER}.tgz</code></pre>



<p>Открываем порт на фаерволе:</p>



<pre class="wp-block-code"><code><code>iptables -I INPUT -p tcp --dport&nbsp;8983&nbsp;-j ACCEPT</code></code></pre>



<p>И добавляем в файл <code>/etc/sysconfig/iptables</code> строчку:</p>



<pre class="wp-block-code"><code><code>-I INPUT -p tcp -m tcp --dport 8983 -j ACCEPT</code></code></pre>



<p>Запускаем solr и добавляем его в автозапуск:</p>



<pre class="wp-block-code"><code><code>service solr start</code>
<code>chkconfig solr on</code></code></pre>



<p>Теперь идём проверять по ссылке <code>http://localhost:8983</code> (вместо localhost поставьте IP-адрес вашего сервера). Если увидели дашборд Solr, то всё ок. Теперь надо настраивать коллекции, доступ и всякое такое.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webdevil.ru/post/2021/574-ustanavlivaem-apache-solr-na-centos-7/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как узнать, сколько свободного места на корневом разделе Linux</title>
		<link>https://webdevil.ru/post/2021/568-kak-uznat-skolko-svobodnogo-mesta-na-kornevom-razdele-linux</link>
					<comments>https://webdevil.ru/post/2021/568-kak-uznat-skolko-svobodnogo-mesta-na-kornevom-razdele-linux#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 20 Jan 2021 20:00:39 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">http://webdevil.ru/?p=568</guid>

					<description><![CDATA[Сколько свободно гигабайт в корневом разделе: stat -f --format='%f*%S/1024/1024/1024' / &#124; bc Сколько свободно мегабайт в корневом разделе: stat -f --format='%f*%S/1024/1024' / &#124; bc Ну, вы поняли. Команда stat -f / выдаёт информацию о свободном пространстве в блоках (%f), а чтобы превратить это в байты требуется умножить на стандартный размер блока (%S). Делим на 1024 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Сколько свободно гигабайт в корневом разделе:</p>



<pre class="wp-block-preformatted"><code>stat -f --format='%f*%S/1024/1024/1024' / | bc</code></pre>



<p>Сколько свободно мегабайт в корневом разделе:</p>



<pre class="wp-block-preformatted">stat -f --format='%f*%S/1024/1024' / | bc</pre>



<p>Ну, вы поняли.</p>



<p>Команда <code>stat -f /</code> выдаёт информацию о свободном пространстве в блоках (<code>%f</code>), а чтобы превратить это в байты требуется умножить на стандартный размер блока (<code>%S</code>). Делим на 1024 для получения КБ, потом МБ, потом ГБ.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webdevil.ru/post/2021/568-kak-uznat-skolko-svobodnogo-mesta-na-kornevom-razdele-linux/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как скопировать файлы с одного сервера на другой без посредников</title>
		<link>https://webdevil.ru/post/2019/549-scp-direct-copy-from-one-server-to-another</link>
					<comments>https://webdevil.ru/post/2019/549-scp-direct-copy-from-one-server-to-another#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 08 Nov 2019 11:52:55 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">http://webdevil.ru/?p=549</guid>

					<description><![CDATA[Типовая ситуация: надо с одного сервера перекинуть какие-то файлы на другой сервер (например, файлы сайта), но при этом не хочется их скачивать к себе локально, а желательно передать сразу напрямую между серверами. Для начала предоставим принимающему серверу доступ на отправляющий. На принимающем сервере из под рута делаем так: Если такого файла нет, значит на принимающем [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Типовая ситуация: надо с одного сервера перекинуть какие-то файлы на другой сервер (например, файлы сайта), но при этом не хочется их скачивать к себе локально, а желательно передать сразу напрямую между серверами.</p>



<span id="more-549"></span>



<p>Для начала предоставим принимающему серверу доступ на отправляющий. На принимающем сервере из под рута делаем так:</p>



<pre class="wp-block-code"><code>cat /root/.ssh/id_rsa.pub</code></pre>



<p>Если такого файла нет, значит на принимающем сервере не создана пара ключей. Можно создать одной командой, отвечая на все её вопросы вариантами по умолчанию (т.е. просто жмёте <code>Enter</code>  многократно):</p>



<pre class="wp-block-code"><code>ssh-keygen -r rsa</code></pre>



<p>Если файл есть (был ранее ли создан вами только что), то при просмотре файла командой <code>cat</code> видим в нём ключ — копируем его целиком.</p>



<p>Затем идём на отправляющий сервер и открываем там на редактирование файл (если файла нет, то и на отправляющем сервере делаем <code>ssh-keygen</code>):</p>



<pre class="wp-block-code"><code>nano /root/.ssh/authorized_keys</code></pre>



<p>Вставляем туда отдельной строкой скопированный ключ, сохраняем (в <code>nano</code> это можно сделать кнопкой <code>F2</code>). Теперь у нас открытый ключ принимающего сервера добавлен на отправляющий сервер в файл с разрешенными для входа ключами. Это значит, что мы можем зайти по <code>ssh</code> с принимающего сервера на отправляющий. Но нам не очень-то нужен <code>ssh</code> с консолью (мы не собираемся выполнять команды), а хватит <code>scp</code> — это программа для копирования файлов через ssh-протокол.</p>



<p>Поэтому на принимающем сервере делаем:</p>



<pre class="wp-block-code"><code>scp -rpC root@domain.tld:/var/www/site/ /root/</code></pre>



<p>Где <code>domain.tld</code> — это отправляющий сервер, а <code>/var/www/site/</code> — это тот каталог, который вы хотите оттуда скопировать. А скопируется он, соответственно, внутрь каталога <code>/root/</code> на принимающем сервере.</p>



<p>У <code>scp</code> мы использовали следующие параметры:</p>



<ul><li><code>-r</code> — рекурсивное копирование, т.е. со всеми вложенными каталогами и файлами, что нам собственно и надо при копировании целой директории</li><li><code>-p</code> — сохранять права и дату/время создания и модификации файлов</li><li><code>-C</code> — сжимать данные при передаче (нет смысла добавлять этот параметр, если вы копируете архив)</li></ul>



<p>Данный метод должен работать на большинстве дистрибутивов «из коробки». Проблемы могут быть только если пользователю <code>root</code> запрещен логин на отправляющем сервере. Но это уже отдельная история. Если что — спрашивайте в комментах.</p>



<p>Если вам не надо, чтобы сохранялся в будущем доступ с принимающего сервера на отправляющий, то надо, соответственно, убрать добавленный ключ из файла <code>/root/.ssh/authorized_keys</code></p>
]]></content:encoded>
					
					<wfw:commentRss>https://webdevil.ru/post/2019/549-scp-direct-copy-from-one-server-to-another/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Массовое изменение размера картинок на сервере</title>
		<link>https://webdevil.ru/post/2017/528-massovoe-izmenenie-razmera-kartinok-na-servere</link>
					<comments>https://webdevil.ru/post/2017/528-massovoe-izmenenie-razmera-kartinok-na-servere#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 04 Jul 2017 13:13:46 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">http://webdevil.ru/?p=528</guid>

					<description><![CDATA[Снова вернёмся к проблеме ограниченного дискового пространства на сервере. Чаще всего она возникает для VPS на SSD (SSD быстры, но дороги, поэтому хостеры, как правило, дают за те же деньги меньше диска, чем в случае с HDD). Также проблема с нехваткой диска часто возникает для серверов, где хостятся сайты с контентом, генерируемым пользователями (например, всяческие [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Снова вернёмся к проблеме ограниченного дискового пространства на сервере. Чаще всего она возникает для VPS на SSD (SSD быстры, но дороги, поэтому хостеры, как правило, дают за те же деньги меньше диска, чем в случае с HDD). Также проблема с нехваткой диска часто возникает для серверов, где хостятся сайты с контентом, генерируемым пользователями (например, всяческие форумы, где пользователи грузят и грузят картинки). В большинстве случаев сайт тяжелеет именно за счёт картинок. И, наконец, тяжелый сайт требует больше места для бэкапов. Начинать строгую диету для сайта лучше с <a href="/post/2016/452-jpegoptim">удаления и пережатия картинок без изменения разрешения</a>, ведь меняя размер вы всегда рискуете тем, что где-то на сайте из-за новых размеров картинки сломается вёрстка. Но иногда пережатия недостаточно. Что же ещё можно предпринять?<span id="more-528"></span></p>
<p>Очевидно, можно попробовать уменьшить разрешение картинок. И тут <strong>очень важно трогать только те картинки, которые относятся к контенту и не относятся к вёрстке</strong>. Поэтому заранее озаботьтесь изучением движка сайта, чтобы знать, куда складываются картинки, залитые пользователями. В помощь вам вот такой конвейер:</p>
<pre>du -sh /var/www/mysite/public/* | sort -hr</pre>
<p>, где <code>/var/www/mysite/public/</code> — корень исследуемого сайта. На выходе вы получите вес всех директорий сайта, отсортированный по убыванию, примерно так:</p>
<pre>897M	/var/www/mysite/public/sites
84M	/var/www/mysite/public/core
28M	/var/www/mysite/public/vendor
17M	/var/www/mysite/public/modules
...</pre>
<p>Очевидно, что много тяжелых картинок прячутся где-то в <code>/var/www/mysite/public/sites</code>, узнать где именно мы можем повторив поиск и сортировку уже для этого каталога:</p>
<pre>du -sh /var/www/mysite/public/sites/* | sort -hr</pre>
<p>Ну, вы поняли. Таким методом можно выяснить, где загружаемые картинки лежат в вашем движке. Примеры путей (относительных, от корня сайта) для некоторых популярных движков:</p>
<ul>
<li>Для Drupal (вплоть до новой 8-ой версии) — <code>./sites/default/files/</code></li>
<li>Для WordPress — <code>./wp-content/uploads/</code></li>
</ul>
<p>Дальше для установленного пути выполняем:</p>


<pre class="wp-block-code"><code>find /var/www/mysite/public/sites/default/files/ -type f \
\( -iname "*.jpg" -or -iname "*.jpeg" -or -iname "*.png" \) \
-print0 | xargs -0 mogrify -verbose -resize 1000x1000\></code></pre>



<p>Здесь <code>find</code> отвечает за поиск файлов с расширениями <code>*.png</code> или <code>*.jpeg</code> или <code>*.jpg</code>, а благодаря ключу <code>xargs</code> для каждого из найденных файлов выполняется <code>mogrify</code> (это аналог <code>convert</code> из ImageMagick, но <code>mogrify</code> перезаписывает изменения в тот же файл, в отличии от <code>convert</code>).</p>



<p>И особый интерес представляет ключ <code>-resize 1000x1000\&gt;</code> — его смысл в том, что мы будем изменять размер картинок, но только тех, которые больше, чем 1000 на 1000 пикселей. То есть картинку размеров 640 на 320 мы не тронем вообще, а картинку 1500 на 1200 пропорционально уменьшим (до 1000 на 800). Такая обработка, во-первых, не увеличит никакие картинки, во-вторых, выполнится быстрее.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webdevil.ru/post/2017/528-massovoe-izmenenie-razmera-kartinok-na-servere/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Настройка VPN-сервера с PPTP-подключением на CentOS 6</title>
		<link>https://webdevil.ru/post/2017/503-vpn-pptp-centos-6</link>
					<comments>https://webdevil.ru/post/2017/503-vpn-pptp-centos-6#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 22 May 2017 22:03:15 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">http://webdevil.ru/?p=503</guid>

					<description><![CDATA[В контексте последних событий, типа запрета ВК, ОК и Яндекса в/на Украине, думаю, всё большее количество людей захотят использовать VPN. Можно купить у какого-нибудь международного провайдера готовый доступ, но также можно и настроить VPN на своём VPS, ведь цены на виртуальные серверы в России стартуют от 150 руб. в месяц. О том, как по-быстрому настроить [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>В контексте последних событий, типа запрета ВК, ОК и Яндекса в/на Украине, думаю, всё большее количество людей захотят использовать VPN. Можно купить у какого-нибудь международного провайдера готовый доступ, но также можно и настроить VPN на своём VPS, ведь цены на виртуальные серверы в России стартуют от 150 руб. в месяц. О том, как по-быстрому настроить VPN на CentOS я далее и расскажу. Статья будет для новичков, поэтому всё задумано максимально просто, включая сам PPTP-протокол (к которому могут быть вопросы в плане безопасности, но вряд ли могут быть вопросы в плане простоты настройки подключения на клиенте под Windows).<span id="more-503"></span></p>
<p>Ставим необходимые пакеты:</p>
<pre>yum -y install pptpd curl bind-utils</pre>
<p>Строго говоря, по-настоящему необходим вам будет только <code>pptpd</code>, остальные программы далее для удобства используются (т.е. если вы новичок, то вам перечисленные пакеты помогут узнать сетевой интерфейс и IP-адрес сервера).</p>
<p>Узнаём свой внешний IP-адрес:</p>
<pre>curl ifconfig.me</pre>
<p>Узнаём название сетевого интерфейса в системе, к которому привязан этот адрес:</p>
<pre>route | grep '^default' | grep -o '[^ ]*$'</pre>
<p>Для простоты будем считать, что адрес у нас вышел 185.125.1.2, а интерфейс eth0</p>
<p>Редактируем файл <code>/etc/pptpd.conf</code>, добавляем в его конец:</p>
<pre>localip <strong>185.125.1.2</strong>
remoteip 10.0.0.100-200</pre>
<p>Первая строка здесь указывает IP-адрес на котором будет работать PPTP-сервер, этот адрес мы узнавали в начале инструкции. Вторая строка здесь указывает диапазон IP из которого будут выдаваться адреса, подключающимся клиентам.</p>
<p>Далее редактируем <code>/etc/ppp/chap-secrets</code>, добавляем туда строки с аккаунтами пользователей (каждый аккаунт на отдельной строке). Строка через пробелы или табуляцию содержит следующие данные:</p>
<ul>
<li>Имя пользователя</li>
<li>Имя сервера (в нашем случае pptpd)</li>
<li>Пароль пользователя</li>
<li>Набор IP-адресов, с которых клиенту разрешено подключаться (в нашем случае * разрешает подключаться с любого IP)</li>
</ul>
<p>В общем, ваш файл может выглядеть примерно так:</p>
<pre># Secrets for authentication using CHAP
# client server secret IP addresses
antoshka pptpd ytfiHGmG9Fj *
natashka pptpd mHiufgaJh7v *</pre>
<p>Теперь редактируем файл <code>/etc/ppp/options</code>, там указываем:</p>
<pre>ms-dns 77.88.8.8
ms-dns 77.88.8.1
#ms-dns 8.8.8.8
#ms-dns 8.8.4.4
lock
name pptpd
require-mschap-v2
require-mppe-128</pre>
<p>В примере на первых строках используются DNS-серверы Яндекса, а ниже решетками закомментированы DNS-серверы Google. Какие использовать вам — решайте сами.</p>
<p>Запускаем PPTP-сервер:</p>
<pre>service pptpd start</pre>
<p>Проверяем командой <code>netstat -alpn | grep :1723</code>, что сервер запустился и ждёт соединений. Если всё идёт хорошо, то вы должны увидеть примерно такой вывода:</p>
<pre># netstat -alpn | grep :1723
tcp  0  0 0.0.0.0:1723  0.0.0.0:*  LISTEN  8291/pptpd</pre>
<p>Редактируем файл <code>/etc/sysctl.conf</code>, устанавливаем там:</p>
<pre>net.ipv4.ip_forward = 1</pre>
<p>И запускаем <code>sysctl -p</code> для применения изменений.</p>
<p>Добавляем правило для NAT в фаервол (здесь мы будем использовать имя сетевого интерфейса, которое узнавали в начале статьи):</p>
<pre>service iptables start
iptables -t nat -A POSTROUTING -o <strong>eth0</strong> -j MASQUERADE &amp;&amp; iptables-save
service iptables save
chkconfig iptables on</pre>
<p>Перезапускаем сервис:</p>
<pre>service pptpd restart-kill &amp;&amp; service pptpd start</pre>
<p>Кстати, именно при таком перезапуске (с использованием <code>restart-kill</code>) будут отключены все текущие клиенты.</p>
<p>Добавляем его в автозапуск:</p>
<pre>chkconfig pptpd on</pre>
<p>Теперь, чтобы подключиться к VPN-серверу в Windows, надо создать новое подключение и выбрать:<br />
<img loading="lazy" class="size-full wp-image-504" src="/wp-content/uploads/2017/05/vpn-connection-create.png" alt="" width="652" height="564" srcset="https://webdevil.ru/wp-content/uploads/2017/05/vpn-connection-create.png 652w, https://webdevil.ru/wp-content/uploads/2017/05/vpn-connection-create-300x260.png 300w" sizes="(max-width: 652px) 100vw, 652px" /></p>
<p>Далее указать адрес сервера (который в нашем примере <code>185.125.1.2</code>), логин и пароль пользователя (мы их прописывали <code>/etc/ppp/chap-secrets</code>). Пока подключение в Windows будет запущено — весь трафик будет идти через него (включая, разумеется, трафик браузера).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webdevil.ru/post/2017/503-vpn-pptp-centos-6/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Устанавливаем поисковый движок Sphinx на CentOS 6</title>
		<link>https://webdevil.ru/post/2017/492-centos-6-sphinx-install</link>
					<comments>https://webdevil.ru/post/2017/492-centos-6-sphinx-install#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 01 May 2017 21:42:54 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">http://webdevil.ru/?p=492</guid>

					<description><![CDATA[Sphinx — это чудовищно быстрый поисковый движок, который можно использовать для индексации самых разных данных, но, в первую очередь, он конечно пригождается для сайтов. В штатном репозитории Sphinx отсутствует, поэтому придётся скачать пакет у разработчиков поискового движка (благо они поддерживают ветки для RedHat/CentOS 6 и 7). Но сначала ставим зависимости: yum -y install postgresql-libs unixODBC [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Sphinx — это чудовищно быстрый поисковый движок, который можно использовать для индексации самых разных данных, но, в первую очередь, он конечно пригождается для сайтов. В штатном репозитории Sphinx отсутствует, поэтому придётся скачать пакет у разработчиков поискового движка (благо они поддерживают ветки для RedHat/CentOS 6 и 7). <span id="more-492"></span></p>
<p>Но сначала ставим зависимости:</p>
<pre>yum -y install postgresql-libs unixODBC</pre>
<p>Затем идём сюда http://sphinxsearch.com/downloads/release/ и смотрим, какая наиболее свежая версия доступна для CentOS 6. На момент написания статьи — это 2.2.11-release. Проходите по ссылке download и далее сможете скопировать прямую ссылку на rpm-пакет по ссылке click here:</p>
<p><img src="http://webdevil.ru/wp-content/uploads/2017/05/sphinx-direct-link.png" alt="" width="100%" class="alignright size-full wp-image-493" srcset="https://webdevil.ru/wp-content/uploads/2017/05/sphinx-direct-link.png 680w, https://webdevil.ru/wp-content/uploads/2017/05/sphinx-direct-link-300x79.png 300w" sizes="(max-width: 680px) 100vw, 680px" /></p>
<p>В общем, вы ребята взрослые, поэтому прямую ссылку на свежайший пакет, думаю, найти сумеете, поэтому давайте лучше с этой ссылки скорее пакет установим:</p>
<pre>rpm -Uvh http://sphinxsearch.com/files/sphinx-2.2.11-2.rhel6.x86_64.rpm</pre>
<p>Для хранения бинарного лога Sphinx использует по умолчанию директорию <code>/var/data</code>, можно это изменить в настройках (<code>binlog_path = /var/data</code>), но можно и создать для него директорию:</p>
<pre>mkdir /var/data
chown -R sphinx:sphinx /var/data</pre>
<p>Теперь всё готово. Запускаем сервис:</p>
<pre>service searchd start</pre>
<p>Добавляем автозапуск сервиса:</p>
<pre>chkconfig searchd on</pre>
<p>Строим индекс:</p>
<pre>/usr/bin/indexer -c /etc/sphinx/sphinx.conf --rotate --all</pre>
<p>Вообще обновление индекса лучше, конечно, добавить в планировщик (<code>crontab -e -u sphinx</code>), сделав запуск, например, раз в 5 минут:</p>
<pre>*/5 * * * * /usr/bin/indexer -c /etc/sphinx/sphinx.conf --rotate --all</pre>
<p>Для магазина с несколькими тысячами товаров индекс строится за доли секунды (если точнее, то за 0,2-0,3 с на VPS с 4 ядрами), поэтому можно хоть каждую минуту запускать переиндексацию. Если у вас реально большие объёмы данных для индексации, то можно задуматься о дельта-индексах (чтобы перестраивать не весь индекс целиком, а учитывать только измененные данные), но это уже совсем другая история.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webdevil.ru/post/2017/492-centos-6-sphinx-install/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Доступно и понятно про SPF</title>
		<link>https://webdevil.ru/post/2017/488-what-is-spf</link>
					<comments>https://webdevil.ru/post/2017/488-what-is-spf#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 09 Jan 2017 12:05:42 +0000</pubDate>
				<category><![CDATA[Новости]]></category>
		<guid isPermaLink="false">http://webdevil.ru/?p=488</guid>

					<description><![CDATA[Хотел написать про SPF сам, поскольку в моей практике всё чаще проблема «к нам не приходят письма от сайта» оказывается связанной именно с неправильной настройкой SPF. Но оказалось, что про это уже есть подробная и доступная статья, поэтому рекомендую читать это: https://www.freedev.asia/post/email/no-spam-spf P.S. Всех посетителей поздравляю с наступившим новым годом 🙂]]></description>
										<content:encoded><![CDATA[<p>Хотел написать про SPF сам, поскольку в моей практике всё чаще проблема «к нам не приходят письма от сайта» оказывается связанной именно с неправильной настройкой SPF. Но оказалось, что про это уже есть подробная и доступная статья, поэтому рекомендую читать это: <a href="https://www.freedev.asia/post/email/no-spam-spf">https://www.freedev.asia/post/email/no-spam-spf</a></p>
<p>P.S. Всех посетителей поздравляю с наступившим новым годом <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://webdevil.ru/post/2017/488-what-is-spf/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как установить Composer в CentOS 6</title>
		<link>https://webdevil.ru/post/2016/477-install-composer-in-centos-6</link>
					<comments>https://webdevil.ru/post/2016/477-install-composer-in-centos-6#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 19 Dec 2016 11:55:45 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">http://webdevil.ru/?p=477</guid>

					<description><![CDATA[Composer, по заявлению его создателей, нормально работает начиная с PHP версии 5.3.2. В родных репозиториях CentOS 6 сейчас живёт PHP 5.3.3. Поэтому Composer поставить можно, но в процессе установки вы получите такое предупреждение&#8230; Your PHP (5.3.3) is quite old, upgrading to PHP 5.3.4 or higher is recommended. Composer works with 5.3.2+ for most people, but [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Composer, по заявлению его создателей, нормально работает начиная с PHP версии 5.3.2. В родных репозиториях CentOS 6 сейчас живёт PHP 5.3.3. Поэтому Composer поставить <strong>можно</strong>, но в процессе установки вы получите такое предупреждение&hellip;<span id="more-477"></span></p>
<p><code>Your PHP (5.3.3) is quite old, upgrading to PHP 5.3.4 or higher is recommended.<br />
Composer works with 5.3.2+ for most people, but there might be edge case issues.</code></p>
<p>На работоспособность оно не влияет. Cтавим Composer так:</p>
<p><code>cd /tmp<br />
curl -sS https://getcomposer.org/installer | php<br />
mv composer.phar /usr/local/bin/composer</code></p>
<p>C другой стороны, если вы добрались до такого инструмента, как Composer, то, скорее всего, вам будет богомерзко сидеть на старом PHP, поэтому можете сначала <a href="/post/2016/393-install-php-5-6-on-centos-6-x">обновить PHP</a>, а затем ставить Composer. Тогда и предупреждения не будет.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webdevil.ru/post/2016/477-install-composer-in-centos-6/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Отключение кеширования для отдельных картинок</title>
		<link>https://webdevil.ru/post/2016/472-disbale-expires-for-some-images-in-nginx</link>
					<comments>https://webdevil.ru/post/2016/472-disbale-expires-for-some-images-in-nginx#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 23 Nov 2016 20:06:17 +0000</pubDate>
				<category><![CDATA[nginx]]></category>
		<guid isPermaLink="false">http://webdevil.ru/?p=472</guid>

					<description><![CDATA[Известно, что всякие статические картинки надо кешировать в браузере. Тогда сайт у посетителей, уже побывавший недавно у вас в гостях, будет работать быстрее (как минимум, не будут повторно грузится картинки, использованные в дизайне сайта и тому подобные). Но бывает и обратная ситуация — некоторые картинки нельзя кешировать, потому что в них содержится часто обновляема информация [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Известно, что всякие статические картинки надо кешировать в браузере. Тогда сайт у посетителей, уже побывавший недавно у вас в гостях, будет работать быстрее (как минимум, не будут повторно грузится картинки, использованные в дизайне сайта и тому подобные). Но бывает и обратная ситуация — некоторые картинки нельзя кешировать, потому что в них содержится часто обновляема информация (например, такое часто бывает с какими-нибудь графиками). <span id="more-472"></span></p>
<p>Допустим, у нас nginx выступает в роли реверс-прокси перед Апачем. Хотя для ситуации, когда nginx отдаёт запросы на fastcgi, проблема может возникнуть та же и действия по её решению будут аналогичными.</p>
<p>Обычно для того, чтобы nginx сам отдавал статику (картинки, стили, скрипты, документы), не дергая Апач, в конфигурацию nginx добавляют примерно такой кусок:</p>
<pre>location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|pdf|doc|xls)$ {
  root /var/www/mysite/public_html/;
  expires 7d;
}</pre>
<p>Нас тут более всего волнует <code>expires 7d</code>, ведь он прикажет браузеру не обновлять картинки в течение недели. Все картинки. Включая нашим злободневные графики.</p>
<p>И тут внимательный читатель уже понял, что можно написать location с исключениями, где поставить более короткий expires. Это верно. Но бывают более запутанные ситуации, когда длинный expires установлен не nginx`ом, а движком сайта или Апачем. </p>
<p>Тогда нам надо просто добавить location, в котором мы заголовок модифицируем принудительно. Чтобы получилось примерно так:</p>
<pre>location ^~ /sites/default/files/graph/ {
  add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
  add_header Pragma "no-cache";
  proxy_pass http://127.0.0.1:8888;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Real-IP $remote_addr;
}

location / {
  proxy_pass http://127.0.0.1:8888;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Real-IP $remote_addr;
}</pre>
<p>Первые пару строк первого location как раз допишут такие заголовки, чтоб картинки по урлам */sites/default/files/graph/&#8230; не закешировались.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webdevil.ru/post/2016/472-disbale-expires-for-some-images-in-nginx/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
