164 | | 14. Add users to password file |
165 | | {{{ |
166 | | C:\> c:\progra~1\apache~1\apache2\bin\htpasswd -m c:\svn\.htaccess user |
167 | | }}} |
168 | | |
169 | | === Install Trac Prerequisites === |
170 | | |
171 | | (Please note: pay attention to download '''exactly''' the versions mentioned here. Do '''not''' simply download the latest stable versions. Otherwise you will probably run into several issues.) |
172 | | |
173 | | 15. Install [http://www.python.org/ Python ] |
174 | | |
175 | | ''Please use Python 2.3 and not 2.4, because the Subversion bindings for Python (that are a few lines down) currently are only available for 2.3 ([http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91&filter=_py.zip look here for the current status of the bindings])'' |
176 | | |
177 | | ''If you desperately want it to work with Python 2.4, this trick seems to work. |
178 | | Install the Subversion bindings for Python 2.3 in the Python 2.4 site-packages directory. |
179 | | Find all dll files inte the directory \site-packages\libsvn with a name in the form: _*.dll. |
180 | | Now use your hexeditor of choice and replace all instances of "python23.dll" with "python24.dll" in the dll files (There's just one occurance in each file).'' |
181 | | |
182 | | ''Beginning with version 1.4, the Subversion team has actually released bindings for Python 2.4. You can download them [http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 here].'' |
183 | | |
184 | | [[br]]Add C:\Python23 to the path |
185 | | |
186 | | 16. Install Subversion Python Bindings |
187 | | Download [http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91&filter=_py.zip svn-win32-1.X.X_py.zip] from the Subversion site. [[br]]Extract and copy the libsvn and svn directories to C:\Python23\Lib\site-packages [[br]][[br]]''Note : it is '''very''' important to use the python bindings for the exact version of Subversion you have installed. e.g. when running svn 1.2.3, make sure to use svn-win32-1.2.3_py.zip instead of the zip mentioned above. Otherwise, you '''will''' run into problems (loading dlls etc.)''. |
188 | | |
189 | | 17. Install [http://docutils.sourceforge.net/ docutils ] (optional) |
190 | | |
191 | | This is only required if you want to support Restructured text wiki markup |
192 | | {{{ |
193 | | expand and run from the expanded docutils-xxx directory |
194 | | > C:\python23\python setup.py install |
195 | | }}} |
196 | | |
197 | | 18. Install SQLite (optional) |
198 | | http://www.sqlite.org |
199 | | [[br]]Copy sqlite.exe to C:\Program Files\SQLite |
200 | | |
201 | | This is really optional - you only need this if you want to start poking around in the sqlite database because something's gone wrong. |
202 | | |
203 | | 19. Install PySQLite |
204 | | http://pysqlite.org/ |
205 | | [[br]]Download and install pysqlite-1.1.6.win32-py2.3.exe |
206 | | |
207 | | or pyPgSQL if you are using PostgreSQL |
208 | | http://pypgsql.sourceforge.net/ |
209 | | [[br]]Download and install pyPgSQL-2.4.win32-py2.3.exe |
210 | | |
211 | | NB. Make sure you use v1.x, not 2.x, because the module is renamed from sqlite to pysqlite in v2.x, so the trac installer will fail if you use pysqlite 2.x |
212 | | |
213 | | Note: If using XAMPP ([http://www.apachefriends.org/en/xampp-windows.html]) to jumpstart setup you may encounter a problem. XAMPP bundles Python in with their distro and does not update the registry to denote the Python install directory (as I suppose is done during a default install of Python). This missing registry key prevents the pysqlite-X.X.X.win32-pyX.X.exe installer from running successfully. The install program will state that it can't find Python installed on your system. To fix this issue, simply add the following key to the Windows registry. |
214 | | |
215 | | {{{ |
216 | | HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.3\InstallPath |
217 | | }}} |
218 | | |
219 | | After creating this key, you should have a "(Default)" string variable which is created automatically. This variable is created with a value of NULL. Set this variable to the root directory of your Python installation. For example: |
220 | | |
221 | | {{{ |
222 | | C:\Program Files\xampp\python |
223 | | }}} |
224 | | |
225 | | This should allow you to proceed along with the pysqlite installation. |
226 | | |
227 | | 20. Install ClearSilver |
228 | | http://www.clearsilver.net download clearsilver_python-0.9.12-win32.zip |
229 | | [[br]]Copy neo_cgi.pyd into C:\Python23\Lib\site-packages |
230 | | Alternatively, grab unofficial installers for ClearSilver 0.9.14 from http://clearsilver.yi.org/. |
231 | | |
232 | | 21. Install eGenix.com mx Extensions for Python (if using PostgreSQL) |
233 | | Download and install [http://www.egenix.com/files/python/eGenix-mx-Extensions.html].[[br]] |
234 | | The 'initenv' command in trac-admin needs this library to create the Trac database (At least it did when using a PostgreSQL back end). |
235 | | |
236 | | 22. Install Trac |
237 | | http://projects.edgewall.com/trac/wiki/TracDownload |
238 | | {{{ |
239 | | python ./setup.py install |
240 | | }}} |
241 | | |
242 | | === Fix a few things === |
243 | | 23. Define how the CGI script is called |
244 | | |
245 | | 23.1 Copy CGI |
246 | | {{{ |
247 | | C:\> copy c:\python23\share\trac\cgi-bin\trac.cgi c:\progra~1\apache~1\apache2\cgi-bin |
248 | | }}} |
249 | | Use a text editor such as notepad to open trac.cgi and ensure the first line contains the correct path for Apache to find python. |
250 | | |
251 | | 23.2 Alternatively, define a global Python handler for `CGI` script |
252 | | |
253 | | If you often update your Trac installation (following [source:/trunk trunk] development), and do not want to customize the `trac.cgi` file, you may want to define a global handler for `.cgi` scripts, using the `ScriptInterpreterSource` Apache [http://httpd.apache.org/docs/2.0/mod/core.html#scriptinterpretersource directive]. |
254 | | |
255 | | 23.2.1. Add the following line to your Apache configuration file: |
256 | | {{{ |
257 | | <Directory "/Path/To/Trac/cgi-bin"> |
258 | | ScriptInterpreterSource Registry-Strict |
259 | | </Directory> |
260 | | }}} |
261 | | 23.2.2. Add the following key to your Windows registry |
262 | | {{{ |
263 | | [HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command] |
264 | | "@"="c:\\\\Programs\\\\Python\\\\python.exe" |
265 | | }}} |
266 | | ''Notes'': |
267 | | `@` represents the `(Default)` key entry[[BR]] |
268 | | Do not forget to update the path to your actual Python installation directory |
269 | | |
270 | | === Configure Trac DB === |
271 | | The trac database can be named to match the subversion repository it is working with, which is especially useful if more than one repository will ever be created. In this example {{{"trac.db"}}} would read as {{{"repo1.db"}}} |
272 | | |
273 | | 25. Run trac-admin |
274 | | {{{ |
275 | | C:\Python23\Scripts> python trac-admin c:/svn/trac.db |
276 | | }}} |
277 | | |
278 | | I found i had to do: |
279 | | {{{ |
280 | | C:\Python23> python scripts/trac-admin c:/svn/trac.db |
281 | | }}} |
282 | | |
283 | | Note: The latter path is needed if python is not found in the environmental variable PATH. |
284 | | |
285 | | 26. Initialize DB |
286 | | {{{ |
287 | | Trac [c:/svn/trac.db]> initenv |
288 | | }}} |
289 | | {{{ |
290 | | Enter project name |
291 | | Project |
292 | | |
293 | | Database connection string [sqlite:db/trac.db]> |
294 | | (Just press enter to accept default) |
295 | | |
296 | | Enter path to repository |
297 | | c:\svn\repo1 |
298 | | |
299 | | Enter path to templates |
300 | | c:\Python23\share\trac\templates |
301 | | }}} |
302 | | |
303 | | See TracEnvironment for help with these settings. |
304 | | |
305 | | If you get an error here stating that libdb42.dll was not found, copy ''[SVN PATH]''\bin\libdb42.dll to ''[PYTHON PATH]''\lib\libsvn\, then try again. |
306 | | |
307 | | If you are using PostgreSQL and you get an error stating that libpq.dll cannot be found, add the PostgreSQL bin directory to your path (ex: C:\Program Files\PostgreSQL\8.1\bin). |
308 | | |
309 | | If you get an error like "ImportError: No module named svn" you are missing the path to the SVN Python hooks in the PYTHONPATH environment variable. |
310 | | eg. |
311 | | {{{ |
312 | | C:\Python23\Scripts>set PYTHONPATH=C:\Python23\Lib\site-packages\svn-win32-1.2.3\python |
313 | | }}} |
314 | | ...assuming you installed the hooks for SVN1.2.3. |
315 | | |
316 | | To get this step done the right way, you have to understand that the trac database is '''not''' the svn repository. |
317 | | |
318 | | For example if you have your svn repository located in c:\svn\repo1 (like supposed by this tutorial), you'll probably want to name your trac database c:\trac\repo1. You would then call "python trac-admin c:/trac/repo1" in your scripts directory and enter "c:\svn\repo1" as the "path to (svn) repository". |
319 | | |
320 | | 27. Add administrative permissions (the below adds all permissions for 'admin' user) |
321 | | {{{ |
322 | | Trac [c:/svn/trac.db]> |
323 | | |
324 | | permission add admin TRAC_ADMIN |
325 | | }}} |
326 | | |
327 | | === Add Trac to Apache === |
328 | | 28. Edit httpd.conf: |
329 | | Add: (copy this - there's a typo in Edgewall's version) |
330 | | Edit PYTHONPATH to point to your install of SVN bin |
331 | | {{{ |
332 | | # TRAC |
333 | | Alias /trac "C:/Python23/share/trac/htdocs" |
334 | | |
335 | | <Location /cgi-bin/trac.cgi> |
336 | | SetEnv TRAC_ENV "c:/svn/trac.db" |
337 | | SetEnv PYTHONPATH "C:/Program Files/Subversion/bin" |
338 | | # if you are running Apache as a user other than System, the TMP variable |
339 | | # needs to be set to a place where that user can write scratch files. Make |
340 | | # sure that this directory is created and writable by that user. |
341 | | # SetEnv TMP "c:/svn/trac.db/tmp |
342 | | </Location> |
343 | | |
344 | | <Location /cgi-bin/trac.cgi/login> |
345 | | AuthType Basic |
346 | | AuthName "Project" |
347 | | AuthUserFile C:/svn/.htaccess |
348 | | Require valid-user |
349 | | </Location> |
350 | | |
351 | | <Directory "C:/Python23/share/trac/htdocs"> |
352 | | Options Indexes MultiViews |
353 | | AllowOverride None |
354 | | Order allow,deny |
355 | | Allow from all |
356 | | </Directory> |
357 | | }}} |
358 | | |
359 | | If you want to configure a friendly URL, like http://hostname/trac, the following configuration can be used instead of the appropriate sections above |
360 | | |
361 | | {{{ |
362 | | # TRAC |
363 | | |
364 | | # Transfer serving up of static content to Apache |
365 | | Alias /trac/chrome/common "C:/Program Files/Python2.3.5/share/trac/htdocs" |
366 | | |
367 | | # Alias for the friendly URL |
368 | | ScriptAlias /trac "C:/Program Files/Python2.3.5/share/trac/cgi-bin/trac.cgi" |
369 | | <Location "/trac"> |
370 | | SetEnv TRAC_ENV "c:/svn/trac.db" |
371 | | SetEnv PYTHONPATH "C:/Program Files/Subversion/bin" |
372 | | # if you are running Apache as a user other than System, the TMP variable |
373 | | # needs to be set to a place where that user can write scratch files. Make |
374 | | # sure that this directory is created and writable by that user. |
375 | | # SetEnv TMP "c:/svn/trac.db/tmp |
376 | | </Location> |
377 | | |
378 | | <Location "/trac/login"> |
379 | | AuthType Basic |
380 | | AuthName "trac" |
381 | | AuthUserFile C:/svn/.htaccess |
382 | | Require valid-user |
383 | | </Location> |
384 | | }}} |
385 | | |
386 | | Note: if you get an error "Authentication information not available." after clicking "login", refer to #2258 |
387 | | |
388 | | Alternatively you could set up the authorization to use your NT domain login if you are running an NT Domain. This bit of Apache config replaces the <Location /cgi-bin/trac.cgi/login> given above. |
389 | | {{{ |
390 | | <Location /cgi-bin/trac.cgi/login> |
391 | | #NT Domain auth config |
392 | | AuthType SSPI |
393 | | SSPIAuth On |
394 | | SSPIAuthoritative On |
395 | | SSPIOfferBasic On |
396 | | SSPIOmitDomain Off |
397 | | # following line squishes bug #1168 if IE has troubles editing wiki pages. |
398 | | SSPIBasicPreferred On |
399 | | AuthName "Project" |
400 | | Require valid-user |
401 | | </Location> |
402 | | }}} |
403 | | |
404 | | You'll also need the sspi_auth_module on your system and loaded like this... |
405 | | {{{ |
406 | | LoadModule sspi_auth_module modules/mod_auth_sspi.so |
407 | | }}} |
408 | | You must download and install this module. It can be found here: |
409 | | http://mod-auth-sspi.sf.net/ |
410 | | |
411 | | Or compile it into Apache. Note when adding permissions and authenticating against a domain you may need to use the following syntax complete with quotes as seen in #1055. |
412 | | * permission add "DOMAIN\username" TRAC_ADMIN |
413 | | |
414 | | ''Note'': Internet Explorer may be in trouble with an Apache server running SSPI authentication. See #1343 |
415 | | |
416 | | With example above, you must specify user name like "DOMAIN\username" |
417 | | If you hate "DOMAIN\username" format, {{{SSPIOmitDomain}}} option is usefull. Set it ON! |
418 | | {{{ |
419 | | SSPIOmitDomain On |
420 | | }}} |
421 | | |
422 | | If this option is ON, the mod_auth_sspi passes authentication name to an Apache server without a domain part. |
423 | | As result, you can manage user names with simply 'username' instead of 'DOMAIN\username' |
424 | | in apache password file and {{{trac-admin}}} command, and also, it is used by Trac for reporter name, author and so on. |
425 | | |
426 | | * permission add username TRAC_ADMIN |
427 | | |
428 | | But remember that you must specify "DOMAIN\username" format on authentication dialog although this option is ON. |
429 | | |
430 | | ''Note'': Older version of mod_auth_sspi (like http://tortoisesvn.tigris.org/mod_auth_sspi.zip) doesn't |
431 | | support {{{SSPIOmitDomain}}} and has bug for basic authentication. 1.0.2 introduced above is recommended. |
432 | | |
433 | | |
434 | | 29. Restart Apache. |
435 | | |
436 | | 30. Hold your breath, test Trac install |
437 | | http://[hostname]:80/cgi-bin/trac.cgi |
438 | | |
439 | | If it doesn't work, then running Apache from the command-line will give you a few clues. |
440 | | |
441 | | If your page seems to be lacking stylesheets, please check the alias of '''/trac''' in apache. Otherwise you've probably run into a known Apache bug described (and worked around) [http://www.apache.org/dist/httpd/binaries/win32/#xpbug here]. |
442 | | |
443 | | It is possible you have to add Full NTFS file permissions to user NT Authority\System on Trac folder, otherwise you could get an error. |
444 | | |
445 | | === Optional Enscript === |
446 | | 31. In order for Trac to syntax highlight code, you must download and install [http://gnuwin32.sourceforge.net/packages.html Enscript]. After installing Enscript, you will need to add the path to the enscript executable to the Windows PATH environment variable. '''Note:''' If Apache is running as a service you will need to reboot the machine for it to receive the updated PATH setting. |
447 | | |
448 | | === Optional pre- and post-commit hooks for Subversion === |
449 | | 32. In order to use pre- and post-commit hooks with Subversion on Windows, please refer to the files described in #1602, as the these files are not commited into the trunk as of version 0.9-dev. |
450 | | |
451 | | The files you need are "pre-commit.2.bat", "post-commit.2.bat", "trac-pre-commit-hook_4bat.2" and "trac-post-commit-hook_4bat.2". The pre-commit hook makes it a requirement to reference a ticket before commiting the changes. |
452 | | |
453 | | Place the desired ".bat" and "trac-" files in your Subversion repository "hooks" directory and configure the ".bat" file for your system (remove the ".2" from the filenames ofcourse). For more information on hooks, read the [http://svnbook.red-bean.com/nightly/en/svn.reposadmin.create.html#svn.reposadmin.create.hooks Hook Scripts] section of the Subversion book. |
454 | | |
455 | | === Finally... === |
456 | | 33. Install Subversion clients as necessary (try [http://rapidsvn.tigris.org RapidSVN] , [http://tortoisesvn.tigris.org/ TortoiseSVN] or [http://subclipse.tigris.org/ Subclipse]) |
457 | | |
458 | | 34. Don't forget to lock down the security on the box! |
459 | | |
460 | | 35. If the svn page would not work properly with saying that DLL is missing, FIRST try to reboot the system and if that does not work, copy the three DLL's - libdb42.dll - libeay32.dll - ssleay32.dll from your [Subversion]\bin directory to your system directory (most likely C:\Windows\system32). |
461 | | |
462 | | == Upgrading from Trac 0.84 to 0.9-beta1 on Windows == |
463 | | |
464 | | This section builds off the [wiki:TracUpgrade generic Trac upgrade instructions], so you may want to keep that open to use as supplementary reading material. |
465 | | |
466 | | 1. Download Windows Installer file |
467 | | |
468 | | 2. Backup old version of Trac: |
469 | | {{{ |
470 | | > move C:\Python23\Lib\site-packages\trac C:\Python23\Lib\site-packages\trac-0.8.4 |
471 | | |
472 | | > move C:\Python23\share\trac C:\Python23\share\trac-0.8.4 |
473 | | > move C:\Program Files\Apache Group\Apache2\cgi-bin\trac.cgi C:\Program Files\Apache Group\Apache2\cgi-bin\trac-0.8.4.cgi |
474 | | > xcopy /x /e /i C:\svn\trac.db C:\svn\trac-0.8.4.db\ |
475 | | }}} |
476 | | |
477 | | 3. Run the Trac Windows Installer |
478 | | |
479 | | 4. Run these commands |
480 | | {{{ |
481 | | > cd C:\Python23\Scripts |
482 | | > python trac-admin C:\svn\trac.db upgrade |
483 | | > python trac-admin C:\svn\trac.db wiki upgrade |
484 | | }}} |
485 | | |
486 | | 5. If using CGI, copy trac.cgi to Apache directory. |
487 | | |
488 | | {{{ |
489 | | > copy C:\Python23\share\trac\cgi-bin\trac.cgi C:\Program Files\Apache Group\Apache2\cgi-bin\trac.cgi |
490 | | }}} |
491 | | |
492 | | 6. Open and edit C:\Program Files\Apache Group\Apache2\cgi-bin\trac.cgi. Change the first line from: |
493 | | {{{ |
494 | | |
495 | | #!C:\Programme\Python23\python.exe |
496 | | }}} |
497 | | to |
498 | | {{{ |
499 | | |
500 | | #!C:\Python23\python.exe |
501 | | }}} |
502 | | |
503 | | 7. Point your web browser to the Trac site. That should be it! |
504 | | ---- |
505 | | === Contributors: === |
506 | | |
507 | | * [mailto:Daragh|at|i2i-Tech.com Daragh Fitzpatrick] |
508 | | * [mailto:alexkw|at|mac.com Alex Wolfe] |
509 | | * [mailto:tim|at|igethalf.com Tim Browse] |
510 | | * [mailto:sid|at|seegrid.com Sid Wiesner] |
511 | | * [mailto:trac-svn-mail|at|elvendesigns.com Muir] |
512 | | * [mailto:abudhu|at|gmail.com Amit Budhu] |
513 | | * [mailto:denney|at|mantrasoftware.net Rodney Beck] |
514 | | * [mailto:javinievas|at|gmail.com Javier Nievas] |
515 | | |
516 | | === DLL Errors === |
517 | | After a fresh install, trying to access either the Timeline or Browse Source tabs results in an internal error: |
518 | | {{{ |
519 | | Traceback (most recent call last): |
520 | | |
521 | | File "C:\Local\Python23\Lib\site-packages\trac\core.py", line 531, in cgi_start |
522 | | real_cgi_start() |
523 | | File "C:\Local\Python23\Lib\site-packages\trac\core.py", line 526, in real_cgi_start |
524 | | dispatch_request(path_info, args, req, env) |
525 | | File "C:\Local\Python23\Lib\site-packages\trac\core.py", line 439, in dispatch_request |
526 | | module = module_factory(args, env, database, req) |
527 | | File "C:\Local\Python23\Lib\site-packages\trac\core.py", line 172, in module_factory |
528 | | import sync |
529 | | File "C:\Local\Python23\Lib\site-packages\trac\sync.py", line 22, in ? |
530 | | from svn import fs, util, delta, repos, core |
531 | | File "C:\Local\Python23\lib\svn\fs.py", line 28, in ? |
532 | | import libsvn.fs |
533 | | File "C:\Local\Python23\lib\libsvn\fs.py", line 4, in ? |
534 | | import _fs ImportError?: DLL load failed: The specified module could not be found. |
535 | | }}} |
536 | | |
537 | | An easy solution would be to copy dlls at svn\bin\*.dll to cgi-bin directory. then it works well. Before copying any DLLs, first try to reboot the system. In most cases, the internal system error problem disappear after a simple system reboot. |
538 | | |
539 | | ==== Guía en Español ==== |
540 | | |
541 | | Guía de instalación de Trac en Windows en Español. [http://traclog.blogspot.com/ Aquí.] |
542 | | Some help for Spanish speakers installing Trac for Windows. |
543 | | |
544 | | ---- |
545 | | See also: TracInstall, TracOnWindowsStandalone |
546 | | |
547 | | === Comments === |
548 | | |
549 | | ==== Really Wonderful ==== |
550 | | |
551 | | This is one of the best docs on how install a system. Thank you very much. |
552 | | The only thing I don't understand is what should I do "to lock down the security on the box". Excuse me, I'm a begineer in this things, Could somebody explain a little bit? Thanks, a lot! |
553 | | |
554 | | ==== This badly needs a distro ==== |
555 | | |
556 | | The large number of components to download and long list of installation steps puts me off bothering to install Trac. |
557 | | I love Trac and use it at work but I just don't have the time/patience to work through all these steps. |
558 | | What's obviously needed is a single distro with everything preconfigured and tested for Win32/Mac/Linux. |
559 | | I think this would also reduce the inevitable support requests from such as complex install. |
560 | | I think the ideal might be a Trac installation addon for each [http://www.apachefriends.org/en/xampp.html XAMPP] distro. |
561 | | |
562 | | ==== I agree ==== |
563 | | I agree, this needs a distro. I would be willing to help if such a thing were started. [http://www.RicharddeCosta.com] |
564 | | |
565 | | ==== New Python Bindings ==== |
566 | | |
567 | | New python bindings and isntallers have been made for 2.4 python and newer subversion releases [http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 here] for instance. Also with SVNPath in the httpd.conf if your full path has spaces you may want to put it in double quotes. |
| 148 | * Hopefully this 0.10 rewrite can include upgrade instructions for 0.9.6 users. That would be immensely comforting. Thanks for your excellent work... |
| 149 | * Clarification added for subversion install (figured out on own - then saw a helpful post). May add some notes here about the Trac Admin setup as well. Of course if my editing isn't seen as a clarification - you can and will reverse it. |