= Руководство по установке Trac для версии 1.2 [[TracGuideToc]] [[TranslatedPages]] Trac написан на языке программирования Python и использует базы данных [http://sqlite.org/ SQLite], [http://www.postgresql.org/ PostgreSQL] или [http://mysql.com/ MySQL]. Для генерации HTML, Trac использует систему шаблонов [http://genshi.edgewall.org/ Genshi]. Trac может быть локализован, и скорее всего перевод на ваш язык уже доступен. Если вы хотите использовать интерфейс Trac на другом языке, убедитесь в том, что у вас установлен дополнительный пакет [#OtherPythonPackages Babel]. Обратите также ваше внимание на дополнительные шаги, которые потребуются для поддержки локализации в разделе [#InstallingTrac Installing Trac] ниже. При отсутствии пакета Babel, вы получите только английскую версию. Если вас интересует поддержка новых переводов Trac на другие языки или поддержка существующих переводов, ознакомьтесь с документацией [trac:wiki:TracL10N TracL10N]. Далее приведены общие инструкции по установке и настройке Trac. Несмотря на то что вы можете найти инструкции по установке Trac на конкретные платформы в разделе [trac:TracInstallPlatforms TracInstallPlatforms], мы советуем '''предварительно ознакомится с этими общими инструкциями''' для лучшего понимания описанных в них задач. [[PageOutline(2-3,Этапы установки,inline)]] == Зависимости === Обязательное зависимости Перед установкой Trac, вам необходимо установить следующие пакеты: * [http://www.python.org/ Python] версии >= 2.6 и < 3.0 (обратите внимание, мы не поддерживаем Python 2.5 с этого выпуска) * [http://peak.telecommunity.com/DevCenter/setuptools setuptools] версии >= 0.6 * [http://genshi.edgewall.org/ Genshi] версии >= 0.6 Вам также необходима ''система управления базами данных'' и соответствующие библиотеки для Python (python bindings). Данная версия Trac поддерживает СУБД SQLite, PostgreSQL и MySQL. ===== Для базы SQLite #ForSQLite Так как вы должны использовать Python 2.6 или 2.7, у вас уже установлены все требуемые для SQLite библиотеки имеющиеся в стандартной поставке Python (модуль `sqlite3`). При желаниии вы можете установить более новую версию [https://pypi.org/project/pysqlite pysqlite] чем та, что поставляется в дистрибутиве Python. Для более подробной информации, смотрите [trac:PySqlite#ThePysqlite2bindings PySqlite]. ===== Для базы PostgreSQL #ForPostgreSQL Вам нужно установить СУБД и соответствующую библиотеку Python: * [http://www.postgresql.org/ PostgreSQL], версия 8.0 или новее. * [http://pypi.python.org/pypi/psycopg2 psycopg2], версия 2.0 или новее. Для более подробной информации, смотрите [trac:DatabaseBackend#Postgresql Серверы СУБД]. ===== Для базы MySQL Trac теперь может работать с MySQL, если вы будете следовать инструкциям. * [http://mysql.com/ MySQL] версии 5.0 или новее * [http://sf.net/projects/mysql-python MySQLdb] версии 1.2.2 или новее '''Очень''' важно внимательно прочитать страницу [trac:MySQLdb] перед созданием базы данных. === Опциональные зависимости ===== Subversion * [http://subversion.apache.org/ Subversion], 1.6 или новее и '''''соответствующие''''' библиотеки Python. [http://subversion.apache.org/packages.html Скомпилированные SWIG библиотеки] доступны для различных платформ. (Удачи в поисках скомпилированных SWIG библиотек для любого Windows пакета. TracSubversion содержит ссылку на [http://alagazam.net Algazam], где есть библиотеки, работающие с Python 2.6.) Для информации о возникающих проблемах обратитесь к странице [trac:TracSubversion#Troubleshooting TracSubversion] {{{#!div style="border: 1pt dotted; margin: 1em" **Примечание:** * Заметьте, что Trac '''не''' использует [http://pysvn.tigris.org/ PySVN], он ещё не работает с новыми `ctype`-style bindings. * При использовании Subversion, Trac должен быть установлен на '''той же машине'''. Удаленные репозитарии в данный момент [trac:ticket:493 не поддерживаются]. }}} ==== Git Поддерживается [https://git-scm.com/ Git] версии 1.5.6 или новее. Более подробная информация доступна на странице [trac:TracGit]. ==== Другие системы контроля версий Поддержка для других систем контроля версий предоставляется по средствам сторонних плагинов. Смотрите [trac:PluginList#VersionControlSystems] или [trac:VersionControlSystem]. ==== Web-сервер Web-сервер не является обязательным требованием, так как Trac предоставляется вместе со встроенным сервером, подробнее смотрите ниже в разделе [#RunningtheStandaloneServer Запуск встроенного сервера]. В противном случае вы можете настроить Trac для запуска в любом из следующих окружений: * [https://httpd.apache.org/ Apache] с модулями * [https://github.com/GrahamDumpleton/mod_wsgi mod_wsgi], смотрите [wiki:TracModWSGI] и [https://code.google.com/p/modwsgi/wiki/IntegrationWithTrac ModWSGI IntegrationWithTrac]. * [http://modpython.org/ mod_python 3.5.0], смотрите TracModPython * [http://www.fastcgi.com/ FastCGI]-совместимый web-сервер (смотрите TracFastCgi) * [https://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html AJP]-совместимый web-сервер (смотрите [trac:TracOnWindowsIisAjp TracOnWindowsIisAjp]) * Microsoft IIS с FastCGI и FastCGI-to-WSGI шлюзом (смотрите [trac:CookBook/Installation/TracOnWindowsIisWfastcgi IIS с FastCGI]) * CGI-совместимый web-сервер (смотрите TracCgi), '''но использование Trac в качестве cgi-скрипта сильно обескураживает''', лучше используйте одну из предыдущих опций. ==== Прочие пакеты Python * [http://babel.edgewall.org Babel], версия 0.9.6 или >= 1.3, необходим для поддержки переводов * [http://docutils.sourceforge.net/ docutils], версия >= 0.3.9 для WikiRestructuredText. * [http://pygments.org Pygments] для [подсветки синтаксиса TracSyntaxColoring]. * [http://pytz.sf.net pytz] для получения полного списка временных зон, иначе Trac выдаст ограниченный список временных зон в соответствии со своей внутренней реализацией. {{{#!div style="border: 1pt dotted; margin: 1em" **Внимание**: Доступные версии данных зависимостей не обязательно взаимозаменяемы, поэтому обратите внимание на номера версий. Если у вас возникли проблемы с работой Trac, пожалуйста, ещё раз проверьте все зависимости, прежде чем обращаться за помощью в [trac:MailingList] или [trac:IrcChannel]. }}} Пожалуйста обратитесь к документации этих пакетов, чтобы найти информацию каким наилучшим способом они могут быть установлены. Дополнительно, большинство из [trac:TracInstallPlatforms платформо-специфических инструкций] так же описывают установку этих зависимостей. Однако имейте в виду, что информация там ''вероятно, касается более старых версий Trac, чем та, которую вы устанавливаете''. == Установка Trac Инструмент командной строки [TracAdmin trac-admin], используется для создания и поддержки [TracEnvironment проектного окружения] ,а также [TracStandalone tracd] автономный сервер устанавливаются вместе с Trac. Существует несколько способов установки Trac. В данном руководстве предполагается, что у вас есть права пользователя `root` или возможность использовать утилиту `sudo`. Umask `0002` должна использоваться для обычной установки на Unix-подобные платформы. === Использование `easy_install` Trac может быть установлен из PyPI или Subversion репозитария с помощью утилит пакета [https://pypi.org/project/setuptools setuptools]. Вот несколько примеров: - Установка последней стабильной версии Trac: {{{#!sh $ easy_install Trac }}} - Установка последней версии находящейся в разработке: {{{#!sh $ easy_install https://download.edgewall.org/trac/Trac-latest-dev.tar.gz }}} Обратите внимание, что в этом случае у вас не будет возможности запустить локализованную версию Trac; либо используйте стабильную версию, либо выполните установку из исходных файлов Более подробная информация доступна на странице [trac:wiki:setuptools setuptools]. {{{#!div style="border: 1pt dotted; margin: 1em" **Предупреждение Setuptools:** Если ваша версия setuptools находится в диапазоне от 5.4 до 5.6, переменная окружения `PKG_RESOURCES_CACHE_ZIP_MANIFESTS` должна быть установлена, воизбежание существенной потери производительности. Подробнее смотрите [#DeployingTrac Deploying Trac]. }}} === Использование `pip` 'pip' это замена easy_install, которая очень полезна для быстрой установки пакетов Python. Для установки и запуска Trac менее чем за 5 минут: Предполагаем что вы хотите видеть результат работы pip в `/opt/user/trac` {{{#!sh $ pip install trac psycopg2 }}} или {{{#!sh $ pip install trac mysql-python }}} Убедитесь, что заголовочные файлы, характерные для вашей ОС, доступны pip для выполнения автоматической сборки библиотек PostgreSQL (`libpq-dev`) или MySQL (`libmysqlclient-dev`). pip автоматически распознает все необходимые зависимости (такие как Genshi, pygments и т.д.), скачает последние версии пакетов с pypi.python.org и самостоятельно установит их в `/opt/user/trac`. Все команды (`tracd`, `trac-admin`) будут доступны из `/opt/user/trac/bin`. Они так же могут использоваться для `mod_python` (при использовании директивы `PythonHandler`) и `mod_wsgi` (при использовании директивы `WSGIDaemonProcess`). Дополнительно, с помощью pip вы можете установить некоторые подключаемые модули Trac (перечисленные [https://pypi.python.org/pypi?:action=browse&show=all&c=516 здесь]) === Сборка из исходных файлов Так же доступна типичная для Python установка из базовой директории с исходными файлами. Вы можете получить архивы .tar.gz или .zip соответствующей версии (например, `Trac-1.0.tar.gz`) на странице [trac:TracDownload], или можете скачать исходные файлы непосредственно из репозитария. Смотрите подробнее [trac:TracRepositories#OfficialSubversionrepository TracRepositories]. {{{#!sh $ python ./setup.py install }}} ''Вам нужны права root или эквивалентные для выполнения этого шага.'' Данная команда выполнит байт-компиляцию исходного кода на Python и установить его как файл .egg или каталог в директорию `site-packages` вашего дистрибутива Python. Файл .egg будет также содержать все стандартные ресурсы, необходимые Trac, такие как `htdocs` и `templates`. Если вы выполняете установку из исходных файлов и хотите добавить в Trac поддержку других языков, убедитесь что пакет Babel установлен. Только после этого, выполните команду `install` (или просто выполните команду `install` повторно если до этого пакет Babel не был у вас установлен): {{{#!sh $ python ./setup.py install }}} Кроме того, вы можете выполнить команду `bdist_egg` и скопировать файл .egg из каталога `dist/` в любое расположение на ваш выбор, а так же можете создать установочный файл Windows (`bdist_wininst`). === Использование установщика В операционной системе Windows, Trac может быть установлен с помощью стандартного установщика .exe, доступного на странице [trac:TracDownload]. Установочные файлы доступны для обеих архитектур Python 32- и 64-битной. Убедитесь что установочные файлы соответствуют вашей архитектуре Python. === Использование менеджера пакетов Trac может быть доступен в репозитарии пакетов для вашей системы. В любом случае примите к сведению, что версия предоставляемая вашим менеджером пакетов, скорее всего не будет последним доступным релизом. === Расширенные опции `easy_install` Для установки Trac в нестандартное расположение, или для получения информации по дополнительным параметрам установки, выполните команду: {{{#!sh $ easy_install --help }}} Так же смотрите [https://docs.python.org/2/install/index.html Установка Модулей Python] для подробной информации. Особенно вас может заинтересовать опция: {{{#!sh $ easy_install --prefix=/path/to/installdir }}} или, при установке Trac в операционной системе Mac OS X: {{{#!sh $ easy_install --prefix=/usr/local --install-dir=/Library/Python/2.6/site-packages }}} {{{#!div style="border: 1pt dotted; margin: 1em" **Примечание Mac OS X:** В Mac OS X 10.6, запуск команды `easy_install trac` выполнит установку в каталоги `/usr/local` и `/Library/Python/2.6/site-packages` по-умолчанию. Команды `tracd` и `trac-admin` будут расположены в `/usr/local/bin`, а библиотеки и зависимости Trac в `/Library/Python/2.6/site-packages`, который Apple предпочитает в качестве хранилища по-умолчанию, для сторонних пакетов и приложений Python. }}} == Создание окружения проекта [TracEnvironment Окружение Trac] - это серверное окружение, в котором Trac хранит информацию такую как вики страницы, карточки, отчёты, настройки и т.д. Окружение - это по существу директория, в которой содержится [TracIni конфигурационный файл], а также другие файлы и директории. Новое окружение создаётся с помощью [TracAdmin trac-admin]: {{{ $ trac-admin /path/to/myproject initenv }}} Вам будет предложено ввести информацию, необходимую для создания окружения: имя вашего проекта и [TracEnvironment#DatabaseConnectionStrings строку подключения к базе данных]. Если вы не уверены в том, какую информацию нужно вводить в качестве параметров, просто нажмите клавишу ``, чтобы использовать значение по-умолчанию. Использование строки соединения с базой данных по-умолчанию, работает всегда, так как SQLite у вас всегда установлен. Для других [trac:DatabaseBackend СУБД] необходимо заранее разработать план и иметь установленную и полностью рабочую базу данных к этому моменту. Также примите к сведению, что значения введенные на этом шаге, могут быть изменены позднее, при помощи TracAdmin или непосредственно, редактированием файла конфигурации [TracIni conf/trac.ini]. {{{#!div style="border: 1pt dotted; margin: 1em" **Предупреждение Файловая система:** При выборе расположения вашего окружения, убедитесь что файловая система носителя где расположен каталог вашего окружения поддерживает временные метки включающие миллисекунды (например, **не такие как** `ext2` или `ext3` в Linux, или HFS+ в OSX), так как изменения в файле `conf/trac.ini` будут отслеживаться для определения необходимости в перезагрузке. Слишком грубое разрешение временной метки может повлечь нарушение целостности в Trac < 1.0.2. Отличный совет, выбрать платформу с более точными временными метками, вне зависимости от версии Trac. }}} В завершении, убедитесь что аккаунт пользователя под которым должен запускаться веб-интерфейс, имеет '''права на изменение''' каталога окружения и всех файлов в нем. Вы можете добится этого запустив команду `trac-admin ... initenv` от имени этого пользователя, если нет, вы должны изменить пользователя самостоятельно. Например в Linux, веб-сервер запускается от имени пользователя `apache` и группы `apache`, введите команду: {{{#!sh $ chown -R apache:apache /path/to/myproject }}} Текущее имя пользователя и имя группы сервера Apache, не обязательно должно иметь значение `apache`, и определяется в файле настроек сервера, директивами `User` и `Group` (если вы используете Apache `httpd`). {{{#!div class=important '''Внимание:''' Пожалуйста используйте только ASCII-символы в имени пользователя и в пути к папке проекта, здесь не поддерживаются символы unicode. }}} == Развертывание Trac {{{#!div style="border: 1pt dotted; margin: 1em" **Предупреждение Setuptools:** Если версия вашего пакета setuptools находится в диапазоне от 5.4 до 5.6, переменная окруженя `PKG_RESOURCES_CACHE_ZIP_MANIFESTS` должна быть установлена, для предотвращения существенного снижения производительности. При запуске `tracd`, переменная окружения может быть установлена на уровне системы или только на уровне пользователя который запускает процесс `tracd`. Есть несколько способов сделать то, о чем здесь говорится и зависит это от того, какой дистрибутив операционной системы у вас установлен. Для установки переменной на системном уровне нужно добавить скрипт оболочки с оператором `export` в `/etc/profile.d`. Для установки на уровне пользовательской сессии оператор `export` может быть добавлен в `~/.profile`. {{{#!sh export PKG_RESOURCES_CACHE_ZIP_MANIFESTS=1 }}} Другой вариант, когда переменная устанавливается в оболочке перед запуском `tracd`: {{{#!sh $ PKG_RESOURCES_CACHE_ZIP_MANIFESTS=1 tracd --port 8000 /path/to/myproject }}} При запуске веб-сервера Apache, пользователи !Ubuntu/Debian должны добавить оператор `export` в `/etc/apache2/envvars`. Пользователи !RedHat/CentOS/Fedora должны добавить оператор `export` в `/etc/sysconfig/httpd`. }}} === Запуск встроенного сервера После создания окружения Trac, вы легко можете ознакомиться с его веб-интерфейсом запустив встроенный сервер [TracStandalone tracd]: {{{#!sh $ tracd --port 8000 /path/to/myproject }}} Затем запустите браузер и перейдите на страницу `http://localhost:8000/`. Вы должны увидеть простой список всех окружений о которых известно `tracd`. Перейдите по ссылке в только что созданное окружение, и вы увидите Trac в действии. Если вы планируете использовать Trac для управления только одним проектом вы можете заставить встроенный сервер, пропустить список окружений, запустив его следующим образом: {{{#!sh $ tracd -s --port 8000 /path/to/myproject }}} === Запуск Trac на веб-сервере Trac поддерживает различные опции подключения к "реальному" веб-серверу: - [TracFastCgi FastCGI] - [wiki:TracModWSGI Apache с mod_wsgi] - [TracModPython Apache с mod_python] - [TracCgi CGI] //(не должен использоваться, так как производительность далека от оптимальной)// Trac так же существует поддержка [trac:TracOnWindowsIisAjp AJP], их вы можете выбрать если хотите подключится к IIS. Возможны и другие сценарии развертывания: [trac:TracNginxRecipe nginx], [https://uwsgi-docs.readthedocs.io/en/latest/#Traconapacheinasub-uri uwsgi], [trac:TracOnWindowsIisIsapi Isapi-wsgi] и прочие. ==== Создание директории Trac - cgi-bin #cgi-bin Скрипты приложения для CGI, FastCGI и mod-wsgi могут быть созданы при помощи команды [TracAdmin trac-admin] `deploy`: [[TracAdminHelp(deploy)]] Установите веб-серверу права на выполнение для скриптов в директории `cgi-bin`. Например, следующие шаги создадут тепичную структуру каталогов: {{{#!sh $ mkdir -p /var/trac $ trac-admin /var/trac/ initenv $ trac-admin /var/trac/ deploy /var/www $ ls /var/www cgi-bin htdocs $ chmod ugo+x /var/www/cgi-bin/* }}} ==== Размещение статических ресурсов Без дополнительной настройки Trac будет обрабатывать запросы к статическим ресурсам таким как таблицы стилей и изображения. В любом случае, кроме развертывания встроенного сервера TracStandalone, это является не оптимальным, так как веб-сервер может напрямую обслуживать статические ресурсы. При использовании CGI, это ''' крайне нежелательно ''', так как приводит к ужасной производительности. Веб-сервера такие как [https://httpd.apache.org/ Apache] позволяют вам создавать //Aliases-псевдонимы// для ресурсов, присваивая им виртуальный URL который не обязательно отражает их физическое расположение в файловой системе. Мы можем перенапрявить запросы к статическим ресурсам напрямую к файловой системе, чтобы избежать обработки данных запросов в Trac. Существуют два основных пути URL для статических ресурсов `/chrome/common` и `/chrome/site`. Плагины могут добавлять собственные ресурсы, обычно используется путь `/chrome/`. Общий псевдоним `/chrome` может быть использован если статические ресурсы извлечены для всех плагинов. Это означает, что команда `deploy` (описанная в предыдущем разделе) должна выполнятся каждый раз после установки или обновления плагинов предоставляющих статические ресурсы, или после изменения ресурсов в каталоге `$env/htdocs`. Возможно, это подходит для большинства вариантов развертывания, но это может оказаться не тем что хотелось бы вам. Например, если вы хотите загружать плагины через интерфейс администратора в разделе //Plugins//. Команда `deploy` создает каталог `htdocs` содержащий: - `common/` - статические ресурсы Trac - `site/` - копия каталога `htdocs/` окружения - `shared` - статические ресурсы используемые несколькими окружениями Trac, распологающиеся по адресу определяемому параметром `[inherit]` `htdocs_dir` - `/` - один каталог для каждого каталога ресурсов предоставляемых плагинами включенными в данном окружении Следующий пример создает единый псевдоним `/chrome`. Если на ваш взгляд это не правильный подход к установке, вам нужно просто создать больше конкретных псевдонимов: {{{#!apache Alias /trac/chrome/common /path/to/trac/htdocs/common Alias /trac/chrome/site /path/to/trac/htdocs/site Alias /trac/chrome/shared /path/to/trac/htdocs/shared Alias /trac/chrome/ /path/to/trac/htdocs/ }}}