Instalare și setup Subversion (SVN) pe o mașină WHM/Cpanel

Intenționez ca acest post să conțină un set de instrucțiuni complete pentru instalarea și setup-ul Subversion pe o mașină WHM/Cpanel

Note:
1. Ce urmează a fost testat pe WHM versiunea 11.30.4 (build 6), instalat în CentOS 5.7
2. O să fie folosite următoarele referințe:
example = numele contului cPanel setat în WHM
example.com = domeniul pentru care a fost setat contul example
3. O să trebuiască să te “murdărești” puțin umblând prin consolă
4. Instalarea descrisă folosește modulul mod_dav al Apache pentru autentificarea utilizatorilor

Instalarea mod_dav (dacă este nevoie)

Întâi de toate, controlează dacă mod_dav nu este deja instalat, rulând următoarea comandă în terminal:

root@machine [~]# /sbin/service httpd -M | grep dav

Dacă mod_dav este deja instalat, o să returneze:

dav_module (static)
dav_fs_module (static)

Dacă nu, o să trebuiască să rulezi din nou EasyApache (EasyApache este un script folosit de instalările WHM pentru a configura – compila și recompila – Apache). Poți face asta apăsând pe link-ul “EasyApache (Apache Update)” în meniul WHM. Selectează cel mai potrivit profil, în funcție de scopul în care va folosit serverul (dacă nu este o instalare nouă de WHM, este bine să citești documentația EasyApache înainte să continui, astfel încât să nu pierzi configurația inițială). Când ajungi la pasul al șaselea (Exhaustive Options List), ai grijă să bifezi DavFS și Dav în lista Apache Built-in Modules. Save and build.
Notă: Rularea EasyApache o să dezactiveze webserver-ul pentru aproximativ cinci minute.

Instalarea Subversion

Pentru o configurare corectă, Subversion trebuie să fie compilat din surse. În primul rând, mergi la http://subversion.apache.org/download/#recommended-release și copiază link-ul către arhiva .tar.gz (în cazul meu, http://subversion.tigris.org/downloads/subversion-1.6.17.tar.gz). Apoi, descarcă sursa și dezarhiveaz-o:

root@machine [~]# cd /usr/local/src/
root@machine [/usr/local/src]# wget http://subversion.tigris.org/downloads/subversion-1.6.17.tar.gz
root@machine [/usr/local/src]# tar -xvf subversion-1.6.17.tar.gz

Înainte de compilarea Subversion, SQLite trebuie copiat în sursele sus-numite. Mergi la http://www.sqlite.org/download.html și ia link-ul către ultima arhivă .tar.gz. În cazul meu, acesta este http://www.sqlite.org/sqlite-autoconf-3070800.tar.gz:

root@machine [/usr/local/src]# wget http://www.sqlite.org/sqlite-autoconf-3070800.tar.gz
root@machine [/usr/local/src]# tar -xvf sqlite-autoconf-3070800.tar.gz
root@machine [/usr/local/src]# cd subversion-1.6.17
root@machine [/usr/local/src/subversion-1.6.17]# mkdir sqlite-amalgamation
root@machine [/usr/local/src/subversion-1.6.17]# cp ../sqlite-autoconf-3070800/sqlite3.c ./sqlite-amalgamation/

Acum, Subversion trebuie configurat și instalat:

root@machine [/usr/local/src/subversion-1.6.17]# ./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/home/cpeasyapache/src/httpd-2.2.19/srclib/apr --with-apr-util=/home/cpeasyapache/src/httpd-2.2.19/srclib/apr-util
root@machine [/usr/local/src/subversion-1.6.17]# make && make install

S-ar putea să fie nevoie să actualizezi calea către httpd, dacă primești următoarea eroare:

checking for APR... configure: error: the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.
 
root@machine [/usr/local/src/subversion-1.6.17]# cd /home/cpeasyapache/src/
root@machine [/home/cpeasyapache/src]# ls -all

Caută httpd-*.*.** (în locul stelelor găsești versiunea ta) și fă actualizarea. cd înapoi la directorul Subversion și rulează din nou configure, make și make install.

Subversion și Apache

Dat fiind că folosești WHM și WHM folosește EasyApache, nu poți să modifici configurația Apache, pur și simplu, astfel încât să includă modulele Subversion. În schimb trebuie să folosești “Include Editor”, pe care îl poți găsi mergând la “Apache Configuration” în meniul WHM. Acolo trebuie să folosești Pre Main Include. Alege ultima versiune de Apache din listă și o să îți apară un textarea. Adaugă următoarele linii și apasă “Update”:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

Adaugă utilizatori Subversion

Rulează următoarea comandă pentru fiecare utilizator pe care vrei să îl adaugi. O sa ți se ceară o parolă pentru fiecare:

root@machine [~]# /usr/local/apache/bin/htpasswd -cm /etc/svn-auth-conf username

Setup-ul primului repository

Presupun că vei seta mai mult de un repository per domeniu, dar instrucțiunile care urmează se aplică și când vrei să setezi doar unul.

Prima și prima oară, trebuie să adaugi un virtual host pentru repository-ul tău:

root@machine [~]# cd /etc/httpd/conf/userdata/std/2/

Dacă primești eroarea “-bash: cd: /etc/httpd/conf/userdata/std/2/: No such file or directory”, rulează aceste comenzi pentru a crea directoarele necesare:

root@machine [~]# mkdir /etc/httpd/conf/userdata
root@machine [~]# mkdir /etc/httpd/conf/userdata/std
root@machine [~]# mkdir /etc/httpd/conf/userdata/std/2

Adaugă un director pentru domeniul tău:

root@machine [~]# mkdir /etc/httpd/conf/userdata/std/2/example
root@machine [~]# mkdir /etc/httpd/conf/userdata/std/2/example/example.com
root@machine [~]# cd /etc/httpd/conf/userdata/std/2/example/example.com

Creează fișierul de configurare Subversion:

root@machine [/etc/httpd/conf/userdata/std/2/example/example.com]# nano svn_custom.conf

Fă copy/paste următoarelor rânduri în fișierul de configurare și salvează-l. Pentru fiecare repository pe care vrei să-l creezi, adaugă câte un tag <location>.

<IfModule mod_dav_svn.c>
    #begin location
    <location /repo>
	DAV svn
	SVNPath /home/example/public_svn/repo/svn/
	AuthType Basic
	AuthName "SVN Repo"
	AuthUserFile /home/example/.svn.htpasswd
	Require valid-user
    </location>
    #end location
</IfModule>

A se observa că folosim un director numit public_svn, în afară directorului public_html. Nu este recomandat să adaugi repository-uri în același loc ca fișierele webserver-ului, deoarece Apache va fi derutat când vei încerca să accesezi repository-ul printr-o interfață locală de Subversion. Chiar dacă vei putea să încarci repository-ul în browser, o să primești o eroare (“Repository moved permanently to ‘http://example.com/repo/’; please relocate”) când vei încerca să îl accesezi remote. Asta se întâmplă pentru că Apache nu știe cum să răspundă cererii și nu va ști ce să servească (un director local prin http sau repository-ul tău).

Acum, creează fișierele repository-ului tău:

root@machine [~]# su example
example@machine [/root]# cd ~
example@machine [~]# mkdir public_svn
example@machine [~]# mkdir public_svn/repo
example@machine [~]# cd public_svn/repo
example@machine [~/public_svn/repo]# svnadmin create svn
example@machine [~/public_svn/repo]# chmod 775 -R svn
example@machine [~/public_svn/repo]# exit

Update la configurația Apache și gata:

/scripts/ensure_vhost_includes --all-users

Mergi la http://example.com/repo în browser, ca să îți testezi repository-ul. Ar trebui să îți ceară un user și o parolă și să-ți arate următoarele:

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">