Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
hgbook.pdf
Скачиваний:
50
Добавлен:
17.03.2015
Размер:
3.15 Mб
Скачать

Взаимодействие с людьми

Если у вас нет сильного желания настраивать конфигурацию, снова и снова, или насущной необходимости размещать собственные услуги, вы можете попробовать одну из публичных услуг хостинга, которые я упоминал ранее.

6.6.1. Список проверок конфигурации веб-сервера

Прежде чем вы продолжите, обязательно уделите пару минут для проверки некоторых настроек вашей системы.

1.Имеется ли в вашей системе установленный web-сервер? Mac OS X и разные дистрибутивы Linux поставляются с Apache, но во многих других операционных системах веб-серверы могут быть не установлены.

2.Если web-сервер установлен, запущен ли он? В большинстве систем, даже если он есть, он может быть отключен по умолчанию.

3.Позволяет ли конфигурация вашего сервера выполнять программы CGI в директории, где вы планируете это делать? Большинство серверов по умолчанию явно запрещают запуск CGI программ.

Если ваш web-сервер не установлен или у вас нет достаточного опыта конфигурирования Apache, вам следует использовать web-сервер lighttpd вместо Apache. Apache известен за причудливость и запутаность конфигурации. Хотя lighttpd менее функционален, чем Apache, большинство из его недостатков не относятся к обслуживанию хранилищ Mercurial. И с lighttpd несомненно намного легче начать работу, чем c Apache.

6.6.2. Базовая конфигурация CGI

Обычно в Unix-системах поддиректория web-контента пользователя имеет имя public_html и расположена в домашней директории. Файл с именем foo в этой директории будет доступен по ссылке http://

www.example.com/username/foo.

Для начала работы найдите скрипт hgweb.cgi, который должен быть в вашей копии Mercurial. Если вы не можете быстро найти его локальную копию в вашей системе, просто скачайте его из основного хранилища Mercurial http://

www.selenic.com/repo/hg/raw-file/tip/hgweb.cgi.

Вам следует скопировать данный скрипт в вашу директорию public_html и задать ему права на исполнение.

cp .../hgweb.cgi ~/public_html chmod 755 ~/public_html/hgweb.cgi

Аргумент 755 команды chmod — установка прав на выполнение скрипта; он описывает, что скрипт может читаться и выполняться всеми пользователями, а права на запись у «группы» и «других» пользователей не установлены. Если бы Вы оставили всем права на запись, то модуль suexec сервера Apache скорее всего отказался бы выполнять скрипт. suexec так же требует, чтобы директория, в которой находится скрипт, не была доступна для записи другим пользователям.

chmod 755 ~/public_html

6.6.2.1. Где могут возникнуть проблемы?

Как только вы скопировали CGI скрипт, попробуйте перейти браузером по адресу http://myhostname/ ~myuser/hgweb.cgi, но не падайте духом перед неудачными попытками. Вероятней всего вы не сможете открыть ссылку, и на это есть множество причин. На самом деле вы спотыкаетесь на одной из ошибок, приведенных ниже, поэтому, пожалуйста, прочтите внимательно. Это те ошибки, с которыми я сталкивался в Fedora 7 с только что установленным Apache и пользовательским аккаунтом, который я специально создал для этого.

Ваш веб-сервер может иметь настройки, запрещающие пользовательский веб-контент. При использовании Apache найдите в его конфигурационном файле директиву UserDir. Если она отсутствует, то отображение пользовательских директорий запрещено. В противном случае следующее за UserDir строковое значение определяет имя директории в домашнем каталоге пользователя, контент из которой будет отдаваться Apache'м.

Например, public_html.

69

Взаимодействие с людьми

Ваши настройки безопасности могут быть слишком ограничивающими. Web сервер должен иметь возможность доступа к вашей домашней директории и вложенные в public_html директории, а также файлам в них. Вот рецепт, чтобы помочь вам сделать соотвествующие настройки безопасности.

chmod 755 ~

find ~/public_html -type d -print0 | xargs -0r chmod 755 find ~/public_html -type f -print0 | xargs -0r chmod 644

Другая возможная проблема с правами состоит в том, что вы можете получить пустое окно, когда пытаетесь загрузить скрипт. В этом случае очень похоже что ваши настройки безопасности также слишком ограничивают выполнение подсистемой запуска скриптов Apache скриптов у которых, к примеру, стоят права записи для группы или всех пользователей.

Ваш web сервер может быть сконфигурирован с отключенными опциями выполнения CGI программ. Вот файл пользовательской конфигурации по умолчанию из моей ОС Fedora:

<Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit

Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS>

Order allow,deny Allow from all

</Limit>

<LimitExcept GET POST OPTIONS> Order deny,allow Deny from all

</LimitExcept>

</Directory>

Если вы обнаружите похожую на эту группу Directory в вашей конфигурации Apache, добавьте ExecCGI в конец директивы Options, если она отсуствует и перезапустите web сервер.

Если при открытии через web браузер Ваш Apache выдаёт исходный текст CGI скрипта, вместо результатов его выполнения, то Вам надо добавить или раскомментировать (если уже есть) такую директиву:

AddHandler cgi-script .cgi

Следующая возможная проблема, которую вам придется решить, может быть красочный вывод трассировки Python, который будет говорить о том что он не может импортировать связанный с mercurial модуль. Это уже прогресс! Теперь сервер пытается выполнить CGI программу. Это ошибка вероятно произойдет, если вы проведете инсталяцию Mercurial для себя, вместо версии установки в систему.Помните что ваш web сервер запускает ваши CGI программы без каких-либо переменных среды, которые присуствуют в интерактивном сеансе. Если случилась такая ошибка, отредактируйте ваш hgweb.cgi файл и следйуте указаниям как установить внутри него правильную переменную среды PYTHONPATH.

Вконце-концов вы увидите другую трассировку Python, которая будет жаловаться что не может найти /path/ to/repository. Отредактируйте ваш hgweb.cgi скрипт и замените в нем строку /path/to/repository на полный путь к репозиторию, который вы хотите отобразить в web сервере.

Вэтом месте, когда вы попробуете перезагрузить web страничку, вы должны увидеть простой HTML интерфейс истории вашего репозитория. Фуф!

6.6.2.2. Настройка lighttpd

Чтобы быть исчерпывающим в моих экспериментах, я попробовал настроить всё более популярный lighttpd веб сервер для обслуживания того же репозитория, который я выше описывал с Apache. Я уже преодолел все проблемы выделенные с Apache, многие из которых не связаны с сервером. В результате я справедливо убедился в правильности разрешений на мои файлы и директории, и в том, что мой скрипт hgweb.cgi был надлежаще исправлен.

Раз у меня работал Apache, я смог быстро заставить lighttpd обслуживать репозиторий (другими словами,

даже если вы попробуете

использовать lighttpd, вам придётся читать раздел про Apache).

Для начала

я отредактировал секцию

mod_access в его конфигурационном файле, чтобы включить

mod_cgi и

70

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]