ot Vladimir Vitkov(10-03-2008)

reiting (32)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Disclaimer: Opisanite tehniki v tozi dokument mogat da vi pomognat no ne e zadulzhitelno da sa napulno viarni i izcherpatelni. Ne poemam otgovornost za kakvito i da bilo realni ili nerealni, vredi, polzi, propuski, padnali kushti ili kakvoto i da e proiztichashti ot polzvaneto ili nepolzvaneto na tozi dokument.

Istoriia
  • 25.01.2007 - Purva versiia


Tuk shte se postaraia da opisha po kakuv nachin sum nastroil sistema sustoiashta se ot Trac i SVN koiato izpolzvam za upravlenie na proekti.

Originalut Na bulagarski In English

Ideiata
Tui kato se zanimavam s mnogo i nai-veche razlichni proekti, stana iasno che imam muzhda ot sistema za upravlenie na proekti. I dokato tova mi se turkaliashe v glavata reshih che shte e dobre ako mozhe da se izpolzva za mnozhestvo proekti s mnozhestvo hora. Pochna se turseneto, kato minah prez dotProject, TikiWiki, Mantis i niakoi drugi. No prosto niakak si ne mi dopadaha. V kraina smetka se spriah na Trac i SVN.

Motivatsiiata
Izbrah kombinatsiiata Trac + SVN po slednite prichini
  • Sviknal sum sus SVN puk makar i ot konzola
  • Trac se razrabotva otnositelno aktivno
  • Veche imah instaliran Python zaradi chast ot sistemata mi
  • V samiia Trac ima vgradeno wiki koeto shte se polzva za opisanieto na proektite i dokumentatsiiata
  • Ima biletcheta za problemi
  • Kup drugi drebolii
Sled vsichko kazano Trac se okaza edno dobro reshenie.

ZHeliazoto
Mashinata na koiato raboti vsichko tova e slednata
Debian Unstable
600 Mhz CPU
256 MB Ram
20G HDD
Vurhu neia rabotiat dosta uslugi: mysql, apache, exim, routing/shaping/nat, dns, dhcp, ntp, ftp, shell, samba (v rezhim na Master Browser) i drugi.

Kato tsialo dosta slabichka mashinka po dneshni standarti, no polezna i gledana s lyuboF Neobhodim Softuer
Za da mozhe sistemata da raboti kato horata ni triabva sledniiat softuer
  • Trac
  • subversion
  • libneon
  • Python
  • pysqlite
  • python-subversion-bindings
  • mod_python
  • clearsilver
  • xinetd
  • drugi drebolii
Kato tsialo nai-lesno e ako si imate debian. Ako e takuv sluchaia protsedurata e predelno prosta apt-get install trac libapache2-mod-python xinetd I zapochva veselbata :)

Dopulnitelno kum Python sme instalirali python-setuptools, tracwebadmin, tracaccountmanager.

Razpolozhenie na failovete
Tui kato shte ima niakolko proekta, shte otdelim spetsialno miasto za tsialata sistema. Preporuchitelno e da e na otdelen dial. Pri men se spriah na direktoriiata /home/projects koiato ima slednata struktura
/home/projects/
 /home/projects/trac
 /home/projects/trac/project1
 /home/projects/trac/project2
 ... ... ...
 /home/projects/svn
 /home/projects/svn/project1
 /home/projects/svn/project2
 ... ... ...
Vuzmozhno e Trac i SVN instantsiite da se namirat v direktoriite na proektite no taka se uslozhniava mlko konfiguratsiiata

Sushtinskoto izpulnenie
Suzdaite si direktornata struktura koiato shte vi e udobna:
mkdir -p /home/projects/{trac,svn}


Suzdaite si suotvetnite proekti (tova stava s trac-admin)
trac-admin /home/projects/trac/project1 initenv
SHTe vi budat zadadeni niakolko vuprosa i po tochno: Ime na proekta, Baza danni (sqlite e dobur izbor), tip na hranilishteto za kod, kude se namira samoto hranilishte.
Ogranichenie e che hranilishteto na kod triabva zadulzhitelno da e na sushtata mashina (ne se poddurzhat otdalecheni), no tova mozhe lesno da se zaobikoli s pomoshtta na nfs.

Suzdaite suotvetnite hranilishta za kod (svnadmin)
svnadmin create /home/projects/svn/project1


Promenete pravata na taka suzdadenite direktorii suotvetno na potrebitelia kato koito vurviat Trac sistemata i svn survura
chown -R www-data:www-data /home/projects/trac/project1
 chown -R svnserv:svnserv /home/projects/svn/project1
Izpolzvame www-data tui kato pod tozi potrebitel raboti Apache survura. Potrebitelia svnserv sme suzdali predvaritelno kato za domashna direktoriia sme mu zadali /home/projects/svn

Sled kato imame veche suzdadeni proektite vreme e da mozhem da gi pokazhem v brauzur (inache sa bezpolezni).
Trac mozhe da raboti kato samostoiatelen demon (tracd), kato CGI protses (trac.cgi, trac.fcgi) ili v konteksta na Apache (koeto sme i izbrali) s pomoshtta na mod_python.

V konfiguratsiiata na Apache dobaviame
 LoadModule python_module modules/mod_python.so
 # ili go razreshavame s pomoshtta na distributsiiata si
 
 
     # s kakvo shte obrabotvame sudurzhanieto
     SetHandler mod_python
     # tochno s kakvo (trac)
     PythonHandler trac.web.modpython_frontend
     # koia informatsiia tochno shte servirame
     PythonOption TracEnvParentDir /home/projects/trac
     # ot kakvo shte generirame indeksa (ne e zadulzhitelen)
     PythonOption TracEnvIndexTemplate /home/projects/trac/listing.cs
     # debug mode ON
     PythonDebug on
 
Restartirame survura i proveriavame. Triabva da se vizhda neshto podobno na slednata kartinka trac-1.png

Ako li puk ne ... pochvaite da gledate v logovete kakvo pishe.

Sledva da pusnem svn survur. Tova se pravi s pomoshtta na svnserve. V sluchaia sum izbral da go startiram prez xinetd ponezhe niama da e tolkova natovaren. Za po goliama sigurnost shte raboti kato otdelen potrebitel (svnserv)

Konfiguratsiiata na xinetd e slednata
service subversion
 {
         # slushame samo na IPv4 adres
         flags = IPv4
         # uslugata NE e spriana
         disable = no
         # potrebitel i grupa
         user = svnserv
         group = svnserv
         # maksimalen broi instantsii
         instances = 5
         # be nice :)
         nice = 15
         # koi tochno e survurut
         server = /usr/bin/svnserve
         # argumenti za startiraneto mu
         server_args = --inetd --root /home/projects/svn
         # obichainite raboti (logvane, tipazh ...)
         log_on_success = PID HOST DURATION
         log_on_failure = HOST ATTEMPT
         wait = no
         socket_type = stream
 }
Testvaite sus svn klient dali raboti.

Podsiguriavane i podobriavane na Uslugite
Sled kato imame raboteshti uslugi vreme e da pomislim za tiahnoto podsiguriavane. A imenno eto kakvo shte napravim:

Za Trac sistemite
  • Premahvane na anonimniiat dostup (iztsialo). Za tazi tsel shte ni se nalozhi da izpolzvame trac-admin. Vuzmozhno e da se realizira prez web interfeis no vse pak triabva da se znae kak se pravi na ruka.
    # vlizame v interaktiven rezhim
     trac-admin /projects/trac/project1
     # privilegiite se upravliavat posredstvom komandata permission
     Trac [/home/projects/trac/project1]> permission help
     permission list [user]
             -- List permission rules
     
     permission add   [action] [...]
             -- Add a new permission rule
     
     permission remove   [action] [...]
             -- Remove permission rule
     # tova e prosto za zapoznavane
     # sledva sushtinskoto premahvane
     Trac [/home/projects/trac/project1]> permission remove anonymous *
    Veche anonimnite potrebiteli niamat nikakvi prava.
  • dobaviane na nov administrativen potrebitel s pulni prava. Tova se pravi za da imame po lesen kontrol. Trac [/home/projects/trac/project1]> permission add user1 TRAC_ADMIN, MILESTONE_DELETE .... # vsichki vuzmozhni privilegii Taka dobaveniiat potrebitel user1 efektivno poluchava pulen i absolyuten kontrol.
  • aktivirane na administratorskiiat panel - tazi protsedura se izvurshva chrez redaktsiia na kkonfiguratsionniiat fail conf/trac.ini v direktoriiata na nashiiat proekt. Za da aktivirame administratorskiiat interfeis e neobhodimo da razreshim izpolzvaneto na komponentite koito sa ni nuzhni a imenno da dobavim
    [components]
     webadmin.* = enabled
  • vklyuchvane na podobren protses na vlizane v sistemata - po nachalo protsesa na vlizane v Trac ne e osobenno krasiv nito puk udoben, zatova i shte bude podmenen ot razshirenieto TracAccountManager. To ima zavisimost ot TracWebAdmin koito veche e aktiviran. Za da mozhem da polzvame podobreniiat protses triabva purvo da izklyuchim vgradeniiat vuv trac i da aktivirame noviiat. Tova stava otnovo s redaktsiia na trac.ini
    [components]
     acct_mgr.admin.accountmanageradminpage = enabled
     acct_mgr.api.accountmanager = enabled
     acct_mgr.htfile.abstractpasswordfilestore = enabled
     acct_mgr.htfile.htdigeststore = disabled
     acct_mgr.htfile.htpasswdstore = enabled
     acct_mgr.http.httpauthstore = disabled
     acct_mgr.web_ui.accountmodule = enabled
     acct_mgr.web_ui.loginmodule = enabled
     trac.web.auth.loginmodule = disabled
     
     [account-manager]
     password_file = /home/projects/trac/users
     password_store = HtPasswdStore
    Kakvo tochno pravi vsiaka optsiia e dobre obiasneno v dokumentatsiiata (linkovete sa v kraia) Sega e neobhodimo da restartirame web survura za da vleznat v sila nashite promeni.


Za svn survura:
Zabraniavane na vsiakakuv dostup za neautorizirani potrebiteli
Tova se izpulniava kato se redaktirat konfiguratsiite na svn survura. Te se namirat v direktoriiata v koiato e nasheto hranilishte na kod. Modifitsirame gi po sledniiat nachin: conf/svnserve.conf
### This file controls the configuration of the svnserve daemon
 ### Visit http://subversion.tigris.org/ for more information.
 
 [general]
 # nikakuv dostup za anonimnite
 anon-access = none
 password-db = passwd
 authz-db = authz
 realm = Project 1


conf/authz
### This file is an example authorization file for svnserve.
 ### Its format is identical to that of mod_authz_svn authorization
 ### files.
 
 [groups]
 
 # za koi put ide rech (pravata se unaslediavat)
 [/]
 # pravata na potrebitel (chetene i pisane)
 user1 = rw
 # pravata na vsichki ostanali (pulna nula)
 * = 


conf/passwd
### This file is an example password file for svnserve.
 
 [users]
 user1 = password


Zaklyuchenie
Sled kato sme si svurshili vsichkata rabota sledva da restartirame za edin posleden put apache i xinetd i da zapochnem da si polzvame sistemata. Za podrobnosti za rabotata s neia ... vuv vruzkite

Vruzki
Trac
mod_python
Apache
Subversion
TracWebAdmin
TracAccountManager


<< NVIDIA instalatsiia pod SuSE10.1 s 3D | iptables s layer7 i pp2p  pod slackware 11 new! >>