Questa sezione descriverà come settare, amministrare e rendere sicuro un server Subversion.
Le seguenti istruzioni installeranno un server Subversion che verrà settato per usare OpenSSH come metodo sicuro di accesso remoto, con svnserve disponibile per accesso anonimo.
La configurazione del server Subversion consiste nei seguenti passi:
Bisognerà essere l'utente root per la parte di configurazione iniziale. Creare il gruppo e utente svn con i seguenti comandi:
groupadd svn &&
useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false svn
Se si vogliono avere repository multipli bisogna avere un gruppo dedicato a ciascun repository per una più semplice amministrazione. Creare il gruppo svntest per il repository di test e aggiungere l'utente svn a questo gruppo con i seguenti comandi:
groupadd svntest &&
usermod -G svntest svn
In aggiunta si può settare umask 002 mentre si lavora con un repository così che tutti i nuovi file saranno scrivibili dal proprietario e gruppo. Questo è reso obbligatorio creando uno script wrapper per svn e svnserve:
mv /usr/bin/svn /usr/bin/svn.orig && mv /usr/bin/svnserve /usr/bin/svnserve.orig && cat >> /usr/bin/svn << "EOF" #!/bin/sh umask 002 /usr/bin/svn.orig "$@" EOF cat >> /usr/bin/svnserve << "EOF" #!/bin/sh umask 002 /usr/bin/svnserve.orig "$@" EOF chmod 0755 /usr/bin/svn{,serve}
Se si usa Apache per lavorare con il repository su HTTP, anche per accesso anonimo, bisogna racchiudere /usr/sbin/httpd in uno script similare.
Con subversion-1.1.0 e successivi, è disponibile un nuovo tipo di repository data-store, FSFS. C'è un tradeoff per la velocità con il nuovo backend, tuttavia il repository ora può essere messo su un network mount, e una corruzione non impone all'amministratore di recuperare il repository. Per maggiori informazioni e confronti tra FSFS e BDB si veda http://svnbook.red-bean.com/svnbook-1.1/ch05.html#svn-ch-5-sect-1.2.A. Opzionalmente si può passare bdb al posto di fsfs nel seguente comando per creare BerkelyDB data-store.
Creare un nuovo repository Subversion con i seguenti comandi:
install -d -m0755 /srv &&
install -d -m0755 -o svn -g svn /srv/svn/repositories &&
svnadmin create --fs-type fsfs /srv/svn/repositories/svntest
Ora che il repository è creato bisogna popolarlo con qualcosa di utile. Bisognerà avere un setup predefinito del layout della directory esattamente come si vuole che appaia il proprio repository. Per esempio, qui c'è un setup di esempio del layout di BLFS con una radice di svntest/. Sarà necessario settare un albero directory simile al seguente:
svntest/ # The name of the repository trunk/ # Contains the existing source tree BOOK/ bootscripts/ edguide/ patches/ scripts/ branches/ # Needed for additional branches tags/ # Needed for tagging release points
Una volta che si è creato il proprio layout di directory come mostrato sopra si è pronti a fare l'importazione iniziale:
svn import -m "Initial import." \
[/path/to/source/tree] \
file:///srv/svn/repositories/svntest
Ora proseguire e cambiare l'informazione di proprietario e gruppo sul repository, e aggiungere il proprio utente normale ai gruppi svn e svntest:
chown -R svn:svntest /srv/svn/repositories/svntest &&
chmod -R g+w /srv/svn/repositories/svntest &&
chmod g+s /srv/svn/repositories/svntest/db &&
usermod -G svn,svntest,[insert existing groups] [username]
svntest è il gruppo assegnato al repository svntest. Come citato in precedenza questo facilita l'amministrazione di repository multipli quando si usa OpenSSH per l'autenticazione. Proseguendo bisognerà aggiungere il proprio utente regolare e ogni utente aggiuntivo che si vuole che abbia accesso in scrittura al repository, ai gruppi svn e svntest.
In aggiunta si noterà che la nuova directory db del repository è set-groupID. Se il ragionamento non è immediatamente ovvio, quando si usa un metodo di autenticazione esterno (come ssh) lo sticky bit è impostato in modo che tutti i nuovi file apparterranno all'utente, ma al gruppo svntest. Chiunque nel gruppo svntest può creare file, ma dare comunque a tutto il gruppo accesso in scrittura a questi file. Questo evita di tener fuori dal repository altri utenti.
Ora proseguire e tornare al proprio normale account utente, e dare un'occhiata al proprio nuovo repository usando svnlook:
svnlook tree /srv/svn/repositories/svntest/
Potrebbe essere necessario uscire e rientrare per rinfrescare la propria group membership. 'su [username]' dovrebbe funzionare bene a questo proposito.
Come citato in precedenza queste istruzioni configureranno il server per fargli usare solo ssh per l'accesso in scrittura al repository e per fornire accesso anonimo usando svnserve. Ci sono molti altri modi per fornire accesso al repository. Queste configurazioni aggiuntive sono spiegate meglio presso http://svnbook.red-bean.com/.
Per ciascun repository deve essere fatta una configurazione dell'accesso. Creare il file svnserve.conf per il repository svntest usando i seguenti comandi:
cp /srv/svn/repositories/svntest/conf/svnserve.conf \ /srv/svn/repositories/svntest/conf/svnserve.conf.default && cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF" [general] anon-access = read auth-access = write EOF
Non c'è molto altro sul file di configurazione. Si noterà che è necessaria solo la sezione generale. Dare un'occhiata al file svnserve.conf.default per informazioni sull'uso del metodo di autenticazione incluso in svnserve.
Ci sono molti modi di avviare svnserve. Il modo più comune è di avviarlo come un processo inetd o xinetd. In alternativa si può usare un bootscript per avviare il servizio all'accensione.
Se non si vuole fornire accesso anonimo ai propri repository svn o usare l'autenticazione inclusa in svnserve non bisogna eseguire svnserve.
Se si usa inetd aggiungere una linea a /etc/inetd.conf usando i seguenti comandi:
cat >> /etc/inetd.conf << "EOF" svn stream tcp nowait svn /usr/bin/svnserve svnserve -i EOF
Se si usa xinetd aggiungere le seguenti linee al file /etc/xinetd.conf:
cat >> /etc/xinetd.conf << "EOF" service svn { port = 3690 socket_type = stream protocol = tcp wait = no user = svn server = /usr/bin/svnserve server_args = -i -r /srv/svn/repositories } EOF
Infine se si vuole semplicemente avviare il server all'accensione installare il bootscript svn incluso nel pacchetto blfs-bootscripts-6.0.
make install-svn
Last updated on