5 | | Trac is written in the Python programming language and needs a database, [http://sqlite.org/ SQLite], [http://www.postgresql.org/ PostgreSQL], or [http://mysql.com/ MySQL]. For HTML rendering, Trac uses the [http://genshi.edgewall.org Genshi] templating system. |
6 | | |
7 | | Since version 0.12, Trac can also be localized, and there is probably a translation available in your language. If you want to use the Trac interface in other languages, then make sure you have installed the optional package [#OtherPythonPackages Babel]. Pay attention to the extra steps for localization support in the [#InstallingTrac Installing Trac] section below. Lacking Babel, you will only get the default English version. |
8 | | |
9 | | If you're interested in contributing new translations for other languages or enhancing the existing translations, then please have a look at [trac:wiki:TracL10N TracL10N]. |
10 | | |
11 | | What follows are generic instructions for installing and setting up Trac. While you may find instructions for installing Trac on specific systems at [trac:TracInstallPlatforms TracInstallPlatforms] on the main Trac site, please '''first read through these general instructions''' to get a good understanding of the tasks involved. |
| 4 | Trac is written in the Python programming language and needs a database, [https://sqlite.org/ SQLite], [https://www.postgresql.org/ PostgreSQL], or [https://mysql.com/ MySQL]. For HTML rendering, Trac uses the [http://jinja.pocoo.org Jinja2] templating system, though Genshi templates are supported until Trac 1.5.1. |
| 5 | |
| 6 | Trac can also be localized, and there is probably a translation available in your language. If you want to use the Trac interface in other languages, then make sure you have installed the optional package [#OtherPythonPackages Babel]. Pay attention to the extra steps for localization support in the [#InstallingTrac Installing Trac] section below. Lacking Babel, you will only get the default English version. |
| 7 | |
| 8 | If you're interested in contributing new translations for other languages or enhancing the existing translations, please have a look at [trac:wiki:TracL10N TracL10N]. |
| 9 | |
| 10 | What follows are generic instructions for installing and setting up Trac. While you may find instructions for installing Trac on specific systems at [trac:TracInstallPlatforms TracInstallPlatforms], please '''first read through these general instructions''' to get a good understanding of the tasks involved. |
21 | | * [http://www.python.org/ Python], version >= 2.5 and < 3.0 |
22 | | (note that we dropped the support for Python 2.4 in this release) |
23 | | * [http://pypi.python.org/pypi/setuptools setuptools], version >= 0.6 |
24 | | * [http://genshi.edgewall.org/wiki/Download Genshi], version >= 0.6 |
| 18 | * [https://www.python.org/ Python], version >= 2.7 and < 3.0 |
| 19 | (note that we dropped the support for Python 2.6 in this release) |
| 20 | * [https://pypi.org/project/setuptools setuptools], version >= 0.6 |
| 21 | * [https://pypi.org/project/Jinja2 Jinja2], version >= 2.9.3 |
| 22 | |
| 23 | {{{#!div style="border: 1pt dotted; margin: 1em" |
| 24 | **Setuptools Warning:** If the version of your setuptools is in the range 5.4 through 5.6, the environment variable `PKG_RESOURCES_CACHE_ZIP_MANIFESTS` must be set in order to avoid significant performance degradation. More information may be found in [#DeployingTrac Deploying Trac]. |
| 25 | }}} |
44 | | Trac works well with MySQL, provided you follow the guidelines: |
45 | | |
46 | | * [http://mysql.com/ MySQL] or [http://mariadb.org/ MariaDB], version 5.0 or later |
47 | | * [http://sf.net/projects/mysql-python MySQLdb], version 1.2.2 or later |
48 | | |
49 | | Given the caveats and known issues surrounding MySQL, read the [trac:MySqlDb] page before creating the database. |
| 45 | Trac works well with MySQL, provided you use the following: |
| 46 | |
| 47 | * [https://mysql.com/ MySQL], version 5.0 or later |
| 48 | * [https://pypi.org/project/PyMySQL PyMySQL] |
| 49 | |
| 50 | Given the caveats and known issues surrounding MySQL, read carefully the [trac:MySqlDb] page before creating the database. |
53 | | ==== Version Control System |
54 | | |
55 | | ===== Subversion |
56 | | * [http://subversion.apache.org/ Subversion], 1.5.x or later and the '''corresponding''' Python bindings. Older versions starting from 1.0, like 1.2.4, 1.3.2 or 1.4.2, etc. may still work. For troubleshooting information, check the [trac:TracSubversion#Troubleshooting TracSubversion] page. |
57 | | |
58 | | There are [http://subversion.apache.org/packages.html pre-compiled SWIG bindings] available for various platforms. (Good luck finding precompiled SWIG bindings for any Windows package at that listing. [trac:TracSubversion] points you to [http://alagazam.net Alagazam], which works for me under Python 2.6.) |
59 | | |
60 | | Note that Trac '''doesn't''' use [http://pysvn.tigris.org/ PySVN], neither does it work yet with the newer `ctype`-style bindings. |
61 | | |
62 | | '''Note:''' if using Subversion, Trac must be installed on the '''same machine'''. Remote repositories are currently [trac:ticket:493 not supported]. |
63 | | |
64 | | ===== Git |
65 | | * [http://git-scm.com/ Git] 1.5.6 or later. |
66 | | |
67 | | More information is available on the [trac:TracGit] page. |
68 | | |
69 | | ===== Others |
70 | | |
71 | | Support for other version control systems is provided via third-parties. See [trac:PluginList#VersionControlSystems] and [trac:VersionControlSystem]. |
| 54 | ==== Subversion |
| 55 | |
| 56 | [https://subversion.apache.org/ Subversion], 1.6.x or later and the '''''corresponding''''' Python bindings. |
| 57 | |
| 58 | There are [https://subversion.apache.org/packages.html pre-compiled SWIG bindings] available for various platforms. See [trac:TracSubversion#GettingSubversion getting Subversion] for more information. |
| 59 | |
| 60 | {{{#!div style="border: 1pt dotted; margin: 1em" |
| 61 | **Note:** |
| 62 | * Trac '''doesn't''' use [http://pysvn.tigris.org/ PySVN], nor does it work yet with the newer `ctype`-style bindings. |
| 63 | * If using Subversion, Trac must be installed on the '''same machine'''. Remote repositories are [trac:ticket:493 not supported]. |
| 64 | }}} |
| 65 | |
| 66 | For troubleshooting information, see the [trac:TracSubversion#Troubleshooting TracSubversion] page. |
| 67 | |
| 68 | ==== Git |
| 69 | |
| 70 | [https://git-scm.com/ Git] 1.5.6 or later is supported. More information is available on the [trac:TracGit] page. |
| 71 | |
| 72 | ==== Other Version Control Systems |
| 73 | |
| 74 | Support for other version control systems is provided via third-party plugins. See [trac:PluginList#VersionControlSystems] and [trac:VersionControlSystem]. |
97 | | [http://silvercity.sourceforge.net/ SilverCity] and/or |
98 | | [http://gnu.org/software/enscript/enscript.html Enscript] may still be used |
99 | | but are deprecated and you really should be using Pygments. |
100 | | * [http://pytz.sf.net pytz] to get a complete list of time zones, |
101 | | otherwise Trac will fall back on a shorter list from |
102 | | an internal time zone implementation. |
| 104 | * [https://pypi.org/project/textile Textile] for rendering the [https://github.com/textile/python-textile Textile markup language]. |
| 105 | * [https://pypi.org/project/passlib passlib] on Windows to decode [TracStandalone#BasicAuthorization:Usingahtpasswdpasswordfile htpasswd formats] other than `SHA-1`. |
| 106 | * [https://pypi.org/project/pyreadline pyreadline] on Windows for trac-admin [TracAdmin#InteractiveMode command completion]. |
114 | | It is assumed throughout this guide that you have elevated permissions as the `root` user, or by prefixing commands with `sudo`. The umask `0022` should be used for a typical installation on a Unix-based platform. |
115 | | |
116 | | === Using `easy_install` |
117 | | |
118 | | Trac can be installed from [https://pypi.python.org/pypi/Trac PyPI] or the Subversion repository using [http://pypi.python.org/pypi/setuptools setuptools]. |
119 | | |
120 | | A few command-line examples: |
121 | | |
122 | | - Install the latest stable version of Trac: |
123 | | {{{#!sh |
124 | | $ easy_install Trac |
125 | | }}} |
126 | | - Install latest development version: |
127 | | {{{#!sh |
128 | | $ easy_install http://download.edgewall.org/trac/Trac-latest-dev.tar.gz |
129 | | }}} |
130 | | Note that in this case you won't have the possibility to run a localized version of Trac; |
131 | | either use a released version or install from source. |
132 | | |
133 | | More information can be found on the [trac:wiki:setuptools setuptools] page. |
134 | | |
135 | | {{{#!div style="border: 1pt dotted; margin: 1em" |
136 | | **Setuptools Warning:** If the version of your setuptools is in the range 5.4 through 5.6, the environment variable `PKG_RESOURCES_CACHE_ZIP_MANIFESTS` must be set in order to avoid significant performance degradation. More information may be found in [#DeployingTrac Deploying Trac]. |
137 | | }}} |
| 118 | It is assumed throughout this guide that you have elevated permissions as the `root` user or by prefixing commands with `sudo`. The umask `0002` should be used for a typical installation on a Unix-based platform. |
140 | | |
141 | | 'pip' is an easy_install replacement that is very useful to quickly install Python packages. |
142 | | To get a Trac installation up and running in less than 5 minutes: |
143 | | |
144 | | Assuming you want to have your entire pip installation in `/opt/user/trac`: |
145 | | |
146 | | - |
147 | | {{{#!sh |
148 | | $ pip install trac psycopg2 |
149 | | }}} |
150 | | or: |
151 | | - |
152 | | {{{#!sh |
153 | | $ pip install trac mysql-python |
154 | | }}} |
155 | | |
156 | | Make sure your OS specific headers are available for pip to automatically build PostgreSQL (`libpq-dev`) or MySQL (`libmysqlclient-dev`) bindings. |
157 | | |
158 | | pip will automatically resolve all dependencies (like Genshi, pygments, etc.), download the latest packages from pypi.python.org and create a self contained installation in `/opt/user/trac`. |
159 | | |
160 | | All commands (`tracd`, `trac-admin`) are available in `/opt/user/trac/bin`. This can also be leveraged for `mod_python` (using `PythonHandler` directive) and `mod_wsgi` (using `WSGIDaemonProcess` directive). |
161 | | |
162 | | Additionally, you can install several Trac plugins (listed [https://pypi.python.org/pypi?:action=browse&show=all&c=516 here]) through pip. |
163 | | |
164 | | === From source |
165 | | |
166 | | Using the python-typical setup at the top of the source directory also works. You can obtain the source for a .tar.gz or .zip file corresponding to a release (e.g. `Trac-1.0.tar.gz`) from the [trac:TracDownload] page, or you can get the source directly from the repository. See [trac:TracRepositories#OfficialSubversionrepository TracRepositories] for details. |
167 | | |
168 | | {{{#!sh |
169 | | $ python ./setup.py install |
170 | | }}} |
171 | | |
172 | | You will need root permissions or equivalent for this step. |
173 | | |
174 | | This will byte-compile the Python source code and install it as an .egg file or folder in the `site-packages` directory |
175 | | of your Python installation. The .egg will also contain all other resources needed by standard Trac, such as `htdocs` and `templates`. |
176 | | |
177 | | If you install from source and want to make Trac available in other languages, make sure Babel is installed. Only then, perform the `install` (or simply redo the `install` once again afterwards if you realize Babel was not yet installed): |
178 | | {{{#!sh |
179 | | $ python ./setup.py install |
180 | | }}} |
181 | | |
182 | | Alternatively, you can run `bdist_egg` and copy the .egg from `dist/` to the place of your choice, or you can create a Windows installer (`bdist_wininst`). |
| 121 | `pip` is the modern Python package manager and is included in Python 2.7.9 and later. Use [https://bootstrap.pypa.io/get-pip.py get-pip.py] to install `pip` for an earlier version of Python. |
| 122 | |
| 123 | {{{#!sh |
| 124 | $ pip install Trac |
| 125 | }}} |
| 126 | |
| 127 | `pip` will automatically resolve the //required// dependencies (Jinja2 and setuptools) and download the latest packages from pypi.org. |
| 128 | |
| 129 | You can also install directly from a source package. You can obtain the source in a tar or zip from the [trac:TracDownload] page. After extracting the archive, change to the directory containing `setup.py` and run: |
| 130 | |
| 131 | {{{#!sh |
| 132 | $ pip install . |
| 133 | }}} |
| 134 | |
| 135 | `pip` supports numerous other install mechanisms. It can be passed the URL of an archive or other download location. Here are some examples: |
| 136 | |
| 137 | * Install the latest stable version from a zip archive: |
| 138 | {{{#!sh |
| 139 | $ pip install https://download.edgewall.org/trac/Trac-latest.zip |
| 140 | }}} |
| 141 | * Install the latest development version from a tar archive: |
| 142 | {{{#!sh |
| 143 | $ pip install https://download.edgewall.org/trac/Trac-latest-dev.tar.gz |
| 144 | }}} |
| 145 | * Install the unreleased 1.2-stable from subversion: |
| 146 | {{{#!sh |
| 147 | $ pip install svn+https://svn.edgewall.org/repos/trac/branches/1.2-stable |
| 148 | }}} |
| 149 | * Install the latest development preview (//not recommended for production installs//): |
| 150 | {{{#!sh |
| 151 | $ pip install --find-links=https://trac.edgewall.org/wiki/TracDownload Trac |
| 152 | }}} |
| 153 | |
| 154 | The optional dependencies can be installed from PyPI using `pip`: |
| 155 | {{{#!sh |
| 156 | $ pip install babel docutils pygments textile |
| 157 | }}} |
| 158 | |
| 159 | The optional dependencies can alternatively be |
| 160 | specified using the `extras` keys in the setup file: |
| 161 | {{{#!sh |
| 162 | $ pip install Trac[babel,rest,pygments,textile] |
| 163 | }}} |
| 164 | |
| 165 | `rest` is the extra that installs the `docutils` |
| 166 | dependency. |
| 167 | |
| 168 | Include `mysql` or `psycopg2-binary` in the |
| 169 | list if using the MySQL or PostgreSQL database. |
| 170 | |
| 171 | Additionally, you can install several Trac plugins from PyPI (listed [https://pypi.org/search/?c=Framework+%3A%3A+Trac here]) using pip. See TracPlugins for more information. |
190 | | Trac may be available in the package repository for your platform. Note however, that the version provided by the package manager may not be the latest release. |
191 | | |
192 | | === Advanced `easy_install` Options |
193 | | |
194 | | To install Trac to a custom location, or find out about other advanced installation options, run: |
195 | | {{{#!sh |
196 | | $ easy_install --help |
197 | | }}} |
198 | | |
199 | | Also see [http://docs.python.org/2/install/index.html Installing Python Modules] for detailed information. |
200 | | |
201 | | Specifically, you might be interested in: |
202 | | {{{#!sh |
203 | | $ easy_install --prefix=/path/to/installdir |
204 | | }}} |
205 | | |
206 | | or, if installing Trac on a Mac OS X system: |
207 | | {{{#!sh |
208 | | $ easy_install --prefix=/usr/local --install-dir=/Library/Python/2.5/site-packages |
209 | | }}} |
210 | | |
211 | | '''Note''': If installing on Mac OS X 10.6 running {{{ easy_install http://svn.edgewall.org/repos/trac/trunk }}} will install into {{{ /usr/local }}} and {{{ /Library/Python/2.5/site-packages }}} by default. |
212 | | |
213 | | The above will place your `tracd` and `trac-admin` commands into `/usr/local/bin` and will install the Trac libraries and dependencies into `/Library/Python/2.5/site-packages`, which is Apple's preferred location for third-party Python application installations. |
| 179 | Trac may be available in your platform's package repository. However, your package manager may not provide the latest release of Trac. |
224 | | [TracAdmin trac-admin] will prompt you for the information it needs to create the environment, such as the name of the project and the [TracEnvironment#DatabaseConnectionStrings database connection string]. If you're not sure what to specify for one of these options, just press `<Enter>` to use the default value. |
225 | | |
226 | | Using the default database connection string in particular will always work as long as you have SQLite installed. |
227 | | For the other [trac:DatabaseBackend database backends] you should plan ahead and already have a database ready to use at this point. |
228 | | |
229 | | Since 0.12, Trac doesn't ask for a [TracEnvironment#SourceCodeRepository source code repository] anymore when creating an environment. Repositories can be [TracRepositoryAdmin added] afterwards, and support for specific version control systems is disabled by default. |
230 | | |
231 | | Also note that the values you specify here can be changed later by directly editing the [TracIni conf/trac.ini] configuration file. |
232 | | |
233 | | {{{#!div style="border: 1pt dotted; margin: 1em" |
234 | | **Filesystem Warning:** When selecting the location of your environment, make sure that the filesystem on which the environment directory resides supports sub-second timestamps (i.e. **not** `ext2` or `ext3` on Linux, or HFS+ on OSX), as the modification time of the `conf/trac.ini` file will be monitored to decide whether an environment restart is needed or not. A too coarse-grained timestamp resolution may result in inconsistencies in Trac < 1.0.2. The best advice is to opt for a platform with sub-second timestamp resolution, regardless of the Trac version. |
235 | | }}} |
| 190 | [TracAdmin trac-admin] will prompt you for the information it needs to create the environment: the name of the project and the [TracEnvironment#DatabaseConnectionStrings database connection string]. If you're not sure what to specify for any of these options, just press `<Enter>` to use the default value. |
| 191 | |
| 192 | Using the default database connection string will always work as long as you have SQLite installed. For the other [trac:DatabaseBackend database backends] you should plan ahead and already have a database ready to use at this point. |
| 193 | |
| 194 | Also note that the values you specify here can be changed later using TracAdmin or directly editing the [TracIni conf/trac.ini] configuration file. |
292 | | In order for Trac to function properly with FastCGI you need to have a `trac.fcgi` file and for mod_wsgi a `trac.wsgi` file. These are Python scripts which load the appropriate Python code. They can be generated using the `deploy` option of [TracAdmin trac-admin]. |
293 | | |
294 | | There is, however, a bit of a chicken-and-egg problem. The [TracAdmin trac-admin] command requires an existing environment to function, but complains if the deploy directory already exists. This is a problem, because environments are often stored in a subdirectory of the deploy. The solution is to do something like this: |
295 | | {{{#!sh |
296 | | $ mkdir -p /usr/share/trac/projects/my-project |
297 | | $ trac-admin /usr/share/trac/projects/my-project initenv |
298 | | $ trac-admin /usr/share/trac/projects/my-project deploy /tmp/deploy |
299 | | $ mv /tmp/deploy/* /usr/share/trac |
300 | | }}} |
301 | | |
302 | | Don't forget to check that the web server has the execution right on scripts in the `/usr/share/trac/cgi-bin` directory. |
| 251 | Application scripts for CGI, FastCGI and mod-wsgi can be generated using the [TracAdmin trac-admin] `deploy` command: |
| 252 | [[TracAdminHelp(deploy)]] |
| 253 | |
| 254 | Grant the web server execution right on scripts in the `cgi-bin` directory. |
| 255 | |
| 256 | For example, the following yields a typical directory structure: |
| 257 | {{{#!sh |
| 258 | $ mkdir -p /var/trac |
| 259 | $ trac-admin /var/trac/<project> initenv |
| 260 | $ trac-admin /var/trac/<project> deploy /var/www |
| 261 | $ ls /var/www |
| 262 | cgi-bin htdocs |
| 263 | $ chmod ugo+x /var/www/cgi-bin/* |
| 264 | }}} |
312 | | A single `/chrome` alias can used if the static resources are extracted for all plugins. This means that the `deploy` command must be executed after installing or updating a plugin that provides static resources, or after modifying resources in the `$env/htdocs` directory. This is probably appropriate for most installations but may not be what you want if, for example, you wish to upload plugins through the //Plugins// administration page. |
313 | | |
314 | | The resources are extracted using the [TracAdmin trac-admin]` <environment> deploy` command: |
315 | | [[TracAdminHelp(deploy)]] |
316 | | |
317 | | The target `<directory>` will contain an `htdocs` directory with: |
| 274 | A single `/chrome` alias can used if the static resources are extracted for all plugins. This means that the `deploy` command (discussed in the previous section) must be executed after installing or updating a plugin that provides static resources, or after modifying resources in the `$env/htdocs` directory. This is probably appropriate for most installations but may not be what you want if, for example, you wish to upload plugins through the //Plugins// administration page. |
| 275 | |
| 276 | The `deploy` command creates an `htdocs` directory with: |
404 | | * [wiki:TracModWSGI#ConfiguringAuthentication TracModWSGI#ConfiguringAuthentication] if you use the Apache web server, with any of its front end: `mod_wsgi` of course, but the same instructions applies also for `mod_python`, `mod_fcgi` or `mod_fastcgi`. |
405 | | * TracFastCgi if you are using another web server with FCGI support, such as Cherokee, Lighttpd, !LiteSpeed, nginx. |
406 | | |
407 | | The following document also contains some useful information for beginners: [trac:TracAuthenticationIntroduction]. |
| 363 | * [wiki:TracModWSGI#ConfiguringAuthentication TracModWSGI#ConfiguringAuthentication] if you use the Apache web server, with any of its front end: `mod_wsgi`, `mod_python`, `mod_fcgi` or `mod_fastcgi`. |
| 364 | * TracFastCgi if you're using another web server with FCGI support (Cherokee, Lighttpd, !LiteSpeed, nginx) |
| 365 | |
| 366 | [trac:TracAuthenticationIntroduction] also contains some useful information for beginners. |
416 | | This user will have an "Admin" entry menu that will allow you to administrate your Trac project. |
417 | | |
418 | | == Finishing the install |
419 | | |
420 | | === Enable version control components |
421 | | |
422 | | Support for version control systems is provided by optional components in Trac and the components are disabled by default //(since 1.0)//. Subversion and Git must be explicitly enabled if you wish to use them. See TracRepositoryAdmin for more details. |
423 | | |
424 | | The version control systems are enabled by adding the following to the `[components]` section of your [TracIni#components-section trac.ini], or enabling the components in the "Plugins" admin panel: |
425 | | |
426 | | {{{#!ini |
427 | | [components] |
428 | | tracopt.versioncontrol.svn.* = enabled |
429 | | }}} |
430 | | |
431 | | {{{#!ini |
432 | | [components] |
433 | | tracopt.versioncontrol.git.* = enabled |
434 | | }}} |
435 | | |
436 | | After enabling the components, repositories can be configured through the //Repositories// admin panel or by editing [TracIni#repositories-section trac.ini]. Automatic changeset references can be inserted as ticket comments by configuring [TracRepositoryAdmin#Automaticchangesetreferencesintickets CommitTicketUpdater]. |
437 | | |
438 | | === Using Trac |
| 374 | This user will have an //Admin// navigation item that directs to pages for administering your Trac project. |
| 375 | |
| 376 | == Configuring Trac |
| 377 | |
| 378 | Configuration options are documented on the TracIni page. |
| 379 | |
| 380 | TracRepositoryAdmin provides information on configuring version control repositories for your project. |
| 381 | |
| 382 | In addition to the optional version control backends, Trac provides several optional features that are disabled by default: |
| 383 | * [TracFineGrainedPermissions#AuthzPolicy Fine-grained permission policy] |
| 384 | * [TracPermissions#CreatingNewPrivileges Custom permissions] |
| 385 | * [TracTickets#deleter Ticket deletion] |
| 386 | * [TracTickets#cloner Ticket cloning] |
| 387 | * [TracRepositoryAdmin#CommitTicketUpdater Ticket changeset references] |
| 388 | |
| 389 | == Using Trac |