<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.aprelteam.by/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_Linux_Web_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0</id>
	<title>Руководство по настройке Linux Web сервера - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.aprelteam.by/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_Linux_Web_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0"/>
	<link rel="alternate" type="text/html" href="https://wiki.aprelteam.by/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_Linux_Web_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0&amp;action=history"/>
	<updated>2026-08-01T15:55:15Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.6</generator>
	<entry>
		<id>https://wiki.aprelteam.by/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_Linux_Web_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0&amp;diff=1856&amp;oldid=prev</id>
		<title>APRELKUN: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://wiki.aprelteam.by/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_Linux_Web_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0&amp;diff=1856&amp;oldid=prev"/>
		<updated>2023-06-10T02:43:59Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 05:43, 10 июня 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>APRELKUN</name></author>
	</entry>
	<entry>
		<id>https://wiki.aprelteam.by/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_Linux_Web_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0&amp;diff=1855&amp;oldid=prev</id>
		<title>ru&gt;Bot11: Правки Bot11 (обс) откачены к версии Lllkstlll</title>
		<link rel="alternate" type="text/html" href="https://wiki.aprelteam.by/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_Linux_Web_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0&amp;diff=1855&amp;oldid=prev"/>
		<updated>2023-02-08T20:59:18Z</updated>

		<summary type="html">&lt;p&gt;Правки &lt;a href=&quot;/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Bot11&quot; title=&quot;Служебная:Вклад/Bot11&quot;&gt;Bot11&lt;/a&gt; (&lt;a href=&quot;/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Bot11&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Обсуждение участника:Bot11 (страница не существует)&quot;&gt;обс&lt;/a&gt;) откачены к версии Lllkstlll&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Итак, я решил обобщить свой опыт по развёртыванию веб-сервера на основе [[Linux]], который мог бы работать в сети [[I2P]]. В принципе ничего необыкновенного или сверхъестественного, но задокументировать смысл имеет. В принципе данный набор позволяет серверу выносить весьма серьёзные нагрузки. Ресурсоёмкость описанной системы — 200—220 Mb в оперативной памяти, без использования swap. На планке оперативки в 512 Мб (которая стоит в сервере сейчас) остаётся ещё очень неплохой запас по ресурсам (в отличие от Windows 2003, которая кушала файл подкачки неимоверно, и неимоверно же тормозила).&lt;br /&gt;
&lt;br /&gt;
Часть руководства почерпнута [http://www.itpad.ru/?p=1960 отсюда], часть является специфичной для I2P.&lt;br /&gt;
&lt;br /&gt;
== Подготовка ==&lt;br /&gt;
Описываемый сервер развёрнут на следующей платформе:&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ОС:&amp;amp;nbsp;Linux, CentOS 5.6&lt;br /&gt;
* Веб-сервер:&amp;amp;nbsp;nginx &amp;lt;strike&amp;gt;1.0.0&amp;lt;/strike&amp;gt; 1.0.5&lt;br /&gt;
* MySQL: 5+,&lt;br /&gt;
* PHP в режиме FastCGI. Посредников и иных backend’ов типа Apache — нет. Дополнительно установлен XCache с кэшированием и оптимизацией в память.&lt;br /&gt;
* I2P Router 0.8.5&lt;br /&gt;
* Аппаратная часть всё та же:&amp;amp;nbsp;512 ОЗУ, 2,4 ГГц проц Pentium, HDD&amp;amp;nbsp;160 Gb.&lt;br /&gt;
&lt;br /&gt;
Для начала, собственно, требуется установить CentOS. На чисто серверной машине графический интерфейс не нужен, потому по умолчанию пакеты типа KDE&amp;amp;nbsp;||&amp;amp;nbsp;Gnome не ставим. Плюс вообще можно систему облегчить, пробежавшись по списку пакетов при установке. Очень рекомендую создать дополнительную файловую систему и монтировать её как /www — в ней мы будем хранить все ресурсы веб.&amp;amp;nbsp; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка сервера ==&lt;br /&gt;
&lt;br /&gt;
=== Установка и настройка Nginx ===&lt;br /&gt;
Есть куча любителей поставить софт на сервер/рабочую машинку из исходников. Хозяин барин, конечно, но я этого делать не рекомендую. Во-первых, усложняется обновление софта. Каждый раз придётся ручками пересобирать всё. В случае с установкой из репозитория — всё проще: yum update.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы установить nginx так, надо добавить репозиторий CentALT. Сделать это можно выполнив команду с правами root:&lt;br /&gt;
&lt;br /&gt;
Для 32-разрядных систем:&lt;br /&gt;
&amp;lt;pre&amp;gt;rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-6.noarch.rpm &amp;lt;/pre&amp;gt;&lt;br /&gt;
Для 64-разрядных систем:&lt;br /&gt;
&amp;lt;pre&amp;gt;rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-6.noarch.rpm&amp;lt;/pre&amp;gt;&lt;br /&gt;
Если команда yum search nginx после этого ничего не нашла, то надо проверить файл в директории /etc/yum.repos.d/ с именем centalt.repo:&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# ls -la /etc/yum.repos.d &amp;lt;/pre&amp;gt;&lt;br /&gt;
Если его там нет — надо создать:&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# vim /etc/yum.repos.d/centalt.repo &amp;lt;/pre&amp;gt;&lt;br /&gt;
И добавить туда строки:&lt;br /&gt;
&amp;lt;pre&amp;gt;[CentALT] &lt;br /&gt;
name=CentALT Packages for Enterprise Linux 5 - $basearch&lt;br /&gt;
baseurl=http://centos.alt.ru/repository/centos/5/$basearch/&lt;br /&gt;
enabled=1&lt;br /&gt;
gpgcheck=0 &amp;lt;/pre&amp;gt;&lt;br /&gt;
(кто не знает как работать в vim, сначала надо нажать клавишу i, чтобы войти в режим редактирования. Когда вы внесли изменения — {{Клавиша|Esc}}, а затем последовательно наберите&amp;amp;nbsp;:w!&amp;amp;nbsp; {{Клавиша|Enter}},&amp;amp;nbsp;:q! {{Клавиша|Enter}}) Но первый способ весьма предпочитительнее — если он не сработал, значит что-то не так.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Всё. устанавливайте nginx:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# yum install nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Настроим автозапуск:&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;chkconfig –level 35 nginx on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Управление Nginx производится путём подачи сигналов типа: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# service nginx start // Старт сервера&lt;br /&gt;
[root@host]# service nginx stop  // Стоп&lt;br /&gt;
[root@host]# service nginx restart // перезапуск&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Конфигурирование виртуальных хостов и реврайтов ====&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f00;&amp;quot;&amp;gt;Конфиг внизу — устарел. Новая версия вики с ним уже не работает, так как там появился злобный ResourceLoader. Речь идёт только о движке MediaWiki — в общем случае данный конфиг работает.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы долго не описывать сам процесс, приведу пример конфига этой вики. Как правило конфиг виртуальных хостов лежит в&amp;amp;nbsp;/etc/nginx/conf.d/virtual.conf Кстати, почитать по поводу конфига nginx можно, например, [http://sysoev.ru/nginx/docs/ тут].&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По образу и подобию можно создавать произвольное количество виртуальных хостов для ваших проектов. &amp;#039;&amp;#039;&amp;#039;Кстати — {PATH_TO_YOU_WWW_DIR} — надо заменить на реальный путь к директории, где находится корневой каталог вашего приложения. &amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;################################################################################################&lt;br /&gt;
## Тащемта, Rus.I2P сайт.&lt;br /&gt;
################################################################################################&lt;br /&gt;
server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    #listen rus.i2p:80;&lt;br /&gt;
    server_name rus.i2p alias www.rus.i2p;&lt;br /&gt;
    charset utf-8;&lt;br /&gt;
&lt;br /&gt;
    location / {&lt;br /&gt;
        root {PATH_TO_YOU_WWW_DIR}/rusi2p/htdocs;&lt;br /&gt;
        index index.html index.php;&lt;br /&gt;
        rewrite ^/wiki/([^?]*)(?:\?(.*))? /wiki/index.php?title=$1&amp;amp;amp;$2;&lt;br /&gt;
        allow 127.0.0.1;     # Разрешаем коннект только с локалхоста.&lt;br /&gt;
        deny all;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    location /skins {&lt;br /&gt;
        root {PATH_TO_YOU_WWW_DIR}/rusi2p/htdocs;&lt;br /&gt;
    }&lt;br /&gt;
    location /images {&lt;br /&gt;
        root {PATH_TO_YOU_WWW_DIR}/rusi2p/htdocs;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    error_page 404 /404.html;&lt;br /&gt;
&lt;br /&gt;
    location = /404.html {&lt;br /&gt;
            root {PATH_TO_YOU_WWW_DIR}/rusi2p/htdocs;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #&amp;amp;nbsp;Настройки для связки с PHP-FastCGI&lt;br /&gt;
    location ~ \.php$ {&lt;br /&gt;
            root                {PATH_TO_YOU_WWW_DIR}/rusi2p/htdocs;&lt;br /&gt;
            fastcgi_pass        127.0.0.1:9000;&lt;br /&gt;
            fastcgi_index       index.php;&lt;br /&gt;
            fastcgi_param       SCRIPT_FILENAME {PATH_TO_YOU_WWW_DIR}/rusi2p/htdocs/index.php$fastcgi_script_name;&lt;br /&gt;
            include             fastcgi_params;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # deny access to .htaccess files, if Apache&amp;#039;s document root&lt;br /&gt;
    # concurs with nginx&amp;#039;s one&lt;br /&gt;
&lt;br /&gt;
    location ~ /\.ht {&lt;br /&gt;
        deny  all;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
##==============================================================================================&lt;br /&gt;
## / END OF Rus.I2P&lt;br /&gt;
##==============================================================================================&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
В&amp;amp;nbsp;целом, если вам не хочется отказываться от любимого Apache, можно настраивать и на основе него, никаких проблем (если только не дорожите каждым мегабайтом оперативки, но то уже случай тяжёлый и требующий индивидуального подхода) — разницы во «фронте» никакой не будет. Вряд ли на вашем сервере будет такая нагрузка, что Apache с ней не справится (скорее загнётся i2p роутер,&amp;amp;nbsp;что, впрочем, тоже вряд ли). Тем более, что конфигурирование Apache +&amp;amp;nbsp;PHP&amp;amp;nbsp;Module — ощутимо более просто и распространённо. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка и настройка MySQL ===&lt;br /&gt;
Собственно, нет ничего проще:&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# yum install mysql mysql-server mysql-devel&lt;br /&gt;
[root@host]# chkconfig –level 35 mysqld on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Единственное, потом надо задать рутовый пароль, естественно, и создать требуемые базы. Кроме того, никто не мешает вам выбрать другую БД, например PostgreSQL или Oracle — при этом не надо ложного снобизма. PostgreSQL|Oracle имеет смысл использовать тогда, когда вы планируете задействовать его мощнейший встроенный язык хранимых процедур — PL/SQL. Если нет, и вы просто планируете хранить там данные — да используйте MySQL — он обеспечивает с лихвой все обычные потребности среднего веб-проекта.&lt;br /&gt;
&lt;br /&gt;
=== Установка и настройка PHP — FastCGI + XCache ===&lt;br /&gt;
Для начала требуется поставить сам PHP с модулями. В список модулей добавляем всё то, что вам нужно. Данный пример невозбранно содран из интернетов (с http://www.itpad.ru/?p=1960). По нему и rus.i2p настраивался. Какие именно модули там ставились точно я не помню, да это и не важно.&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# yum install php php-pear php-common php-gd php-devel php-mbstring &lt;br /&gt;
php-pear-Mail php-cli php-imap php-snmp php-pdo php-xml &lt;br /&gt;
php-ldap php-pear-Net-SMTP php-mysql&lt;br /&gt;
&lt;br /&gt;
[root@host]# yum install spawn-fcgi &amp;lt;/pre&amp;gt;&lt;br /&gt;
Затем в /etc/init.d/ создаём стартовый скрипт модуля:&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# vim /etc/init.d/php_cgi &amp;lt;/pre&amp;gt;&lt;br /&gt;
В него добавим следующее:&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
. /etc/rc.d/init.d/functions&lt;br /&gt;
&lt;br /&gt;
. /etc/sysconfig/network&lt;br /&gt;
&lt;br /&gt;
[ &amp;quot;$NETWORKING&amp;quot; = &amp;quot;no&amp;quot; ] &amp;amp;amp;&amp;amp;amp; exit 0&lt;br /&gt;
&lt;br /&gt;
spawnfcgi=&amp;quot;/usr/bin/spawn-fcgi&amp;quot;&lt;br /&gt;
php_cgi=&amp;quot;/usr/bin/php-cgi&amp;quot;&lt;br /&gt;
prog=$(basename $php_cgi)&lt;br /&gt;
server_ip=127.0.0.1&lt;br /&gt;
server_port=9000&lt;br /&gt;
server_user=nginx&lt;br /&gt;
server_group=nginx&lt;br /&gt;
server_childs=5&lt;br /&gt;
pidfile=&amp;quot;/var/run/php_cgi.pid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[ -f /etc/sysconfig/phpfastcgi ] &amp;amp;amp;&amp;amp;amp; . /etc/sysconfig/phpfastcgi&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
[ -x $php_cgi ] || exit 1&lt;br /&gt;
[ -x $spawnfcgi ] || exit 2&lt;br /&gt;
echo -n $&amp;quot;Starting $prog: &amp;quot;&lt;br /&gt;
daemon $spawnfcgi -a ${server_ip} -p ${server_port} -u ${server_user} &lt;br /&gt;
-g ${server_group} -P ${pidfile} -C ${server_childs} -f ${php_cgi}&lt;br /&gt;
retval=$?&lt;br /&gt;
echo&lt;br /&gt;
return $retval&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
echo -n $&amp;quot;Stopping $prog: &amp;quot;&lt;br /&gt;
killproc -p ${pidfile} $prog -QUIT&lt;br /&gt;
retval=$?&lt;br /&gt;
echo&lt;br /&gt;
[ -f ${pidfile} ] &amp;amp;amp;&amp;amp;amp; /bin/rm -f ${pidfile}&lt;br /&gt;
return $retval&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
restart(){&lt;br /&gt;
stop&lt;br /&gt;
sleep 2&lt;br /&gt;
start&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
rh_status(){&lt;br /&gt;
status -p ${pidfile} $prog&lt;br /&gt;
}&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
start)&lt;br /&gt;
start;;&lt;br /&gt;
stop)&lt;br /&gt;
stop;;&lt;br /&gt;
restart)&lt;br /&gt;
restart;;&lt;br /&gt;
status)&lt;br /&gt;
rh_status;;&lt;br /&gt;
*)&lt;br /&gt;
echo $&amp;quot;Usage: $0 {start|stop|restart|status}&amp;quot;&lt;br /&gt;
exit 3&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Затем, добавляем скрипту право на запуск и добавляем в автозагрузку&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# chmod a+x /etc/init.d/php_cgi &lt;br /&gt;
[root@host]# chkconfig –level 35 php_cgi on &amp;lt;/pre&amp;gt;&lt;br /&gt;
Запускаем. В норме должен подняться php-fastCGI сервис.&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# service php_cgi start &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Проверим, работает ли:&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host ~]# netstat -tlnp | grep&amp;amp;nbsp;:9000&lt;br /&gt;
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      2590/php-cgi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Собственно,&amp;amp;nbsp;если вы внимательно посмотрите выше на конфиг nginx-а,&amp;amp;nbsp;то увидите, где в настройке сервера указывается, что работать надо с php-FastCGI. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== XCache ====&lt;br /&gt;
Тащемта, просто неиллюзорно:&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# yum install php-xcache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Затем, правим (или создаём, если не существует) файл в директории /etc/php.d/:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# vim /etc/php.d/xcache.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
И&amp;amp;nbsp;устанавливаем следующие настройки (или отредактируйте по желанию, с условием понимания, что вы делаете):&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[xcache-common]&lt;br /&gt;
zend_extension = /usr/lib/php/modules/xcache.so&lt;br /&gt;
[xcache.admin]&lt;br /&gt;
xcache.admin.auth = On&lt;br /&gt;
xcache.admin.user = &amp;quot;admin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; xcache.admin.pass should be md5($your_password), or empty to disable administration.&lt;br /&gt;
xcache.admin.pass = &amp;quot;&amp;amp;lt;md5_password_hash&amp;amp;gt;&amp;quot;&lt;br /&gt;
xcache.test =       Off&lt;br /&gt;
;xcache.coredump_directory = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[xcache]&lt;br /&gt;
xcache.cacher =               On&lt;br /&gt;
xcache.size  =              100M&lt;br /&gt;
xcache.count =                 1&lt;br /&gt;
xcache.slots =                8K&lt;br /&gt;
xcache.ttl   =              3600&lt;br /&gt;
xcache.gc_interval =         300&lt;br /&gt;
&lt;br /&gt;
; Same as aboves but for variable cache&lt;br /&gt;
; If you don&amp;#039;t know for sure that you need this, you probably don&amp;#039;t&lt;br /&gt;
xcache.var_size  =            4M&lt;br /&gt;
xcache.var_count =             1&lt;br /&gt;
xcache.var_slots =            8K&lt;br /&gt;
xcache.var_ttl   =          3600&lt;br /&gt;
xcache.var_maxttl   =       3600&lt;br /&gt;
xcache.var_gc_interval =     300&lt;br /&gt;
&lt;br /&gt;
; N/A for /dev/zero&lt;br /&gt;
xcache.readonly_protection = Off&lt;br /&gt;
&lt;br /&gt;
; Use something like &amp;quot;/tmp/xcache&amp;quot; if you want to turn on ReadonlyProtection&lt;br /&gt;
; 2 group of php won&amp;#039;t share the same /tmp/xcache&lt;br /&gt;
xcache.mmap_path =    &amp;quot;/dev/zero&amp;quot;&lt;br /&gt;
&lt;br /&gt;
xcache.optimizer =           On&lt;br /&gt;
&lt;br /&gt;
xcache.coverager =           Off&lt;br /&gt;
;xcache.coveragedump_directory = &amp;quot;/tmp/pcov&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
После чего перезапускаем php (не nginx!)&amp;amp;nbsp;:)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# /etc/init.d/php_cgi restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Вообще, имеет смысл сделать какой-нить файл типа phpinfo.php и в нём смотреть — подцепились ли дополнения, или не подцепились. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Установка и настройка I2P роутера ===&lt;br /&gt;
Для начала надо установить java. В принципе &amp;#039;&amp;#039;у меня &amp;#039;&amp;#039;работает и на openjdk 1.6.0_20. Но если у вас не так — поставьте Java от Sun. Чтобы не трахаться с поиском, установкой и настройкой — проверьте сначала, может у вас оно есть?&amp;amp;nbsp;Выполните в консоли следующую команду. Если у вас отобразится то же самое, что у меня или близкое к тому — забиваем большой и толстый и идём ставить I2P. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host ~]# java -version&lt;br /&gt;
java version &amp;quot;1.6.0_20&amp;quot;&lt;br /&gt;
OpenJDK Runtime Environment (IcedTea6 1.9.8) (rhel-1.22.1.9.8.el5_6-i386)&lt;br /&gt;
OpenJDK Client VM (build 19.0-b09, mixed mode)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ставится это тоже просто, например около так (выберите пакет, например -devel пакет не обязателен, можно простой установить):&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@localhost ~]# yum search openjdk&lt;br /&gt;
Loaded plugins: fastestmirror&lt;br /&gt;
Loading mirror speeds from cached hostfile&lt;br /&gt;
 * base: mirror.corbina.net&lt;br /&gt;
 * epel: mirror.xfes.ru&lt;br /&gt;
 * extras: mirror.corbina.net&lt;br /&gt;
 * ius: ftp.rediris.es&lt;br /&gt;
 * updates: mirror.corbina.net&lt;br /&gt;
====================================== Matched: openjdk =======================================&lt;br /&gt;
java-1.6.0-openjdk.i386&amp;amp;nbsp;: OpenJDK Runtime Environment&lt;br /&gt;
java-1.6.0-openjdk-demo.i386&amp;amp;nbsp;: OpenJDK Demos&lt;br /&gt;
java-1.6.0-openjdk-devel.i386&amp;amp;nbsp;: OpenJDK Development Environment&lt;br /&gt;
java-1.6.0-openjdk-javadoc.i386&amp;amp;nbsp;: OpenJDK API Documentation&lt;br /&gt;
java-1.6.0-openjdk-src.i386&amp;amp;nbsp;: OpenJDK Source Bundle&lt;br /&gt;
&lt;br /&gt;
[root@localhost ~]# yum install java-1.6.0-openjdk-devel.i386&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
А&amp;amp;nbsp;потом выкачиваем и ставим, тащемта, I2P роутер, например:&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# wget http://mirror.i2p2.de/i2pinstall_0.8.7.exe&lt;br /&gt;
&lt;br /&gt;
[root@host]# java -jar ./i2pinstall_0.8.7.exe -console&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Далее следуйте инструкциям &amp;lt;strike&amp;gt;ФСБ&amp;lt;/strike&amp;gt; инсталлятора.&lt;br /&gt;
&lt;br /&gt;
Как правило I2P&amp;amp;nbsp;ставится в директорию /usr/local/i2p — насколько я помню, её можно указать при установке. В&amp;amp;nbsp;принципе не так важно куда ставить, она сможет работать нормально и если вы её установите в домашнюю папку пользователя i2p:&amp;amp;nbsp;/home/i2p, суть не в этом, а в том, что в этой директории лежит скрипт i2prouter — им производится управление службой i2p. Работает примерно так:&amp;amp;nbsp;/usr/local/i2p/i2prouter start|stop|restart — обычный shell-файл. Его можно добавить в автозагрузку. Самый простой (но и самый неправильный)&amp;amp;nbsp;способ — это добавить команду в конец файла /etc/rc.local &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# I2P Service start&lt;br /&gt;
sleep 20&lt;br /&gt;
/usr/local/i2p/i2prouter start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
В&amp;amp;nbsp;этом случае роутер будет загружаться &amp;#039;&amp;#039;&amp;#039;от root&amp;#039;&amp;#039;&amp;#039; с запаздыванием на 20 секунд после остальных служб. Это было необходимо в моём случае, так как иначе сервис запускался с ошибками, или не запускался вовсе. Но как утверждают анонимусы — это плохая практика, кошернее запускать от специально созданного пользователя I2P. Если у вас есть &amp;#039;&amp;#039;&amp;#039;оттестированный и рабочий&amp;#039;&amp;#039;&amp;#039; пример того, как надо — пожалуйста, добавьте ниже. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В&amp;amp;nbsp;принципе должен работать вариант такой команды:&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[root@host]# chkconfig -–level 35 /usr/local/i2p/i2prouter on &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Но я лично не проверял. Если работает — гут. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Удалённый доступ к I2P консоли через SSH ====&lt;br /&gt;
Собственно, зависит от того, какая у вас машина. На Linux работает команда &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ssh -L 7657:localhost:7657 &amp;amp;lt;USER_NAME&amp;amp;gt;@&amp;amp;lt;HOST_IP&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Где, соответственно, &amp;amp;lt;USER_NAME&amp;amp;gt; — учётка на том сервере куда стучитесь, а &amp;amp;lt;HOST_IP&amp;amp;gt; — айпишник/DNS имя сервера. В&amp;amp;nbsp;результате на локальной машине вы сможете просто подключиться в браузере к http://localhost:7657 и получить там удалённую консоль, как будто она у вас на локальной машине. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В&amp;amp;nbsp;Windows, как обычно,&amp;amp;nbsp;сложнее. Для начала, надо [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html скачать программку plink.exe] и куда-нибудь её поместить,&amp;amp;nbsp;после чего в командной строке набрать:&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;путь к plink&amp;amp;gt;\plink.exe -L 7657:localhost:7657 &amp;amp;lt;USER_NAME&amp;amp;gt;@&amp;amp;lt;HOST_IP&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
результат получится аналогичным. Кстати подобные тоннели — весьма полезная вещь, например в качестве прокси на работе, где злые админы заблокировали всякие кошерные сайты. Правда они могли заблокировать и 22-й порт, но то уже другая песня…&lt;br /&gt;
&lt;br /&gt;
== Портирование и создание тоннелей ==&lt;br /&gt;
Тащемта, есть две разницы, если у вас уже был какой-то сайт/домен в I2P (и, соответственно, приватные ключи к нему) или не было. Если не было — то [[Создание I2P сайта|имеет смысл посмотреть эту статью]]. Там создание тоннелей с нуля даже в картинках.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Tonnel create2.png|border|left|411x297px|Настройки нового I2P тоннеля]]В принципе — портирование тоннелей из старого сервера&amp;amp;nbsp;/ окружения на новый — очень похоже. Для начала надо скопировать приватные ключи — те, которые сопоставлены вашим доменам. А дальше шаги примерно аналогичны, просто в качестве приватного ключа указываете имя файла, содержащего приватный ключ от домена, например i2ptunnel6-privKeys.dat — сразу же, при создании тоннеля. Тогда он автоматически подцепит ключ, и будет перенаправлять тоннель на ваш виртуальный хост. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка резервного копирования ==&lt;br /&gt;
В принципе, если есть время, знания и желание, а главное, насущная необходимость — лучше использовать нечто специализированное, наподобие [https://secure.wikimedia.org/wikipedia/ru/wiki/Bacula Bacula]. Но для небольшого проекта — до 10 сайтов и базы размером до 1 Гб, вполне пойдёт автоматизация путём какого-либо скрипта. Что он должен делать?&lt;br /&gt;
&lt;br /&gt;
# Копировать во временную папку необходимые файлы.&lt;br /&gt;
# Создавать в той же временной папке дамп mysql&lt;br /&gt;
# Сжимать всё это в архив, и помещать его в хранилище (на другом физическом диске — предпочтительнее)&lt;br /&gt;
# Удалять временные файлы&lt;br /&gt;
# Осуществлять сборку мусора (устаревших копий)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Естественно, это всё будет запускаться по cron. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для начала, нам потребуется архиватор, скачиваем, ставим:&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install p7zip &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
А&amp;amp;nbsp;затем делаем где-нибудь, скажем в /usr/scripts (создайте) файлик следующего содержимого (часть его пока корявая, потом поправлю, как допишу и испытаю — а именно в области удаления устаревших копий):&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * Тащемта, файл обеспечивает автоматизированное резервное копирование данных хостов, &lt;br /&gt;
 * базы данных, конфиги, и так далее. &lt;br /&gt;
 * &lt;br /&gt;
 * Суть работы - упаковка всего и вся, по путям прописанным в настройках, в единый архив, и помещение его&lt;br /&gt;
 * в резервное хранилище на другом физическом разделе. При этом производится нумерация файлов по&lt;br /&gt;
 * датам, и удаление файлов, устаревших на N дней. &lt;br /&gt;
 * &lt;br /&gt;
 * @data 25.07.2011&lt;br /&gt;
 * @author Alex&lt;br /&gt;
 * &lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
/**&lt;br /&gt;
 * Папки, которые необходимо зарезервировать&lt;br /&gt;
 * @var array&lt;br /&gt;
 */&lt;br /&gt;
$reservPaths = array(&lt;br /&gt;
	&amp;#039;/root/.i2p&amp;#039;,&lt;br /&gt;
	&amp;#039;/www&amp;#039;,&lt;br /&gt;
	&amp;#039;/usr/local/i2p&amp;#039;,&lt;br /&gt;
	&amp;#039;/etc/nginx&amp;#039;,&lt;br /&gt;
	&amp;#039;/etc/php.d&amp;#039;,&lt;br /&gt;
	&amp;#039;/etc/php.ini&amp;#039;,&lt;br /&gt;
	//&amp;#039;&amp;#039;,&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Где будем хранить бэкапы&lt;br /&gt;
 * @var integer&lt;br /&gt;
 */&lt;br /&gt;
$backupPath = &amp;#039;/backups/web&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Указываем время хранения бэкапа&lt;br /&gt;
 * @var integer&lt;br /&gt;
 */&lt;br /&gt;
$backupTTL = 7;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Путь к логам &lt;br /&gt;
 * @var string &lt;br /&gt;
 */&lt;br /&gt;
$logPath = &amp;#039;/var/log/web_backup.log&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
$log = null;&lt;br /&gt;
if (!file_exists($logPath))&lt;br /&gt;
{&lt;br /&gt;
        $log = fopen($logPath, &amp;#039;w&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
        $log = fopen($logPath, &amp;#039;a+&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fwrite($log, &amp;quot;--- START &amp;quot;.date(&amp;#039;d.m.Y H:i:s&amp;#039;).&amp;quot; ---\n\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Делаем временные папки&lt;br /&gt;
$tmp = &amp;#039;/tmp/&amp;#039; . strtoupper( substr( md5( mt_rand() ), 0, 6 ) );&lt;br /&gt;
mkdir($tmp, 0777);&lt;br /&gt;
mkdir($tmp . &amp;#039;/DB&amp;#039;, 0777);&lt;br /&gt;
&lt;br /&gt;
foreach ($reservPaths as $v)&lt;br /&gt;
{&lt;br /&gt;
	$fix_name = str_replace(array(&amp;#039;/&amp;#039;, &amp;#039;\\&amp;#039;), &amp;#039;_&amp;#039;, $v);&lt;br /&gt;
	if (!is_file($v) &amp;amp;amp;&amp;amp;amp; is_dir($v))&lt;br /&gt;
	{&lt;br /&gt;
		mkdir($tmp.&amp;#039;/&amp;#039;.$fix_name, 0777);&lt;br /&gt;
		system(&amp;quot;cp {$v}/* {$tmp}/{$fix_name}/ -R -f&amp;quot;);&lt;br /&gt;
	} &lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		system(&amp;quot;cp {$v} {$tmp}/{$fix_name} -f&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Сохраняем БД&lt;br /&gt;
system(&amp;quot;mysqldump --all-databases --user &amp;#039;root&amp;#039; --password=&amp;#039;YOU_MYSQL_PASSWORD&amp;#039; --hex-blob &amp;amp;gt; {$tmp}/DB/sqldump&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Упаковываем, должен стоять пакет p7zip (yum search!)&lt;br /&gt;
$date = date(&amp;#039;dmY_His&amp;#039;);&lt;br /&gt;
system(&amp;quot;7za a -t7z -m0=lzma &amp;#039;{$backupPath}/{$date}_dump.7z&amp;#039; {$tmp}/* &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
if (file_exists($backupPath.&amp;#039;/&amp;#039;.$date.&amp;#039;_dump.7z&amp;#039;))&lt;br /&gt;
{&lt;br /&gt;
	system(&amp;quot;rm -rf {$tmp}&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fwrite($log, date(&amp;#039;d.m.Y H:i:s&amp;#039;).&amp;quot; &amp;amp;gt; Резервирование окончено, резервная копия в {$backupPath}/{$date}_dump.7z\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Garbage Collector.&lt;br /&gt;
$dir = scandir($backupPath);&lt;br /&gt;
&lt;br /&gt;
if (0 &amp;amp;lt; count($dir))&lt;br /&gt;
{&lt;br /&gt;
	&lt;br /&gt;
	$time = time();&lt;br /&gt;
	$interval = strtotime( &amp;quot;-{$backupTTL} days&amp;quot; );&lt;br /&gt;
	&lt;br /&gt;
	foreach ($dir as $v)&lt;br /&gt;
	{&lt;br /&gt;
		if ((&amp;#039;.&amp;#039;&amp;amp;nbsp;!= $v) &amp;amp;amp;&amp;amp;amp; (&amp;#039;..&amp;#039;&amp;amp;nbsp;!= $v))&lt;br /&gt;
		{&lt;br /&gt;
			$cDate = lstat($backupPath.&amp;#039;/&amp;#039;.$v);&lt;br /&gt;
			// Если не работает, то ctime меняем на числовой индекс 10&lt;br /&gt;
			// Это потребуется если PHP ниже версии 4.0.6&lt;br /&gt;
			if ($interval &amp;amp;gt; $cDate[&amp;#039;ctime&amp;#039;])&lt;br /&gt;
			{&lt;br /&gt;
				unlink($backupPath.&amp;#039;/&amp;#039;.$v);&lt;br /&gt;
				fwrite($log, date(&amp;#039;d.m.Y H:i:s&amp;#039;).&amp;quot; &amp;amp;gt; Файл {$backupPath}&amp;#039;/&amp;#039;{$v} устарел и удалён. \n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fwrite($log, &amp;quot;--- END &amp;quot;.date(&amp;#039;d.m.Y H:i:s&amp;#039;).&amp;quot; ---&amp;quot;);&lt;br /&gt;
fclose($log);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; Итак, предположим, что у вас скрипт лежит по пути /var/scripts/backup.php — естественно пользователь, от которого вы будете запускать его на выполнение, должен иметь права соответствующие на файл. Для пробы можете запустить его прямо из командной строки, чтобы проверить — корректно ли он работает. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#&amp;amp;nbsp;php /var/scripts/backup.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Если он ругается на права — необходимо разрешить проблему до того, как вы поместите его в crontab на выполнение. В&amp;amp;nbsp;случае удачного исполнения, в папке с вашими бэкапами создастся файл архива (типа backups/10122011_010300_back.7z). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь следующее. В&amp;amp;nbsp;/etc/&amp;amp;nbsp;есть директории cron.daily, cron.weekly и т. д. Права на запись в них имеет пользователь root, если у вас есть эти права, то всё ок (а я исхожу из того,&amp;amp;nbsp;что на сервере у вас есть root права). Сделаем:&amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# touch /etc/cron.daily/backup.sh&lt;br /&gt;
# chmod a+x /etc/cron.daily/backup.sh&lt;br /&gt;
# vim /etc/cron.daily/backup.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
В&amp;amp;nbsp;открывшемся редакторе введём:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
/usr/bin/php /usr/scripts/backup.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ну и собственно всё. Теперь ваш скрипт будет запускаться по cron раз в сутки, и сваливать результаты своей деятельности в директорию бэкапов. Устаревшие бэкапы будут удаляться (срок хранения задаётся в скрипте). Автор, собственно, очень удивился тому, что скрипт вышел довольно переносимым. То есть имея окружение, описанное в требованиях, вы можете перезаписать некоторые параметры и он будет работать. Выяснилось это при переносе rus.i2p на новое железо в начале 2012-го. Ожидались проблемы, однако таковых не последовало — скрипт исправно отрабатывает свою функцию.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Рекомендации по поддержке ресурсов]]&lt;br /&gt;
&lt;br /&gt;
{{Навигация|I2P}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:I2P]]&lt;br /&gt;
[[Категория:Инструкции]]&lt;br /&gt;
[[Категория:Linux]]&lt;br /&gt;
[[Категория:Вебосерверы]]&lt;/div&gt;</summary>
		<author><name>ru&gt;Bot11</name></author>
	</entry>
</feed>