12 февраля 2009 г.

Моя установка (перемещение с windows) trac на debian lenny с базой postgresql

Устанавливаем базу postgresql и дополнительные нужные пакеты:
  1. # apt-get install postgresql postgresql-client postgresql-contrib-8.3  

Считаем, что python уже стоит:
  1. # apt-get install python-psycopg2  
  2. # apt-get install postgresql-plpython-8.3  
  3. # apt-get install python-svn python-subversion  

Первый пакет предоставляет доступ к базе из python.
Второй пакет устанавливает возможность писать хранимые процедуры в БД на языке python, которые используются в trac.
Третий позволяет работать с svn репозиториями из python.

Создаем базу данных для trac и пользователя (роль) для базы данных:
  1. # su postgres  
  2. $ createuser tracuser -P  
  3. Enter password for new role:  
  4. Введите снова:  
  5. Shall the new role be a superuser? (y/n) y  

Тут дописываем: /etc/postgresql/8.3/main/pg_hba.conf .
  1. local    trac        tracuser     md5  

Это надо для того, чтобы мы могли соединяться к базе через локальный сокет с помощью нашей роли в базе, а не через tcp/ip . По умолчанию все соединения через local идут для роли безопасности в конфигурационном файле indent sameuser - вкратце, необходимо наличия такого же системного пользователя.

После изменения - "$/etc/init.d/postgresql-8.3 restart" .

Создаем базу данных:
  1. $ createdb -T template0 -h localhost -U tracuser -W trac  

Устанавливаем trac и создаем проект:
  1. # wget ftp://ftp.edgewall.com/pub/trac/Trac-0.11.2.1.tar.gz  
  2. # tar zxfv Trac-0.11.2.1.tar.gz  
  3. # cd Trac-0.11.2.1  
  4. # python ./setup.py install  
  5. # trac-admin /path/to/myproject initenv  

Это для создания нового проекта, для перемещения старого (в моем случае) копируем папку окружения, изменяем конфиг. Делаем бекап базы данных.

Например с windows:
  1. c:\Program Files\PostgreSQL\8.3\bin>pg_dump -U admin trac > tracplain.dump  

Восстанавливаем на lenny созданную базу (createlang plpythonu pg_dump сам предусмотрительно прописывает, для этого мы сделали пользователя суперюзером):

# psql -U tracuser -W -f trac.plain trac

Устанавливаем trac через mod_wsgi
  1. # apt-get install libapache2-mod-wsgi  

Прописываем в конфиге apache2
  1. WSGIScriptAlias /trac /path/to/trac/mysite.wsgi  
  2. <directory "="" path="" to="" trac="">  
  3.  WSGIApplicationGroup %{GLOBAL}  
  4.  AuthType Basic  
  5.  AuthName "Trac"  
  6.  AuthUserFile /homr/svn/passwd  
  7.  Require valid-user  
  8.  Order deny,allow  
  9.  Allow from all  
  10. </directory>  

Файл с пользователями создаем с помощью passwd.

Содержание файла /path/to/trac/mysite.wsgi:
  1. # cat mysite.wsgi  
  2. import os  
  3.   
  4. os.environ['TRAC_ENV'] = '/path/to/trac/'  
  5. os.environ['PYTHON_EGG_CACHE'] = '/path/to/trac/eggs'  
  6.   
  7. import trac.web.main  
  8. application = trac.web.main.dispatch_request  
  9.   
  10. import site  
  11. site.addsitedir('/usr/lib/python2.5/site-packages')  

Ресинхронизируем окружение:
  1. # trac-admin /path/to/trac/ resync  

Осталось настроить права для каталога окружения проекта и все должно работать.
Также можно урезать права пользователю tracuser с помощью ALTER ROLE

И напоследок, Postgresql quickstart:

1. To start postgres
# /etc/init.d/postgresql start
2. To stop postgres
# /etc/init.d/postgresql stop
3. To start using postgres, change to user postgres
$ su - postgres
4. To create new database
$ createdb dbname
5. To delete database
$ dropdb dbname
6. To access database
$ psql dbname
7. To dump database (backup)
$ pg_dump dbname > backup.out
8. Reload db from file
$ psql -d dbname -f db.out
9. To dump all database to file
$ pg_dumpall > dumpall.sql
10. Reload all from file
$ psql -f dumpall.sql
11. List database
$ psql -l
12. Clean all database
$ vacuumdb --quiet --all

Commands inside psql (PostgreSQL interactive terminal)

1. Access psql
# psql
2. Get help about commands
# \h
3. Quit psql
# \q
4. Import from file
# \i input.sql
5. Show databases
# \l
6. Show tables
# \dt
7. Show users
# \du
8. Connect to database
# \c dbname
9. Change user password
# \c template1
# ALTER USER postgres with password 'new_password';
10. Clean database
# VACUUM FULL;
11. Help on syntax command
# \h SYNTAXNAME

Комментариев нет:

Отправить комментарий