THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => Linux / Unix => Topic started by: edenaxas on August 28, 2012, 00:47:55 am



Title: Ubuntu 12.04 Subversion setup log files
Post by: edenaxas on August 28, 2012, 00:47:55 am
Σε μορφη blog (sic) θα κρατησω "σημειωσεις" στησιματος subversion σε ubuntu server 12.04. Το βαζω εδω για ευκολη αναφορα δικη μου και για αλλους στο μελλον που ισως κανουν κατι παρομοιο  :)

Εαν καποιος εχει καποιο heads up ειναι ευπροσδεκτο.  ;)


Title: Re: Ubuntu 12.04 Subversion setup log files
Post by: edenaxas on August 28, 2012, 00:48:51 am
  • step 1 as always documetation (https://help.ubuntu.com/12.04/serverguide/serverguide.pdf)
  • στο βιβλιο του svn, στα κεφαλαια 5&6 εχει αναλυτικες οδηγιες για server configuration. Για να μην εχουμε broken links το επισυναπτω στο τελος



Title: Re: Ubuntu 12.04 Subversion setup log files
Post by: edenaxas on August 29, 2012, 15:26:04 pm
next step is package installation.

Code:
sudo apt-get install subversion libapache2-svn

με το παραπανω εχουμε εγκαταστησει το svn και apache(εαν δεν εχει εγκατασταθει προηγουμενως).

μενουν
1) configuration του repository και το γεμισμα του με τα αρχικα αρχεια που εχουμε για το/τα project μας
2) configuration του httpd ωστε να μπορουμε να δουμε το repository μεσω http


* δεν ειναι απαραιτητη η χρηση httpd για να γινει το repo διαθεσιμο στο δικτυο αλλα ειναι η πιο σταθερη λυση μιας και βασιζεται στον Apache με οτι καλο/κακο συνεαπαγεται αυτο.


Title: Re: Ubuntu 12.04 Subversion setup log files
Post by: edenaxas on August 29, 2012, 15:28:28 pm
Στο documentation του Svn στο appendix A, προσπερνα τα γενικα αλλα και τα πολυ τεχνικα και μπαινει στο ψητο με το τι κανεις για το 1ο βημα παραπανω, υποθετωντας οτι εχεις εγκαταστησει τα απαραιτητα πακετα, πραγμα που καναμε προηγουμενως.

next step, create repo  & import data

στο φακελο που θελουμε παταμε

Code:
cd /path/to/repo
svnadmin create repos

τωρα εχουμε δημιουργησει τη ριζα του svn δεντρου και μπορουμε με import να γεμισουμε με δεδομενα που θελουμε.

εστω οτι εχουμε σε ενα φακελο πχ /home/vag ενα φακελο με ονομα test που εχει το συνολο των αρχειων κωδικα που θελουμε να βαλουμε στο svn. Πρεπει να διαμορφωσουμε τον φακελο ακολουθωντας την κοινη πρακτικη που λεει διαμορφωση κατα

/home/vag/myproject/
trunk/
branches/
tags/

όπου τα αρχεια του κωδικα τα βαζουμε ολα στο φακελο trunk.

Για να κανουμε το βημα του  import κανουμε

Code:
svn import /home/vag/test file:///path/to/repo/test -m "initial import"

τωρα εχουμε ολοκληρωσει και το βημα create repo και το βημα import data. Με ls στο φακελο που καναμε import δεν θα δουμε τα αρχεια καθως αυτα βρισκονται στις εσωτερικες βασεις δεδομενων του svn. Εαν κανουμε τοπικα checkout θα παρουμε τον φακελο test οπως τον ειχαμε.

Τωρα μενει να διαμορφωσουμε τον apache να κανει διαθεσιμο το δεντρο μεσω http.


Title: Re: Ubuntu 12.04 Subversion setup log files
Post by: BOBoMASTORAS on August 29, 2012, 15:39:07 pm
Στα πολύ γρήγορα

Create repository:

Code:
# mkdir /var/subversion
# svnadmin create /var/subversion/repository
# chown -R www-data:www-data /var/subversion/repository
# touch /etc/subversion/.htpasswd
# chmod 600 /etc/subversion/.htpasswd
# cp /var/subversion/repository/conf/authz /etc/subversion/authz
# chown root:www-data /etc/subversion/authz
# chmod 640 /etc/subversion/authz

Create Apache configuration:

edit /etc/apache2/sites-available/default

Code:
        <Location />

                # Use module dav_svn
                DAV svn

                # Repositories parent directory
                SVNParentPath /var/subversion

                # Authentication
                AuthType basic
                AuthName "Subversion Repository"
                AuthUserFile /etc/subversion/.htpasswd
                Require valid-user

                # Authorization
                AuthzSVNAccessFile /var/subversion/repository/conf/authz

                # Revoke default deny to all rule
                Order Allow,Deny
                Allow from all
                Deny from none

        </Location>

Add second repository
Code:
# svnadmin create /var/subversion/repository2
# chown -R www-data:www-data /var/subversion/repository2

Add user
Code:
# htpasswd /etc/subversion/.htpasswd username

Add ACLs for user
edit /etc/subversion/authz

Code:
[repository:/]
username = rw
username2 = r
* =

[repository:/branches/username2]
username2 = rw

[repository2:/]
username = rw
username2 = rw
* = r


Title: Re: Ubuntu 12.04 Subversion setup log files
Post by: edenaxas on August 29, 2012, 15:44:34 pm
cool!

thanx, θα το δω!


Title: Re: Ubuntu 12.04 Subversion setup log files
Post by: BOBoMASTORAS on August 29, 2012, 15:48:39 pm
ξέχασα να πω ότι access του repository θα γίνεται με

svn co http://example.org/repository

και του repository2
svn co http://example.org/repository2

Αν δε θες να είναι στο / πάνω στο domain σου αλλάξεις το Location directive του apache πχ <Location /svn>

οπότε μετά τα repository γίνονται
svn co http://example.org/svn/repository

κτλ

Το σετάρισμα που έβαλα παραπάνω επιτρέπει σε ένα parent directory να υπάρχουν πολλά repositories. Στο documentation του svn αναφέρει και ένα άλλο το οποίο θέλει ξεχωριστά directives για κάθε repository. Προτιμώ αυτό που ανέφερα καθώς έτσι δεν απαιτείται να αλλαχθεί το config του apache, κάθε φορά που δημιουργείται νέο repo

Το μειονέκτημα του παραπάνω setup είναι ότι πρέπει πάντα να υπάρχει το όνομα του repository στο URI. Δλδ μπορείς με αυτό τον τρόπο να κάνεις access το repository με
svn co http://example.org

Για να κάνεις το παραπάνω απαιτείται ο άλλος τρόπος σεταρίσματος του apache με 1 Location directive ανα repository. (χωρίς SvnParentPath)

Προσοχή αν έχεις alias /repository στον apache τότε όποτε κάνεις access το http://example.org/repository θα παίρνεις ένα περίεργο error message στα log files του apache. Αυτό συμβαίνει γιατί ο apache δε ξέρει αν πρέπει να εξυπηρετήσει το svn dav repository ή το alias


Title: Re: Ubuntu 12.04 Subversion setup log files
Post by: edenaxas on August 31, 2012, 06:51:15 am
xm κανοντας - ακριβως - οτι λες παραπανω, στο co μου δινει κενο xml απαντηση - null αποκριση.

Παντως κανεις ακριβως οτι λεει το red bean οποτε μαλλονσιγουρα κατι κανω εγω λαθος.

Σε καθε περιπτωση, βρηκα πολυ πιο ευκολο το στησιμο του svnserve για συνδεση σε δικτυο. Μπορεις εαν θελεις να κανεις configure και SASL και να εχεις επιπλεον ασφαλεια.

Πανω κατω εαν ακολουθησεις αυτο (http://www.tonyspencer.com/2007/03/02/setup-a-subversion-server-in-4-minutes/), σε πολυ λιγο θα εχεις svn server ετοιμο, με επιπλεον βηματα για Sasl που υπαρχουν αναλυτικα στο red bean μπορεις να εχεις και ασφαλεια - περα απο την στοιχειωδη userpass ασφαλεια που δινει το svnserve.


Title: Re: Ubuntu 12.04 Subversion setup log files
Post by: BOBoMASTORAS on August 31, 2012, 12:49:28 pm
ο svnserve όταν είχα διαβάσει εγώ έλεγε ότι δεν είναι να τον ανοίξεις στον internet. Μπορεί να έχεις κρυπτογράφηση μέσω ssl, αλλά το θέμα είναι ότι αυτοί που έγραψαν το subversion δε σου εγγυόνται ότι το svnserve δεν έχει exploits, stack overflows και όλα τα σχετικά. Οπότε προτιμώ τον apache. Άλλωστε μέσω του dav_svn μπορείς να έχεις read πρόσβαση στα αρχεία από οποιοδήποτε υπολογιστή έχει σύνδεση στο internet χωρίς κάποιο ειδικό πρόγραμμα.