Python@TW: 會眾| IRC| Planet| 郵件列表| 聯絡我們

Эта страница описывает отдельные шаги, которые потребуется предпринять для создания экземпляра wiki, использующего MoinMoin на Linux с веб-сервером Apache. Вы должны уже выполнить ../Базовую установку. Установка на другие UNIX-ы, вроде FreeBSD, очень похожа.

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

Содержание

Администратор (root)

Большинство дистрибутивов GNU/Linux идут с предустановленным Apache. Есть, однако, некоторые различия в расположении различных файлов 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". Вы, конечно, можете использовать свои собственные. Запомните используемые у вас значения, поскольку они вам потребуются для установки прав на файлы.

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

Установка moin.cgi

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

Мы создадим подкаталог cgi-bin в каталоге экземпляра. Используя переменные среды, определённые в ../Создании экземпляра 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 запущен, он импортирует модуль MoinMoin, который в свою очередь импортирует другие модули и файл конфигурации. Модули MoinMoin обычно всегда без проблем находятся в правильно настроенной (как описано в ../Базовой установке)системе, а вот файл конфигурации может не быть найден. Отредактируйте скрипт moin.cgi, чтобы исправить это. Добавьте эти строки ближе к началу файла:

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

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

Настройка Apache

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

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

Следующие команды добавят две строки в конец вашего файла конфигурации 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'

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

Проверка wiki

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

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

Хитрости Apache

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

Простой пользователь (установка в домашний каталог)

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

В качестве примера, мы рассмотрим случай пользователя с именем "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", то, возможно, что-то не так с вашим каталогом, или такие вещи не были разрешены вашим администратором.

После того, как вы проверили возможность читать файлы в каталоге, вам нужно проверить, можете ли вы аткже исполнять 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 включает копирование файлов из одного места в другое и уставновку соответствующих прав. Прочтите ../Создание экземпляра wiki и выполните описанные там шаги.

Установка файлов htdocs

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

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

Установка moin.cgi

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

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

Настройка moin.cgi

Когда moin.cgi запущен, он импортирует модуль MoinMoin, который в свою очередь импортирует другие модули и файл конфигурации. Поскольку всё устанавливалось в ваш домашний каталог, скорее всего, ничего из этого не будет найдено. Отредактируйте скрипт 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')

Разумеется, вам нужно подогнать пути к вашей ситуации. Первые две строчки указывают, где находятся модули MoinMoin , последняя указывает где находится файл 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

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

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

Устранение проблем

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

Первое, что нужно сделать, когда ваша 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>

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