1.127 -> 1.128	linuxemu/chapter.sgml
	1.387 -> 1.409	mirrors/chapter.sgml
	1.72 -> 1.78	network-servers/chapter.sgml

Whitespace cleanups.

Obtained from:	The FreeBSD Russian Documentation Project
This commit is contained in:
Dmitry Morozovsky 2006-02-18 18:08:06 +00:00
parent b5a791a740
commit f8f0e11e47
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=27181
3 changed files with 418 additions and 241 deletions

View file

@ -2,9 +2,9 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml,v 1.21 2006/01/30 16:20:05 gad Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml,v 1.24 2006/02/18 17:42:08 marck Exp $
Original revision: 1.127
Original revision: 1.128
-->
<chapter id="linuxemu">
@ -274,7 +274,7 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<blockquote>
<note>
<para>Учтите, что если у вас уже есть совместно используемая библиотека
Linux с соответствующим первому столбцу результатов
Linux с соответствующим первому столбцу результатов
<command>ldd</command> основным номером версии, вам не
обязательно копировать файл, указанный в последнем столбце,
в вашу систему. Уже существующий файл должен подойти.
@ -294,7 +294,7 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<screen>libc.so.4 (DLL Jump 4.5pl26) -&gt; libc.so.4.6.29</screen>
<para>Если версии немного отличаются в последней цифре,
копировать <filename>/lib/libc.so.4.6.29</filename>
копировать <filename>/lib/libc.so.4.6.29</filename>
необязательно, так как программа, скорее всего, будет
нормально работать и с немного устаревшей версией.
Тем не менее, вы можете заменить
@ -335,14 +335,14 @@ ELF binary type not known
Abort</screen>
<para>Чтобы помочь ядру FreeBSD отличить ELF-файл FreeBSD от
двоичного файла Linux, используется утилита &man.brandelf.1;:</para>
двоичного файла Linux, используется утилита &man.brandelf.1;:</para>
<screen>&prompt.user; <userinput>brandelf -t Linux моя-linux-elf-программа</userinput></screen>
<indexterm><primary>GNU toolchain</primary></indexterm>
<para>В настоящее время набор инструментальных средств GNU
(GNU toolchain) помещает необходимую маркировочную информацию
(GNU toolchain) помещает необходимую маркировочную информацию
в двоичные ELF-файлы автоматически, поэтому необходимость
в этом действии возникает всё реже.</para>
</sect2>
@ -441,7 +441,7 @@ multi on</programlisting>
<para>Скрипты командной оболочки, которые
<application>&mathematica;</application> создала во
время установки должны быть измененены перед тем, как
время установки, должны быть изменены перед тем, как
вы сможете использовать их. Если вы выбрали
<filename role="directory">/usr/local/bin</filename> в
качестве директории для помещения исполняемых файлов
@ -480,7 +480,7 @@ done</programlisting>
<application>&mathematica;</application> на разных машинах.</para>
<para>При регистрации по электронной почте, по телефону или по факсу
вы сообщаете <quote>machine ID</quote>, а в ответ
вы сообщаете <quote>machine ID</quote>, а в ответ
получаете пароль, состоящий из нескольких групп чисел.</para>
</sect2>
@ -647,16 +647,16 @@ LOG=/var/log/lmgrd.log
case "$1" in
start)
lmgrd -c ${LICENSE_FILE} 2&gt;&gt; ${LOG} 1&gt;&2
echo -n " lmgrd"
;;
lmgrd -c ${LICENSE_FILE} 2&gt;&gt; ${LOG} 1&gt;&2
echo -n " lmgrd"
;;
stop)
lmgrd -c ${LICENSE_FILE} -x lmdown 2&gt;&gt; ${LOG} 1&gt;&2
;;
lmgrd -c ${LICENSE_FILE} -x lmdown 2&gt;&gt; ${LOG} 1&gt;&2
;;
*)
echo "Usage: `basename $0` {start|stop}" 1&gt;&2
exit 64
;;
echo "Usage: `basename $0` {start|stop}" 1&gt;&2
exit 64
;;
esac
exit 0
@ -813,14 +813,14 @@ case "$1" in
fi
;;
stop)
if [ -f /usr/local/etc/lmdown_TMW ]; then
if [ -f /usr/local/etc/lmdown_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmdown_TMW &gt; /dev/null 2&gt;&amp;1
fi
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0</programlisting>
@ -971,14 +971,14 @@ exit 0</programlisting>
<title>Установка Linux&ndash;среды</title>
<para>Удостоверьтесь, что порты
<filename role='package'>emulators/linux_base</filename> и
<filename role='package'>emulators/linux_base</filename> и
<filename role='package'>devel/linux_devtools</filename> установлены
на вашей системе. Если у вас возникнут трудности с этими портами,
воспользуйтесь пакетами или более ранними их версиями из
Коллекции Портов.</para>
<para>Если вы хотите использовать интеллектуальный агент (intelligent
agent), придется также установить пакет TCL от Red Hat:
agent), придется также установить пакет TCL от Red Hat:
<filename>tcl-8.0.3-20.i386.rpm</filename>. Универсальная команда
для установки пакетов с помощью официального порта
<application>RPM</application>
@ -1097,7 +1097,7 @@ $ORACLE_HOME/bin</literal></entry>
</tgroup>
</informaltable>
<para>Желательно устанавливать все переменные среды в файле
<para>Желательно устанавливать все переменные среды в файле
<filename>.profile</filename>. Вот реальный пример:</para>
<programlisting>ORACLE_BASE=/oracle; export ORACLE_BASE
@ -1598,7 +1598,7 @@ export PATH</programlisting>
<para>Для этой установки был использован &dell; &poweredge; 2500:
двухпроцессорная плата с двумя процессорами &pentium;&nbsp;III
1000&nbsp;MHz (256&nbsp;Кбайт кеш), 2&nbsp;Гбайта PC133 ECC SDRAM,
1000&nbsp;MHz (256&nbsp;Кбайт кэш), 2&nbsp;Гбайта PC133 ECC SDRAM,
PERC/3 DC PCI RAID-контроллер со 128&nbsp;Мбайтами и приводом
EIDE DVD-ROM. К RAID-контроллеру подключены два диска по
18&nbsp;Гбайт (зеркалированы) и четыре диска по 36&nbsp;Гбайт
@ -2070,14 +2070,14 @@ sapgw00s 4800/tcp # SAP Secure Gateway 4800 + Instance-Number</programlistin
производственной системы (хотя это и сработало для системы
IDES безо всяких проблем). Необходимы следующие локали:</para>
<programlisting>de_DE.ISO-8859-1
en_US.ISO-8859-1</programlisting>
<programlisting>de_DE.ISO8859-1
en_US.ISO8859-1</programlisting>
<para>Создайте ссылки следующим образом:</para>
<screen>&prompt.root; <userinput>cd /compat/linux/usr/share/locale</userinput>
&prompt.root; <userinput>ln -s de_DE de_DE.ISO-8859-1</userinput>
&prompt.root; <userinput>ln -s en_US en_US.ISO-8859-1</userinput></screen>
&prompt.root; <userinput>ln -s de_DE de_DE.ISO8859-1</userinput>
&prompt.root; <userinput>ln -s en_US en_US.ISO8859-1</userinput></screen>
<para>Если их не будет, в ходе установки возникнет ряд проблем.
Если их просто проигнорировать (установив <literal>STATUS</literal>
@ -2586,7 +2586,8 @@ options SEMUME=100 #
<para><filename>compat-libs-5.2-2.i386.rpm</filename></para>
<para><filename>compat-glibc-5.2-2.0.7.2.i386.rpm</filename></para>
<para><filename>compat-egcs-5.2-1.0.3a.1.i386.rpm</filename></para>
<para><filename>compat-egcs-c++-5.2-1.0.3a.1.i386.rpm</filename></para> <para><filename>compat-binutils-5.2-2.9.1.0.23.1.i386.rpm</filename></para>
<para><filename>compat-egcs-c++-5.2-1.0.3a.1.i386.rpm</filename></para>
<para><filename>compat-binutils-5.2-2.9.1.0.23.1.i386.rpm</filename></para>
<para>Дополнительную информацию см. в файлах &sap; Notes или &oracle;
<filename>Readme</filename>. Если установить эти пакеты не
@ -3341,11 +3342,11 @@ options SHMMAXPGS=393216
загрузчик.</para>
<para>Если файл не опознавался системой как двоичный, системный
вызов &man.execve.2; возвращал ошибку, и текущий командный
вызов &man.execve.2; возвращал ошибку, и текущий командный
интерпретатор начинал выполнять файл как скрипт.</para>
<para>По умолчанию скрипт выполнялся <quote>текущим командным
интерпретатором</quote>.</para>
интерпретатором</quote>.</para>
<para>Позднее, &man.sh.1; был модифицирован, так, чтобы проверять
первые два символа в файле, и если они оказывались
@ -3354,20 +3355,20 @@ options SHMMAXPGS=393216
эту модификацию).</para>
<para>FreeBSD сейчас ведет себя по-другому: пробегает по списку
загрузчиков,включающему специальный загрузчик <literal>#!</literal>,
загрузчиков,включающему специальный загрузчик <literal>#!</literal>,
который вызывает нужный интерпретатор, указанный после этих символов
до следующего пробела, или <filename>/bin/sh</filename>, если
не нашел подходящего.</para>
<indexterm><primary>ELF</primary></indexterm>
<para>Для поддержки Linux ABI FreeBSD ищет магическое число,
соответствующее двоичному файлу ELF (на этой стадии не различаются
соответствующее двоичному файлу ELF (на этой стадии не различаются
FreeBSD, &solaris;, Linux или любая другая ОС поддерживающая формат
ELF).</para>
<indexterm><primary>Solaris</primary></indexterm>
<para>Далее, ELF-загрузчик определяет <quote>марку</quote> (brand)
двоичного файла ELF (специальный комментарий в ELF-файле,
двоичного файла ELF (специальный комментарий в ELF-файле,
отсутствующий в двоичных файлах ELF SVR4/&solaris;).</para>
<para>Соответственно, Linux программы должны быть
@ -3379,7 +3380,7 @@ options SHMMAXPGS=393216
<para>Когда это сделано, загрузчик ELF выявит марку
<literal>Linux</literal> в файле.</para>
<indexterm>
<primary>ELF</primary>
<primary>ELF</primary>
<secondary>branding</secondary>
</indexterm>
@ -3394,11 +3395,11 @@ options SHMMAXPGS=393216
поддержки Linux.</para>
<para>Вектор системных вызовов Linux содержит, среди прочего, список
записей <literal>sysent[]</literal>, адреса которых находятся в
записей <literal>sysent[]</literal>, адреса которых находятся в
модуле ядра.</para>
<para>При выполнении системного вызова из двоичного файла Linux,
код обработчика разыменовывает указатель на функцию системного вызова
код обработчика разыменовывает указатель на функцию системного вызова
из структуры <literal>proc</literal>, и получает точки входа
системных вызовов Linux, а не FreeBSD.</para>
@ -3420,7 +3421,7 @@ options SHMMAXPGS=393216
разобраться, что они работают не в Linux.</para>
<para>Фактически, имеется ядро Linux в ядре FreeBSD; различные
базовые функции, реализующие все услуги ядра, идентичны как
базовые функции, реализующие все услуги ядра, идентичны как
в записях таблицы системных вызовов FreeBSD, так и в записях
таблицы системных вызовов Linux: операции с файловой системой,
виртуальная память, средства доставки сигналов,
@ -3435,7 +3436,7 @@ options SHMMAXPGS=393216
<literal>proc</literal> процесса, выполняющего вызов).</para>
<para>Какая же реализация ABI для FreeBSD <quote>родная</quote>? Это
не имеет значения. Единственное различие (на данный момент, в
не имеет значения. Единственное различие (на данный момент, в
будущем все может и, вероятно, изменится), пожалуй, в том, что
функции системных вызовов FreeBSD зашиты в ядро, а для Linux они
могут быть либо статически скомпонованы в ядро, либо получаться
@ -3446,7 +3447,7 @@ options SHMMAXPGS=393216
отсутствует.</para>
<para>В таком случае, почему же иногда говорят об
<quote>эмуляции Linux</quote>? Чтобы <quote>насолить</quote>
<quote>эмуляции Linux</quote>? Чтобы <quote>насолить</quote>
FreeBSD! Фактически, причина в том, что на момент первой реализации
не существовало слова, которое бы точнее описывало этот процесс.
Нельзя было сказать, что FreeBSD запускает приложения Linux (без

View file

@ -2,9 +2,9 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml,v 1.28 2005/09/25 09:51:47 marck Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml,v 1.31 2006/02/18 17:54:40 marck Exp $
Original revision: 1.387
Original revision: 1.409
-->
<appendix id="mirrors">
@ -399,15 +399,6 @@
(éÓÐÏÌØÚÕÊÔÅ <command>cvs login</command> É ××ÅÄÉÔÅ ÐÁÒÏÌØ
<quote>anoncvs</quote> × ÏÔ×ÅÔ ÎÁ ÐÒÉÇÌÁÛÅÎÉÅ.)</para>
</listitem>
<listitem>
<para><emphasis>û×ÅÃÉÑ</emphasis>:
freebsdanoncvs@anoncvs.se.FreeBSD.org:/home/ncvs
(ÔÏÌØËÏ ssh - ÂÅÚ ÐÁÒÏÌÑ)</para>
<programlisting>SSH HostKey: 1024 a7:34:15:ee:0e:c6:65:cf:40:78:2d:f3:cd:87:bd:a6 root@apelsin.fruitsalad.org
SSH2 HostKey: 1024 21:df:04:03:c7:26:3e:e8:36:1a:50:2d:c7:ae:b8:5f ssh_host_dsa_key.pub</programlisting>
</listitem>
<listitem>
<para><emphasis>óûá</emphasis>:
freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs
@ -464,15 +455,12 @@ SSH2 HostKey: 1024 80:a7:87:fa:61:d9:25:5c:33:d5:48:51:aa:8f:b6:12 ssh_host_dsa_
ÐÒÉÍÅÒÏ× ÉÓÐÏÌØÚÏ×ÁÎÉÑ Anonymous CVS:</para>
<example>
<title>éÚ×ÌÅÞÅÎÉÅ ËÏÄÁ ÉÚ -CURRENT (&man.ls.1;) Ó
ÐÏÓÌÅÄÕÀÝÉÍ ÕÄÁÌÅÎÉÅÍ:</title>
<title>Извлечение кода из -CURRENT (&man.ls.1;):</title>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>.
&prompt.user; <userinput>cvs co ls</userinput>
&prompt.user; <userinput>cvs release -d ls</userinput>
&prompt.user; <userinput>cvs logout</userinput>
</screen>
</example>
@ -487,38 +475,33 @@ Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known host
</example>
<example>
<title>éÚ×ÌÅÞÅÎÉÅ &man.ls.1; ÉÚ ×ÅÔ×É ÄÌÑ 3.X-STABLE:</title>
<title>Извлечение &man.ls.1; из ветви для 6-STABLE:</title>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>.
&prompt.user; <userinput>cvs co -rRELENG_3 ls</userinput>
&prompt.user; <userinput>cvs release -d ls</userinput>
&prompt.user; <userinput>cvs logout</userinput>
&prompt.user; <userinput>cvs co -rRELENG_6 ls</userinput>
</screen>
</example>
<example>
<title>óÏÚÄÁÎÉÅ ÓÐÉÓËÁ ÉÚÍÅÎÅÎÉÊ &man.ls.1; (× ×ÉÄÅ unified diff)</title>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>.
&prompt.user; <userinput>cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls</userinput>
&prompt.user; <userinput>cvs logout</userinput>
&prompt.user; <userinput>cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE ls</userinput>
</screen>
</example>
<example>
<title>ðÏÉÓË ÄÏÓÔÕÐÎÙÈ ÉÍÅÎ ÍÏÄÕÌÅÊ:</title>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs</userinput>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>.
&prompt.user; <userinput>cvs co modules</userinput>
&prompt.user; <userinput>more modules/modules</userinput>
&prompt.user; <userinput>cvs release -d modules</userinput>
&prompt.user; <userinput>cvs logout</userinput>
</screen>
</example>
</sect2>
@ -536,7 +519,7 @@ Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known host
</listitem>
<listitem>
<para><ulink url="http://www.cvshome.org/">CVS Home</ulink>,
<para><ulink url="http://ximbiot.com/cvs/wiki/">CVS Home</ulink>,
ÓÏÏÂÝÅÓÔ×Ï ÒÁÚÒÁÂÏÔËÉ É ÐÏÄÄÅÒÖËÉ CVS.</para>
</listitem>
@ -1798,6 +1781,15 @@ doc/zh_*</screen>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ports-net-im
release=cvs</literal></term>
<listitem>
<para>Программы обмена быстрыми сообщениями.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ports-net-mgmt
release=cvs</literal></term>
@ -1807,6 +1799,15 @@ doc/zh_*</screen>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ports-net-p2p
release=cvs</literal></term>
<listitem>
<para>Сети клиентского обмена (peer-to-peer).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ports-news
release=cvs</literal></term>
@ -2325,6 +2326,170 @@ doc/zh_*</screen>
</sect2>
</sect1>
<sect1 id="portsnap">
<title>Использование Portsnap</title>
<sect2 id="portsnap-intro">
<title>Введение</title>
<para><application>Portsnap</application> &mdash; система для
защищенного распространения дерева портов &os;. Примерно раз
в час генерируется <quote>снэпшот</quote> дерева портов,
который затем архивируется и подписывается электронной подписью.
Полученные файлы затем распространяются при помощи HTTP.</para>
<para>Подобно <application>CVSup</application>,
<application>portsnap</application> использует
<emphasis>активную (pull)</emphasis> модель обновлений:
упакованное и подписанное дерево помещается на веб-сервер, откуда
его должны забирать клиенты. Пользователь должен либо запустить
&man.portsnap.8; вручную, чтобы получить
обновления, либо настроить периодическое задание при помощи
&man.cron.8;.<para>
<para>По техническим причинам <application>Portsnap</application>
не обновляет основное (<quote>живое</quote>) дерево портов в
каталоге <filename>/usr/ports/</filename>, а работает со сжатой
копией дерева в каталоге <filename>/var/db/portsnap/</filename>.
Впоследствии эта копия используется для обновления основного
дерева.</para>
<note>
<para>Если <application>Portsnap</application> был установлен из
Коллекции портов &os;, каталогом для снэпшотов будет
<filename>/usr/local/portsnap/</filename>, а не
<filename>/var/db/portsnap/</filename>.</para>
</note>
</sect2>
<sect2 id="portsnap-install">
<title>Установка</title>
<para>&os; начиная с версии 6.0 содержит
<application>Portsnap</application> в базовой поставке системы.
Для более ранних релизов &os; эта утилита может быть установлена
из порта <filename role="package">sysutils/portsnap</filename>.</para>
</sect2>
<sect2 id="portsnap-config">
<title>Конфигурация Portsnap</title>
<para>Конфигурация <application>Portsnap</application> описывается
файлом <filename>/etc/portsnap.conf</filename>. Для большинства
пользователей вполне подойдет конфигурация по умолчанию;
за подробностями обращайтесь к странице справочника
&man.portsnap.conf.5;.</para>
<note>
<para>При установке <application>Portsnap</application> из
Коллекции портов используется файл конфигурации
<filename>/usr/local/etc/portsnap.conf</filename>.
При установке порта этот файл не создается; вам нужно создать
его самостоятельно командой</para>
<screen>&prompt.root; <userinput>cd /usr/local/etc &amp;&amp; cp portsnap.conf.sample portsnap.conf</userinput></screen>
</note>
</sect2>
<sect2>
<title>Первый запуск <application>Portsnap</application></title>
<para>При первом запуске утилите &man.portsnap.8;
потребуется загрузить упакованный снэпшот полного дерева портов
в каталог <filename>/var/db/portsnap/</filename>
(<filename>/usr/local/portsnap/</filename>, если
<application>Portsnap</application> был установлен из Коллекции
портов). На начало 2006 года размер снэпшота составляет около
55&nbsp;МБ.</para>
<screen>&prompt.root; <userinput>portsnap fetch</userinput></screen>
<para>После загрузки снэпшота из него может быть развернуто основное
дерево портов. Это необходимо, даже есть каталог
<filename>/usr/ports/</filename>заполнен каким-либо другим
способом, например при помощи <application>CVSup</application>,
поскольку позволяет установить точку отсчета, от которой
<command>portsnap</command> будет определять необходимый
объем изменений.</para>
<screen>&prompt.root; <userinput>portsnap extract</userinput></screen>
<note>
<para>В конфигурации установки по умолчанию каталог
<filename role="directory">/usr/ports</filename> не создан.
Создайте его самостоятельно перед первым запуском
утилиты <command>portsnap</command>.</para>
</note>
</sect2>
<sect2>
<title>Обновление дерева портов</title>
<para>После того как первоначальный снэпшот дерева портов будет
развернут в каталог <filename>/usr/ports/</filename>, обновление
дерева портов будет состоять из двух шагов:
загрузки (<emphasis>fetch</emphasis>) обновлений к упакованному
снэпшоту и последующего обновления (<emphasis>update</emphasis>)
основного дерева. Оба шага могут быть выполнены одним запуском
<command>portsnap</command>:</para>
<screen>&prompt.root; <userinput>portsnap fetch update</userinput></screen>
<note>
<para>Некоторые из старых версий <command>portsnap</command>
не поддерживают такой синтаксис; в этом случае, используйте две
последовательные команды:</para>
<screen>&prompt.root; <userinput>portsnap fetch</userinput>
&prompt.root; <userinput>portsnap update</userinput></screen>
</note>
</sect2>
<sect2>
<title>Запуск portsnap из cron</title>
<para>Для того, чтобы избежать проблем с <quote>безумными
толпами</quote> клиентов, одновременно приходящими на сервера
<application>Portsnap</application>, команда <command>portsnap
fetch</command> не запустится как задание &man.cron.8;.
Для работы из <command>cron</command> предназначена специальная
команда <command>portsnap cron</command>, которая перед
загрузкой обновлений ожидает случайное время до 3600 секунд.</para>
<para>Кроме того, настоятельно не рекомендуется запускать из
<command>cron</command> команду <command>portsnap
update</command>, поскольку при пересечении с процессом сборки
или установки какого-либо порта неизбежно возникнет конфликт.
С другой стороны, безопасно обновить индексный файл, запустив
<command>portsnap -I update</command> (разумеется, команду
<command>portsnap update</command> без ключа <option>-I</option>
для обновления оставшейся части дерева портов придется запустить
вручную).</para>
<para>Для ежедневного обновления упакованного снэпшота и индексного
файла при помощи <command>portsnap</command> и последующего
отчета почтой об устаревших установленных пакетах добавьте
в ваш файл <filename>/etc/crontab</filename> строку</para>
<programlisting>0 3 * * * root portsnap -I cron update && pkg_version -vIL=</programlisting>
<note>
<para>Если системные часы не установлены в локальное время,
пожалуйста, замените <literal>3</literal> на случайное
число между 0 и 23, чтобы не создавать пиковых нагрузок на
серверы <application>portsnap</application>.</para>
</note>
<note>
<para>Старые версии утилиты <command>portsnap</command>
не поддерживали несколько команд при одном запуске (например,
<literal>cron update</literal>). Если команда, указанная выше,
не сработает, попробуйте заменить
<command>portsnap -I cron update</command> на
<command>portsnap cron &amp;&amp; portsnap -I update</command>.</para>
</note>
</sect2>
</sect1>
<sect1 id="cvs-tags">
<title>ôÅÇÉ CVS</title>
@ -2368,13 +2533,23 @@ doc/zh_*</screen>
<varlistentry>
<term>RELENG_6</term>
<listitem>
<para>÷ÅÔר ÒÁÚÒÁÂÏÔËÉ FreeBSD-6.X, ÉÚ×ÅÓÔÎÁÑ ÔÁËÖÅ ËÁË
FreeBSD 6-STABLE.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>RELENG_6_0</term>
<listitem>
<para>Ветвь релиза для FreeBSD-6.0, используемая только
для исправлений безопасности и других критических
исправлений.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>RELENG_5</term>
@ -2571,6 +2746,14 @@ doc/zh_*</screen>
ÎÅÔ ÓÐÅÃÉÁÌØÎÙÈ ÉÍÅÎ ÄÌÑ ÒÅÌÉÚÏ×.</para>
<variablelist>
<varlistentry>
<term>RELENG_6_0_0_RELEASE</term>
<listitem>
<para>FreeBSD 6.0</para>
</listitem>
</varlistentry>
<varlistentry>
<term>RELENG_5_4_0_RELEASE</term>

View file

@ -2,9 +2,9 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml,v 1.27 2006/01/06 18:40:03 gad Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/network-servers/chapter.sgml,v 1.30 2006/02/18 17:54:40 marck Exp $
Original revision: 1.72
Original revision: 1.78
-->
<chapter id="network-servers">
@ -106,6 +106,12 @@
<contrib>Текст предоставил </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<contrib>Обновлено для &os; 6.1-RELEASE</contrib>
<othername>Проект документации &os;</othername>
</author>
</authorgroup>
</sect1info>
<title><quote>Супер-сервер</quote> <application>inetd</application></title>
@ -113,15 +119,15 @@
<sect2 id="network-inetd-overview">
<title>Обзор</title>
<para>&man.inetd.8; называют также <quote>супер-сервером
<para>&man.inetd.8; иногда называют также <quote>супер-сервером
Интернет</quote>, потому что он управляет соединениями к многим
сервисам. Когда
<application>inetd</application> принимает соединение, он определяет,
для какой программы предназначено соединение, запускает соответствующий
процесс и предоставляет ему сокет, ссылка на который передается
процессу в качестве стандартных устройств ввода, вывода и сообщения об
ошибках. Запуск одного экземпляра
<application>inetd</application> уменьшает общую нагрузку на систему по
ошибках. Для не слишком нагруженных серверов запуск через
<application>inetd</application> может уменьшить общую нагрузку на систему по
сравнению с запуском каждого даемона индивидуально в выделенном
режиме.</para>
@ -141,15 +147,19 @@
<title>Настройки</title>
<para><application>inetd</application> инициализируется посредством
системы <filename>/etc/rc.conf</filename>. Параметр
системы &man.rc.8;. Параметр
<literal>inetd_enable</literal> по умолчанию установлен в
<literal>NO</literal>, однако часто включается утилитой
<application>sysinstall</application> при выборе профиля среднего
уровня безопасности. Указание
<literal>NO</literal>, однако может быть включен утилитой
<application>sysinstall</application> в процессе установки.
Указание
<programlisting>inetd_enable="YES"</programlisting> или
<programlisting>inetd_enable="NO"</programlisting> в файле
<filename>/etc/rc.conf</filename> может задать или запретить запуск
<application>inetd</application> во время загрузки.</para>
<filename>/etc/rc.conf</filename> разрешит или запретит запуск
<application>inetd</application> во время загрузки.
Команда
<programlisting>/etc/rc.d/inetd rcvar</programlisting>
покажет текущие установки переменных, относящихся к
<application>inetd</application>.</para>
<para>Кроме того, через <literal>inetd_flags</literal> даемону
<application>inetd</application> могут быть переданы различные
@ -159,47 +169,29 @@
<sect2 id="network-inetd-cmdline">
<title>Параметры командной строки</title>
<para>Формат вызова <application>inetd</application>:</para>
<para>Как и большинство даемонов, для <application>inetd</application>
существует большое количество разнообразных опций, изменяющих
его поведение. Полный из список таков;</para>
<para><option> inetd [-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a address | hostname]
[-p filename] [-R rate] [configuration file]</option></para>
<para><command>inetd</command> <option>[-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a address | hostname]
[-p filename] [-R rate] [-s maximum] [configuration file]</option></para>
<para>Опции могут передаваться <application>inetd</application>
при помощи переменной <literal>inetd_flags</literal> файла
<filename>/etc/rc.conf</filename>. По умолчанию переменная
<literal>inetd_flags</literal> установлена в <literal>-wW -C
60</literal>, то есть включает обработку TCP wrapping и запрещает
обращаться с одного IP-адреса к сервису более чем 60 раз в
минуту.</para>
<para>Начинающих пользователей порадует отсутствие необходимости
менять эти параметры в стандартных случаях. Тем не менее, мы
остановимся на опциях, ограничивающих количество и частоту
соединений, поскольку они могут быть полезны для исключения
массированных атак. Полный список опций можно найти на странице
справочника &man.inetd.8;.</para>
<variablelist>
<varlistentry>
<term>-d</term>
<listitem>
<para>Включение отладочной информации.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-l</term>
<listitem>
<para>Включение регистрации успешных соединений.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-w</term>
<listitem>
<para>Включение механизма TCP Wrapping для внешних служб (по
умолчанию включено).</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-W</term>
<listitem>
<para>Включение механизма TCP Wrapping для внутренних служб,
которые встроены в <application>inetd</application> (по
умолчанию включено).</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-c maximum</term>
@ -234,86 +226,50 @@
</varlistentry>
<varlistentry>
<term>-a</term>
<term>-s maximum</term>
<listitem>
<para>Задает один IP-адрес, к которому делается привязка.
Альтернативно может быть указано имя хоста, и в этом случае
используется соответствующий этому имени хоста адрес IPv4 или
IPv6. Обычно имя хоста задается, когда
<application>inetd</application> запускается в окружении
&man.jail.8;, и в этом случае имя хоста соответствует этому
&man.jail.8;-окружению.</para>
<para>Если используется формат с именем хоста и требуется привязка
как для IPv4, так и для IPv6, то для каждой привязки требуется
запись с соответствующим типом протокола для каждой службы в
файле <filename>/etc/inetd.conf</filename>. К примеру, службе
на основе TCP потребуется две записи, в одной для протокола
используется <literal>tcp4</literal>, а в другой
используется <literal>tcp6</literal>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-p</term>
<listitem>
<para>Задает альтернативный файл для хранения ID процесса.</para>
<para>Задает максимальное количество процессов, одновременно
обслуживающих один сервис для одного IP-адреса; по умолчанию
не ограничено. Может переопределяться для каждой службы
параметром <option>max-child-per-ip</option>.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Эти параметры могут быть переданы в
<application>inetd</application> при помощи
<literal>inetd_flags</literal> в файле
<filename>/etc/rc.conf</filename>. По умолчанию значение
<literal>inetd_flags</literal> установлено в <literal>-wW</literal>,
что включает механизм TCP wrapping для внутренних и внешних служб
<application>inetd</application>. Новичкам эти параметры изменять и
даже задавать их в файле <filename>/etc/rc.conf</filename> не
нужно.</para>
<note>
<para>Внешняя служба является даемоном вне
<application>inetd</application>, который запускается при получении
соединения к нему. С другой стороны, внутренней службой является
услуга, которую <application>inetd</application> предоставляет
сам.</para>
</note>
</sect2>
<sect2 id="network-inetd-conf">
<!-- XXX This section isn't very clear, and could do with some lovin' -->
<title><filename>inetd.conf</filename></title>
<para>Настройка <application>inetd</application> управляется через файл
<para>Настройка <application>inetd</application> производится через файл
<filename>/etc/inetd.conf</filename>.</para>
<para>Если в файле <filename>/etc/inetd.conf</filename> делались
изменения, то <application>inetd</application> можно заставить считать
его конфигурационный файл повторно, послав сигнал HangUP процессу
<application>inetd</application>, как показано здесь:</para>
его конфигурационный файл повторно посредством команды</para>
<example id="network-inetd-hangup">
<title>Посылка сигнала HangUP процессу
<example id="network-inetd-reread">
<title>Перезагрузка конфигурационного файла
<application>inetd</application></title>
<screen>&prompt.root; <userinput>kill -HUP `cat /var/run/inetd.pid`</userinput></screen>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd reload</userinput></screen>
</example>
<para>В каждой строке конфигурационного файла описывается отдельный
даемон. Комментариям в файле предшествует знак <quote>#</quote>. Файл
<filename>/etc/inetd.conf</filename> имеет такой формат:</para>
даемон. Комментариям в файле предшествует знак <quote>#</quote>.
Строки в файле
<filename>/etc/inetd.conf</filename> имеют такой формат:</para>
<programlisting>service-name
socket-type
protocol
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
user[:group][/login-class]
server-program
server-program-arguments</programlisting>
<para>Пример записи для даемона <application>ftpd</application>,
<para>Пример записи для даемона &man.ftpd.8;,
использующего IPv4:</para>
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
@ -396,7 +352,7 @@ server-program-arguments</programlisting>
</varlistentry>
<varlistentry>
<term>{wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]</term>
<term>{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]</term>
<listitem>
<para><option>wait|nowait</option> определяет, может ли даемон,
@ -414,41 +370,55 @@ server-program-arguments</programlisting>
параметром <option>max-child</option>. Если нужно ограничение в
десять экземпляров некоторого даемона, то после параметра
<option>nowait</option> нужно задать
<literal>/10</literal>.</para>
<literal>/10</literal>. При задании <literal>/0</literal>
ограничения на количество экземпляров снимаются.</para>
<para>Кроме <option>max-child</option>, может быть задействован
другой параметр, ограничивающий максимальное число соединений от
<para>Кроме <option>max-child</option>, могут быть задействованы
два других параметра, ограничивающих максимальное число соединений от
одного источника.
<option>max-connections-per-ip-per-minute</option> служит именно
для этого. Здесь значение, равное десяти, будет ограничивать
<option>max-connections-per-ip-per-minute</option> ограничивает
количество соединений от одного IP-адреса в течение минуты, так что
значение, равное десяти, будет ограничивать
любой заданный IP-адрес на выполнение десяти попыток подключения
к некоторому сервису в минуту. Это полезно для предотвращения
к некоторому сервису в минуту. Параметр
<option>max-child-per-ip</option> ограничивает количество
дочерних процессов, которые могут быть одновременно
задействованы на обслуживание одного IP-адреса.
Эти опции полезны для предотвращения
намеренного или ненамеренного расходования ресурсов и атак типа
Denial of Service (DoS) на машину.</para>
<para>В этом поле <option>wait</option> или <option>nowait</option>
обязательны. <option>max-child</option> и
<option>max-connections-per-ip-per-minute</option>
<para>В этом поле одно из значений <option>wait</option>
или <option>nowait</option>
обязательны. <option>max-child</option>,
<option>max-connections-per-ip-per-minute</option> и
<option>max-child-per-ip</option>
опциональны.</para>
<para>Многопоточный даемон типа stream без ограничений
<option>max-child</option> или
<option>max-connections-per-ip-per-minute</option> будет
определен просто вот так: <literal>nowait</literal>.</para>
<option>max-child</option>,
<option>max-connections-per-ip-per-minute</option> или
<option>max-child-per-ip</option> будет
определен просто как <literal>nowait</literal>.</para>
<para>Тот же самый даемон с ограничением в максимум десять даемонов
будет определен так: <literal>nowait/10</literal>.</para>
<para>Наконец, та же конфигурация с ограничением в двадцать
<para>Та же конфигурация с ограничением в двадцать
соединений на IP-адрес в минуту и общим ограничением в максимум
десять порожденных даемонов выглядит так:
<literal>nowait/10/20</literal>.</para>
<para>Эти параметры, используемые все со значениями по умолчанию
даемоном <application>fingerd</application>, имеют такой
даемоном &man.fingerd.8;, имеют такой
вид:</para>
<programlisting>finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s</programlisting>
<para>Наконец, пример, описывающий ограничение на 100 даемонов
в целом, при этом не более чем по 5 на один IP-адрес,
будет выглядеть так:
<literal>nowait/100/0/5</literal>.</para>
</listitem>
</varlistentry>
@ -497,23 +467,25 @@ server-program-arguments</programlisting>
<sect2 id="network-inetd-security">
<title>Безопасность</title>
<para>В зависимости от схемы безопасности, выбранной при установке,
многие из даемонов <application>inetd</application> могут оказаться по
умолчанию включенными. Если нет особой нужды в некотором даемоне, то
выключите его! Поместите знак <quote>#</quote> перед ненужным даемоном
<para>В зависимости от выбранных при установке параметров,
многие из служб <application>inetd</application> могут оказаться по
умолчанию включенными. Если нет особой нужды в некотором даемоне,
подумайте, не стоит ли его выключить?
Поместите знак <quote>#</quote> перед ненужным даемоном
в <filename>/etc/inetd.conf</filename>
и <link linkend="network-inetd-hangup">пошлите сигнал для inetd</link>.
и <link linkend="network-inetd-reread">пошлите сигнал для inetd</link>.
Некоторые даемоны, такие, как <application>fingerd</application>,
вообще нежелательны, потому что они дают атакующему слишком много
информации.</para>
вообще нежелательны, потому что они дают информацию, которая
может оказаться полезной атакующему.</para>
<para>Некоторые даемоны не заботятся о безопасности и имеют большие
тайм-ауты для соединений или вообще их не имеют. Это позволяет
атакующему неспешно устанавливать соединения к конкретному даемону,
истощая имеющиеся ресурсы. Может оказаться полезным задать для
некоторых даемонов ограничения
<option>max-connections-per-ip-per-minute</option> и
<option>max-child</option>.</para>
<option>max-connections-per-ip-per-minute</option>,
<option>max-child</option> и <option>max-child-per-ip</option>,
особенно если вы обнаружите слишком большое число соединений.</para>
<para>По умолчанию механизм TCP wrapping включен. Обратитесь к
справочной странице по &man.hosts.access.5; для получения более
@ -534,8 +506,7 @@ server-program-arguments</programlisting>
<para>Сервис <application>auth</application> предоставляет
идентификационные сетевые услуги
(<application>ident</application>, <application>identd</application>)
и поддается настройке.</para>
и поддается настройке; прочие сервисы ненастраиваемы.</para>
<para>Обратитесь к справочной странице по &man.inetd.8; для получения
более подробной информации.</para>
@ -4291,7 +4262,7 @@ zone "0.168.192.in-addr.arpa" {
в поставку FreeBSD. Если вы не установили их во вместе с
системой, воспользуйтесь портами <filename
role="package">www/apache13</filename> или <filename
role="package">www/apache2</filename>.</para>
role="package">www/apache20</filename>.</para>
<para>Как только <application>Apache</application> был успешно
установлен, его необходимо настроить.</para>
@ -4523,7 +4494,7 @@ DocumentRoot /www/someotherdomain.tld
role="package">www/apache13-modssl</filename>.
Поддержка SSL также доступна для
<application>Apache</application>&nbsp;2.X
через порт <filename role="package">www/apache2</filename>,
через порт <filename role="package">www/apache20</filename>,
где она включена по умолчанию.</para>
<!-- XXX add more information about configuring mod_ssl here. -->
@ -4532,9 +4503,24 @@ DocumentRoot /www/someotherdomain.tld
</sect3>
<sect3>
<title>Построение динамических сайтов при помощи Perl и PHP</title>
<para>В последние годы все большее число компаний обращает внимание
на Интернет как площадку для ведения и расширения бизнеса.
Среди прочего, этот процесс подчеркивает потребность в
интерактивном содержимом сайтов. Некоторые компании, такие как
&microsoft;, представляют свои закрытые решения; сообщество
разработчиков открытых программ отвечает на вызов.
Два возможных пути решения проблемы динамического контента &mdash;
mod_perl и mod_php.</para>
<sect4>
<title>mod_perl</title>
<indexterm><primary>Perl</primary></indexterm>
<indexterm>
<primary>mod_perl</primary>
<secondary>Perl</secondary>
</indexterm>
<para>Проект интеграции
<application>Apache</application>/Perl объединяет мощь
@ -4547,15 +4533,22 @@ DocumentRoot /www/someotherdomain.tld
позволяет не тратить ресурсы на запуск внешнего
интерпретатора и время на запуск Perl.</para>
<para>Если вы еще не установили <application>Apache</application>,
его версия с модулем <application>mod_perl</application> может
быть установлена через
порт <filename
role="package">www/apache13-modperl</filename>.</para>
</sect3>
<para><application>mod_perl</application> можно использовать
различными способами. Помните, что
<application>mod_perl</application> 1.0 работает только с
<application>Apache</application> 1.3, тогда как
<application>mod_perl</application> 2.0 совместим только с
<application>Apache</application> 2.
<application>mod_perl</application> 1.0 доступен как порт <filename
role="package">www/mod_perl</filename>, а также в виде статически
скомпилированной версии в <filename
role="package">www/apache13-modperl</filename>.
<application>mod_perl</application> 2.0 доступен как <filename
role="package">www/mod_perl2</filename>.</para>
</sect4>
<sect3>
<sect3info>
<sect4>
<sect4info>
<authorgroup>
<author>
<firstname>Tom</firstname>
@ -4563,21 +4556,16 @@ DocumentRoot /www/someotherdomain.tld
<contrib>Написал </contrib>
</author>
</authorgroup>
</sect3info>
<title>PHP</title>
</sect4info>
<title>mod_php</title>
<indexterm><primary>PHP</primary></indexterm>
<indexterm>
<primary>mod_php</primary>
<secondary>PHP</secondary>
</indexterm>
<para>В последние несколько лет все большее количество компаний
выходит в интернет, стараясь повысить свою узнаваемость и получить
больший доход. Это увеличивает потребность в интерактивном
веб контенте. В то время, как некоторые компании, такие
как &microsoft;, представили свои решения в проприетарных
продуктах, сообщество открытых исходных текстов ответило
на вызов. Один из таких ответов, это широко используемый
<acronym>PHP</acronym>.
<para>PHP, также известный как <quote>Hypertext Preprocessor</quote>,
<para>PHP, также известный как <quote>Препроцессор гипертекста</quote>
(<quote>Hypertext Preprocessor</quote>), &mdash;
это скриптовый язык общего назначения, в основном предназначенный
для веб разработки. Этот язык может быть встроен в
<acronym>HTML</acronym>, его синтаксис заимствован из C, &java;
@ -4589,42 +4577,47 @@ DocumentRoot /www/someotherdomain.tld
порта <filename role="package">www/mod_php5</filename>.</para>
<para>Этот порт устанавливает и настраивает модули, необходимые
для поддержки динамических веб страниц. Убедитесь, что в файл
для поддержки динамических <acronym>PHP</acronym> веб страниц.
Убедитесь, что в файл
<filename>/usr/local/etc/apache/httpd.conf</filename> были
добавлены следующие строки:</para>
добавлены следующие секции:</para>
<programlisting>LoadModule php5_module libexec/apache/libphp5.so
AddModule mod_php5.c
<programlisting>LoadModule php5_module libexec/apache/libphp5.so</programlisting>
<programlisting>AddModule mod_php5.c
&lt;IfModule mod_php5.c&gt;
DirectoryIndex index.php index.html
&lt;/IfModule&gt;
&lt;IfModule mod_php5.c&gt;
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
&lt;/IfModule&gt;</programlisting>
<para>После этого просто вызовите команду
<para>Для загрузки модуля <acronym>PHP</acronym>
после этого просто вызовите команду
<command>apachectl</command> с параметром graceful:</para>
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
<para>Поддержка <acronym>PHP</acronym> в &os; построена по
модульному принципу. Если требуется поддержка какого-либо
расширения, администратор должен лишь установить
соответствующий порт и перезапустить
<application>Apache</application>, как показано выше.</para>
модульному принципу, поэтому базовая установка обладает очень
ограниченной функциональностью. Дополнительная функциональность
может быть легко добавлена при помощи порта <filename
role="package">lang/php5-extensions</filename>, управляющего набором
расширений <acronym>PHP</acronym> через меню, либо просто путем
установки дополнительных портов.</para>
<para>Например, для добавления поддержки
<application>MySQL</application> к <acronym>PHP</acronym>5,
просто установите
<filename role="package">databases/php5-mysql</filename>
и выполните следующую команду:</para>
просто установите порт
<filename role="package">databases/php5-mysql</filename>.</para>
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
<para>После установки новых расширений сервер
<application>Apache</application> должен быть рестартован,
чтобы изменения в конфигурации вступили в силу:</para>
<para>Это включит поддержку <application>MySQL</application>
в <acronym>PHP</acronym>.</para>
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
</sect4>
</sect3>
</sect2>
</sect1>
@ -4705,9 +4698,9 @@ AddModule mod_php5.c
<programlisting>swat stream tcp nowait/400 root /usr/local/sbin/swat</programlisting>
<para>Как описано в <xref linkend="network-inetd-hangup">,
<para>Как описано в <xref linkend="network-inetd-reread">,
после изменения настроек <application>inetd</application>
необходимо отправить HangUP сигнал.</para>
необходимо перечитать конфигурацию.</para>
<para>Как только <application>swat</application> был включен
<filename>inetd.conf</filename>, вы можете использовать
@ -4961,8 +4954,8 @@ Starting smbd.</screen>
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
<para>Как описано в <xref linkend="network-inetd-hangup">,
сигнал HangUP должен быть отправлен <application>inetd</application>
<para>Как описано в <xref linkend="network-inetd-reread">,
<application>inetd</application> должен перечитать конфигурацию
после того, как этот файл настройки был изменен.</para>
<para>Теперь вы можете войти на FTP сервер, введя:</para>