## Please edit system and help pages ONLY in the master wiki!
## For more information, please see MoinMoin:MoinDev/Translation.
##master-page:HelpOnInstalling/ApacheOnLinux
##master-date:Unknown-Date
#acl -All:write Default
#format wiki
#language ru
Эта страница описывает отдельные шаги, которые потребуется предпринять для создания экземпляра wiki, использующего MoinMoin на Linux с веб-сервером Apache. '''Вы должны уже выполнить [[../BasicInstallation_ru|../Базовую установку]]. ''' Установка на другие UNIX-ы, вроде FreeBSD, очень похожа.

Возможны два сценария. Вы можете быть администратором сервера (root), который может устанавливать и модифицировать файлы почти где угодно на машине и, что особенно важно, может модифицировать конфигурацию Apache. Вы можете также быть простым пользователем, который имеет право писать файлы только в свой домашний каталог и не в состоянии изменять главный конфигурационный файл Apache. Оба сценария обсуждаются ниже.

'''Содержание'''
<<TableOfContents>>

== Администратор (root) ==
Большинство дистрибутивов GNU/Linux идут с предустановленным Apache. Есть, однако, некоторые различия в расположении различных файлов Apache. Вам потребуется обратиться к руководству по вашему дистрибутиву, или задать вопрос на соответствующем форуме. В дальнейшем мы предположим, что раскладка системных файлов следующая:

 * `/etc/httpd/httpd.conf` - главный конфигурационный файл Apache
 * `/var/log/httpd/error_log` - лог-файл, содержащий сообщения об ошибках Apache

Некоторые дистрибутивы используют имя каталога `apache` вместо `httpd`, другие могут использовать ещё более жуткие  настройки.

=== Создание экземпляра wiki ===
Создание экземпляра wiki заключается в копировании файлов и установке соответствующих разрешений. Прежде чем вы сможете продолжать, вам потребуется узнать под каким пользователем и группой запускается ваш сервер Apache. Самый простой способ узнать это - выполнить такую команду:

{{{
> egrep "^User|^Group" /etc/httpd/httpd.conf
User wwwrun
Group nogroup
}}}

Здесь показаны типичные результаты: "`wwwrun.nogroup`". Также часто встречаются "`nobody.nogroup`", "`apache.apache`" и "`www-data.www-data`". Вы, конечно, можете использовать свои собственные. Запомните используемые у вас значения, поскольку они вам потребуются для установки прав на файлы.

После того, как вы собрали эту информацию, прочтите [[../WikiInstanceCreation_ru|../Создание экземпляра wiki]] и выполните шаги, описанные там.

=== Установка moin.cgi ===
Осталось скопировать последний файл, мост между Apache и Moin``Moin: CGI-скрипт, который Apache будет вызывать всякий раз, когда запрашивается страница wiki, и который будет вызывать все компоненты Moin``Moin для того, чтобы обрабатывать запросы. Фактически, вы можете поместить этот скрипт куда угодно (подправив конфигурацию путей к файлам Moin``Moin так, чтобы они соответствовали текущей раскладке вашей файловой системы), но ради простоты и безопасности, мы рекомендуем вам последовать указанным ниже инструкциям, если вы не считаете, что вам лучше знать.

Мы создадим подкаталог `cgi-bin` в каталоге экземпляра. Используя переменные среды, определённые в [[../WikiInstanceCreation_ru|../Создании экземпляра wiki]], выполните следующие команды:

{{{
> cd $WIKILOCATION/$INSTANCE
> mkdir cgi-bin
> cp $SHARE/server/moin.cgi cgi-bin
> chown -R $USER.$GROUP cgi-bin
> chmod -R ug+rx cgi-bin
> chmod -R o-rwx cgi-bin
}}}

=== Настройка moin.cgi ===
Когда `moin.cgi` запущен, он импортирует модуль Moin``Moin, который в свою очередь импортирует другие модули и файл конфигурации. Модули Moin``Moin обычно всегда без проблем находятся в правильно настроенной (как описано в [[../BasicInstallation_ru|../Базовой установке]])системе, а вот файл конфигурации может не быть найден. Отредактируйте скрипт `moin.cgi`, чтобы исправить это. Добавьте эти строки ближе к началу файла:

{{{
import sys
sys.path.insert(0, '..')
}}}

Вы можете также использовать абсолютное имя каталога, содержащего файл `wikiconfig.py`, вместо `'..'`.

=== Настройка Apache ===
Сейчас, когда каждый файл занял своё место (надолго ли это, зависит от файловой системы), нам необходимо сконфигурировать Apache так, чтобы он давал доступ только к верным файлам, но не к остальным. Однако, поскольку конфигурация Apache по умолчанию варьируется в зависимости от используемого вами дистрибутива, а администраторы часто дополняют и изменяют её, мы не можем дать точных инструкций, охватывающих все варианты. Вместо этого мы сначала опишем в общих чертах, что нужно сделать, а потом дадим некоторое количество определённых строк, которые вам нужно будет добавить в соответствующее место конфигурационного файла Apache.

Ваш Apache должен быть настроен так, чтобы:

 * Доступ к каталогу вашего экземпяра был запрещён (нормально установленный Apache действительно должен запретить доступ ко всему серверу и лишь потом разрешить его для некоторых определённых каталогов).
 * Существовал алиас, настроенный так, чтобы перенаправлять запросы к `/wiki/` (в URL) на каталог `htdocs` (в каталоге `share`, как это описано в конце [[../BasicInstallation_ru|../Базовой установки]])
 * Существовал скриптовый алиас, настроенный так, чтобы перенаправлять запросы откуда вы пожелаете (мы рекомендуем использовать имя вашего экземпляра wiki, например, `/mywiki`) на CGI-скрипт, который вы только что скопировали.

Следующие команды добавят две строки в конец вашего файла конфигурации Apache.Эти строки охватывают только два последних элемента из приведённого выше списка. Первое требование вам придётся проверить самостоятельно (слишком много различий в разных дистрибутивах Linux). Не забудьте, что вам нужно будет переместить эти строки в соответствующее место в вашем файле конфигурации -- скорее всего, рядом с похожими строками.

{{{
> echo "" >>/etc/httpd/httpd.conf
> echo "Alias /wiki/ \"$SHARE/htdocs/\"" >>/etc/httpd/httpd.conf
> echo "ScriptAlias /mywiki \"$WIKILOCATION/$INSTANCE/cgi-bin/moin.cgi\"" >>/etc/httpd/httpd.conf
}}}

Алиас для `htdocs` вам нужно определить только один раз. Вам потребуется определять разные скриптовые алиасы для каждого экземпляра wiki, который вы захотите запустить.

=== Настройка MoinMoin ===
И, наконец, проверьте, что файл `wikiconfig.py` в каталоге вашего экземпляра содержит правильные пути к префиксу htdocs, каталогу данных экземпляра, и каталогу underlay экземпляра. Вы можете использовать относительные пути для каталогов, но не забывайте, что они берутся относительно CGI-скрипта, а не файла конфигурации! Вы также можете использовать абсолютные пути и избавить себя от некоторого количества головной боли.

Вот настройки, которые вам нужно внести в файл конфигурации, если вы решили последовать нашим указаниям:

{{{
    data_dir = '../data/'
    data_underlay_dir = '../underlay/'
    url_prefix = '/wiki'
}}}

Описание других настроек, которые вы можете пожелать изменить, можно найти в конце [[../WikiInstanceCreation_ru|../Создания экземпляра wiki]].

=== Проверка wiki ===
Теперь всё уже должно хорошо работать. Настало время '''перезапустить сервер Apache''' (обычно с помощью "`/etc/init.d/apache restart`", иногда - "`apachectl restart`") и проделать следующие шаги:

 * Запустите ''Moin``Moin CGI Diagnosis'': подсоединитесь к "`http://127.0.0.1/mywiki?action=test`" (или к имени и порту, которые вы указали в файле конфигурации Apache). Проверьте, правильна ли отображаемая информация. Проверьте, что с каталогами, перечисленными в ''Checking directories...'' всё ''OK''.
 * Обратитесь к вашей новой wiki по URL "`http://127.0.0.1/mywiki/`" (или по имени и порту, которые вы указали в файле конфигурации Apache). Вы должны увидеть Front``Page.
 * Если всё нормально, попробуйте что-нибудь отредактировать и сохранить изменения.
 * Если всё работает, посмотрите, отобразились ли ваши правки на странице Recent``Changes.
 * Если вы это увидели, поздравляем - ваша новая wiki работает! :)

Если что-то пошло не так, смотрите Устранение проблем в конце этой страницы.

=== Хитрости Apache ===
Для более серьёзной настройки и некоторых хитростей см. HelpMiscellaneous.

== Простой пользователь (установка в домашний каталог) ==
На машинах, разделённых между многими людьми, простые пользователи обычно не имеют доступа к аккаунту root, не могут модифицировать файл `httpd.conf`, и не могут копировать файлы в общесистемные каталоги `cgi-bin` и `htdocs`. В этом случае Apache может быть настроен так, что каждый пользователь может содержать веб-сайт в домашнем каталоге его/её аккаунта, используя директиву `UserDir`. Если администратор машины решит сделать так, то все URL, начинающиеся с "`/~username`" будут перенаправлены на подкаталог в домашнем каталоге пользователя, куда они (пользователи) имеют доступ на запись и могут установить Moin``Moin.

В качестве примера, мы рассмотрим случай пользователя с именем "`mm`". Разумеется, дальше везде, где вы увидите "`mm`", вы должны заменять его на своё собственное имя пользователя.

=== Убедитесь, что /~username работает ===
Установка в домашний каталог может работать только в том случае, если администратор (root) разрешит её. Так что, первым шагом будет, естественно, проверка, работает ли это. Обычно, Apache настроен так, что подкаталог `public_html` в домашнем каталоге используется как корень веб-сайта. Так что, вначале мы проверим, существует ли такой каталог.

{{{
> ls -ld ~/public_html
drwxr-xr-x   2 mm       users        4096 Nov 30 00:29 public_html
}}}

Если каталог не существует, создайте его, и убедитесь, что из него можно читать и в него можно входить через веб-сервер.

{{{
> mkdir public_html
> chmod a+rx public_html
> ls -ld ~/public_html
drwxr-xr-x   2 mm       users        4096 Nov 30 00:35 public_html
}}}

Теперь проверьте, что URL "`/~mm`" работает:

{{{
> lynx -error_file=/dev/stderr -dump http://localhost/~mm/ >/dev/null
URL=http://localhost/~mm/ (GET)
STATUS=HTTP/1.1 200 OK
}}}

Если вы получили код ответа "`200 OK`", значит всё работает и можно переходить к следующей проверке. Если вы получили ответ "`403 Forbidden`" или "`404 Not Found`", то, возможно, что-то не так с вашим каталогом, или такие вещи не были разрешены вашим администратором.

 * Проверьте разрешения для вашего домашнего каталога (`~`) и вашего каталога `public_html`. Первый должен как минимум заканчиваться на "`--x`", а второй, как мы уже говорили выше, на "`r-x`".
 * Также возможно, что администратор задал другое имя для каталога вашего личного веб-сайта. "`public_html`" просто употребляется повсеместно, но на самом деле там может быть что угодно. Нет другого пути узнать это, кроме как спросить у самого администратора (root).
 * Наконец, если возможность создания личного веб-сайта запрещена, может быть вы попросите администратора разрешить её?

После того, как вы проверили возможность читать файлы в каталоге, вам нужно проверить, можете ли вы аткже исполнять CGI-скрипты в этом каталоге. Воспользуйтесь следующими командами, чтобы создать в подходящем месте простенький simple CGI-скрипт:

{{{
> mkdir -p ~/public_html/cgi-bin
> cat > ~/public_html/cgi-bin/test.cgi
#!/bin/sh
echo Content-Type: text/plain
echo
echo "CGI scripts work"
<CTRL-D>
> chmod a+rx ~/public_html/cgi-bin/test.cgi
> lynx -dump http://localhost/~jh/cgi-bin/test.cgi
CGI scripts work
}}}

Если вы получаете что-то другое, а не "`CGI scripts work`", значит что-то пошло не так. Проверьте права на каталог как выше, попробуйте другое имя (или спросите об этом). Горькой правдой может оказаться новость, что вам не позволено исполнять CGI-скрипты. Тогда попросите администратора (root) дать вам такие права.

После того, как вы получите эти права, вы можете устанавливать свой экземпляр wiki в каталог `public_html`. :)

=== Создание экземпляра wiki ===
Создание экземпляра wiki включает копирование файлов из одного места в другое и уставновку соответствующих прав. Прочтите [[../WikiInstanceCreation_ru|../Создание экземпляра wiki]] и выполните описанные там шаги.

=== Установка файлов htdocs ===
Веб-верверу необходим доступ к этим файлам, так что вам нужно скопировать их в каталог "`public_html`". Сделайте вот так:

{{{
> cd ~/public_html
> cp -R ~/share/moin/htdocs wiki
> chmod -R a+rX wiki
}}}

=== Установка moin.cgi ===
Осталось скопировать последний файл, мост между Apache и Moin``Moin: CGI-скрипт, который Apache будет вызывать всякий раз, когда запрашивается страница wiki, и который будет вызывать все компоненты Moin``Moin для того, чтобы обрабатывать запросы. Вам нужно поместить этот файл в каталог, для которого разрешено исполнение CGI-скриптов. По умолчанию, вот это должно сработать:

{{{
> cd ~/public_html
> mkdir cgi-bin
> cp $SHARE/server/moin.cgi cgi-bin
> chmod -R a+rx cgi-bin
}}}

=== Настройка moin.cgi ===
Когда `moin.cgi` запущен, он импортирует модуль Moin``Moin, который в свою очередь импортирует другие модули и файл конфигурации. Поскольку всё устанавливалось в ваш домашний каталог, скорее всего, ничего из этого не будет найдено. Отредактируйте скрипт `moin.cgi`, чтобы исправить это. Добавьте эти строки ближе к началу файла:

{{{
import sys
sys.path.insert(0, '/home/mm/lib/python2.3')
sys.path.insert(0, '/home/mm/lib/python2.3/site-packages')
sys.path.insert(0, '/home/mm/share/moin/mywiki')
}}}

Разумеется, вам нужно подогнать пути к вашей ситуации. Первые две строчки указывают, где находятся модули Moin``Moin , последняя указывает где находится файл `wikiconfig.py`.

'''Примечание:''' Вам также может понадобиться отредактировать первую строку файла, чтобы она указывала на правильную версию Python. Обычно, значение по умолчанию работает, но иногда строка наподобие "`#! /usr/bin/python2.3`" может помочь вам, если это значение работать не будет.

'''Примечание 2:''' In this file there is a line reading {{{request = RequestCGI()}}}. If you have a complex mod_rewrite case, you might want to add {{{properties = {'script_name': '/mywiki'} }}} in the parenthesis. This will let MoinMoin generate URLs that start with {{{/mywiki}}} and not the path that the webserver passed to MoinMoin:

{{{
def handle_request(req, env, form):
    request = RequestCGI(req, env, form, properties = {'script_name': '/mywiki'})
    request.run()
}}}

=== Настройка MoinMoin ===
Наконец, проверьте, что файл `wikiconfig.py` в каталоге экземпляра содержит правильные пути к каталогу htdocs и каталогам экземпляра data и underlay. Вы можете использовать относительные пути для этих каталогов, но обратите внимание, что они берутся относительно CGI-скрипта, а не файла конфигурации! Вы также можете использовать абсолютные пути и избавить себя от некоторого количества головной боли.

{{{
    data_dir = '/home/mm/share/moin/mywiki/data/'
    data_underlay_dir = '/home/mm/share/moin/mywiki/underlay/'
    url_prefix = '/~mm/wiki'
}}}

=== Проверка wiki ===
Теперь всё уже должно хорошо работать. Настало время проделать следующие шаги:

 * Запустите ''Moin``Moin CGI Diagnosis'': {{{> lynx -dump http://localhost/~mm/cgi-bin/moin.cgi?action=test}}}
 * Если это работает, обратитесь к вашей новой wiki по URL "`http://127.0.0.1/~mm/cgi-bin/moin.cgi`". Вы должны увидеть Front``Page.
 * Если всё нормально, попробуйте что-нибудь отредактировать и сохранить изменения.
 * Если всё работает, посмотрите, отобразились ли ваши правки на странице Recent``Changes.
 * Если вы это увидели, поздравляем - ваша новая wiki работает! :)

Если что-то пошло не так, смотрите Устранение проблем в конце этой страницы.

== Устранение проблем ==
См. также [[../TroubleShooting_ru|../Устранение проблем]] для тривиальных случаев.

Первое, что нужно сделать, когда ваша wiki не работает так, как предполагалось, это выполнить команду "`tail /var/log/httpd/error_log`", показывающую самые свежие ошибки. Обычно, вы получаете подсказку, что идёт не так, к примеру, неподходящие права системных файлов.

=== Добавление прав для обслуживания каталога htdocs ===
В некоторых (нормальных) дистрибутивах Linux (вроде SuSE 9.0) обслуживание каталогов, отличных от корня сервера (document-root) "`/srv/www/htdocs`" с помощью Apache по умолчанию выключено из поображений безопасности в "`/etc/httpd/httpd.conf`" (или для Apache2 "`/etc/apache2/httpd.conf`"):

{{{
# запрет доступа ко всей файловой системе по умолчанию
<Directory />
  Options None
  AllowOverride None
  Order deny,allow
  Deny from all
</Directory>
}}}

Чтобы разрешить Apache обслуживать каталоги извне корня сервера вам нужно добавить эти строки в "`/etc/httpd/httpd.conf`" (в SuSE рекомендуется создать новый файл "`http.conf.local`" и включить его в "`/etc/sysconfig/apache2`"):

{{{
Alias /wiki/ "/usr/share/moin/htdocs/"
<Directory "/usr/share/moin/htdocs/">
   Order deny,allow
   Allow from all
</Directory>

ScriptAlias /mywiki "/usr/share/moin/mywiki/cgi-bin/moin.cgi"
<Directory "/usr/share/moin/mywiki/cgi-bin">
   Order deny,allow
   Allow from all
</Directory>
}}}

Конечно, вам нужно адаптировать пути к вашей конкретной ситуации.
