## 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. Оба сценария обсуждаются ниже. '''Содержание''' <> == Администратор (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" > 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`"): {{{ # запрет доступа ко всей файловой системе по умолчанию Options None AllowOverride None Order deny,allow Deny from all }}} Чтобы разрешить Apache обслуживать каталоги извне корня сервера вам нужно добавить эти строки в "`/etc/httpd/httpd.conf`" (в SuSE рекомендуется создать новый файл "`http.conf.local`" и включить его в "`/etc/sysconfig/apache2`"): {{{ Alias /wiki/ "/usr/share/moin/htdocs/" Order deny,allow Allow from all ScriptAlias /mywiki "/usr/share/moin/mywiki/cgi-bin/moin.cgi" Order deny,allow Allow from all }}} Конечно, вам нужно адаптировать пути к вашей конкретной ситуации.