GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come configurare un server SVN su CentOS

Questo tutorial spiega come configurare e utilizzare un server di repository SVN su CentOS. Prima di iniziare, lascia che ti spieghi cosa rappresenta effettivamente SVN e a cosa serve. SVN è in realtà un'abbreviazione di SubVersion che era stata creata dallo sviluppatore di software Apache. Ti consente di creare e mantenere il tuo repository e fornisce diritti di accesso granulari a un utente dedicato.

È molto efficace per controllare il controllo delle versioni di file, documenti o cartelle. È molto utile per qualsiasi gruppo o team che intende avviare i propri progetti software.

1. Nota preliminare

Per questo tutorial, sto usando CentOS 6.4 nella versione a 32 bit. Il risultato finale ti mostrerà come un client dedicato può gestire l'accesso al repository SVN utilizzando qualsiasi tipo di piattaforma del sistema operativo.


2. Installazione SVN

Per iniziare con un nuovo server SVN, dobbiamo installare determinati pacchetti. I pacchetti correlati sono apache httpd, mod_dav_svn e subversion. Il pacchetto HTTPD è necessario come servizio di server Web per questo processo.

Poiché questo tutorial utilizza il sistema operativo CentOS, prenderemo i pacchetti dal repository yum. Puoi utilizzare altri pacchetti come nginx, lighttpd o qualsiasi servizio di server Web familiare per sostituire httpd, se lo desideri. Di seguito sono riportati i passaggi:

ifconfig
[[email protected] ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
inet addr:192.168.43.101 Bcast:192.168.43.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe61:e488/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4640 errors:0 dropped:0 overruns:0 frame:0
TX packets:6845 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:444461 (434.0 KiB) TX bytes:549473 (536.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2125 errors:0 dropped:0 overruns:0 frame:0
TX packets:2125 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:186888 (182.5 KiB) TX bytes:186888 (182.5 KiB)
yum install -y httpd
[[email protected] ~]# yum install -y httpd
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.i686 0:2.2.15-26.0.1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
httpd i686 2.2.15-26.0.1.el6 OEL64 825 k
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 825 k
Installed size: 2.8 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : httpd-2.2.15-26.0.1.el6.i686 1/1
Verifying : httpd-2.2.15-26.0.1.el6.i686 1/1
Installed:
httpd.i686 0:2.2.15-26.0.1.el6
Complete!
yum install -y subversion
[[email protected] ~]# yum install -y subversion
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package subversion.i686 0:1.6.11-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
subversion i686 1.6.11-7.el6 OEL64 2.2 M
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 2.2 M
Installed size: 11 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : subversion-1.6.11-7.el6.i686 1/1
Verifying : subversion-1.6.11-7.el6.i686 1/1
Installed:
subversion.i686 0:1.6.11-7.el6
Complete!
yum install -y mod_dav_svn
[[email protected] ~]# yum install -y mod_dav_svn
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mod_dav_svn.i686 0:1.6.11-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
mod_dav_svn i686 1.6.11-7.el6 OEL64 79 k
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 79 k
Installed size: 161 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : mod_dav_svn-1.6.11-7.el6.i686 1/1
Verifying : mod_dav_svn-1.6.11-7.el6.i686 1/1
Installed:
mod_dav_svn.i686 0:1.6.11-7.el6
Complete!


3. Configurazione SVN

Ottimo, ora la parte di installazione è terminata. Successivamente, andremo avanti nella parte di configurazione. Innanzitutto, creiamo una directory dedicata per l'utilizzo del repository SVN. Questo è un processo facoltativo, ma è una buona pratica quando si implementa per un gruppo su scala più ampia. Di seguito sono riportati i passaggi:

mkdir /data/svn

Ora creeremo la nostra prima directory di repository, la chiamerò repo1 . Poiché un client sarà in grado di accedere al repository tramite browser o strumenti client SVN in un secondo momento, concederemo la proprietà della directory ad Apache poiché è il proprietario del servizio del server Web. Di seguito sono riportati i passaggi:

svnadmin create /data/svn/repo1
chown -R apache:apache /data/svn/repo1

Una volta terminato, noterai che diverse cartelle e file correlati verranno creati per impostazione predefinita nella nostra nuova directory di repository.

cd /data/svn/repo1
ls
[[email protected] repo1]# ls
conf db format hooks locks README.txt


Ora modifichiamo il file di configurazione per soddisfare i nostri requisiti. Per prima cosa, modificheremo il file di configurazione svnserver.conf per accettare i relativi privilegi che assegneremo all'utente concesso. Di seguito sono riportati i passaggi:

cd conf/
ls
[[email protected] conf]# ls
authz passwd svnserve.conf
vi svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

Quindi crea un nuovo file chiamato passwd che conterrà un elenco di utenti per il repository SVN. Di seguito sono riportati i passaggi:

htpasswd -c /data/svn/repo1/conf/passwd jay
[[email protected] conf]# htpasswd -c /data/svn/repo1/conf/passwd jay
New password:
Re-type new password:
Adding password for user jay
[[email protected] conf]# cat passwd
jay:14hCNCmBZY/qA

Fatto, abbiamo creato correttamente un utente per l'utilizzo del repository SVN. Creiamo altri 2 utenti per accedere al repository SVN. Di seguito sono riportati i passaggi:

htpasswd /data/svn/repo1/conf/passwd fikri
[[email protected] conf]# htpasswd /data/svn/repo1/conf/passwd fikri
New password:
Re-type new password:
Adding password for user fikri
htpasswd /data/svn/repo1/conf/passwd farid
[[email protected] conf]# htpasswd /data/svn/repo1/conf/passwd farid
New password:
Re-type new password:
Adding password for user farid
[[email protected] conf]# cat passwd
jay:14hCNCmBZY/qA
fikri:/hlooqJMfYLkw
farid:P7Zvu6B3HyFGo


Fatto, ora ci sono 3 utenti elencati per l'uso del repository SVN. Per questa pratica, vorrei mostrare come possiamo limitare i privilegi di un utente. Assegniamo il privilegio per accedere al repository repo1. Per fare ciò, dobbiamo modificare il file di configurazione authz. Di seguito sono riportati i passaggi:

vi authz
[repo1:/]
farid = r
fikri = rw
* =

Sulla base della configurazione sopra, abbiamo impostato privilegi diversi per i 3 utenti che abbiamo creato in precedenza. Abbiamo assegnato all'utente FARID i privilegi di SOLA LETTURA, FIKRI ai privilegi di LETTURA SCRITTURA e JAY o altri a non avere alcun privilegio. Significa che più avanti nel test ti mostrerò che l'utente JAY non sarà in grado di visualizzare alcun file nel repository repo1.

Ora modifichiamo il file di configurazione del servizio HTTPD.

vi /etc/httpd/conf/httpd.conf

Verificare che esista la riga seguente per includere i file di configurazione esterni nel file httpd.conf. Se non esiste, aggiungilo alla fine del file.

[.....]
Include conf.d/*.conf
[.....]

Successivamente andiamo nella directory conf.d per apportare alcune modifiche ai relativi file di configurazione. Noterai che esiste già un file subversion.conf. Modifica il file per rendere il repository disponibile per essere visualizzato nel browser Di seguito sono riportati i passaggi :-

cd /etc/httpd/conf.d/
ls
[[email protected] conf.d]# ls
mod_dnssd.conf README subversion.conf welcome.conf
vi subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /repo1>
DAV svn
SVNPath /data/svn/repo1
Authtype Basic
AuthName "My Repository"
AuthzSVNAccessFile /data/svn/repo1/conf/authz
AuthUserFile /data/svn/repo1/conf/passwd
Require valid-user
</Location>

Le prime due righe caricano il modulo SVN di apache, le righe successive definiscono che l'URL /repo1 punta al nostro repository creato.

Abbiamo anche impostato che utenti specifici abbiano privilegi di lettura/scrittura su elementi specifici all'interno del repository utilizzando AuthzSVNAccessFile. L'elenco degli utenti sarà preso dal file /data/svn/repo1/conf/passwd.

Ora riavvia il server HTTPD per caricare le modifiche alla configurazione effettuate.

service httpd restart
[[email protected] conf.d]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]


4. Fase di test SVN

Verifichiamo se la configurazione che abbiamo fatto soddisfa lo scopo o meno. Per la fase di test, utilizzerò 2 diverse macchine client. Userò Microsoft Windows e un desktop Linux CentOS 6.4.

Per prima cosa andrò sulla macchina Linux CentOS 6.4 e verificherò il repository nel sistema locale. Come client Linux, dobbiamo installare il pacchetto subversion per connetterci al repository SVN.

yum install -y subversion 
[[email protected] ~]# yum install -y subversion 
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package subversion.i686 0:1.6.11-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
subversion i686 1.6.11-7.el6 OEL64 2.2 M
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 2.2 M
Installed size: 11 M
Downloading Packages:
--------------------------------------------------------------------------------------------------------------
Total 70 MB/s | 2.2 MB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : subversion-1.6.11-7.el6.i686 1/2
Verifying : subversion-1.6.11-7.el6.i686 2/2
Installed:
subversion.i686 0:1.6.11-7.el6
Complete!

mkdir repo_client
svn co http://192.168.43.101/repo1 repo_client
[[email protected] ~]# mkdir repo_client
[[email protected] ~]# svn co http://192.168.43.101/repo1 repo_client
Authentication realm: <http://192.168.43.101:80> My Repository
Password for 'fikri':
-----------------------------------------------------------------------
ATTENTION! Your password for authentication realm:
<http://192.168.43.101:80> My Repository
can only be stored to disk unencrypted! You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible. See the documentation for details.
You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
Checked out revision 0.
[[email protected] ~]# cd repo_client/
[[email protected] repo_client]# ls -a
. .. .svn

Eccellente! Siamo riusciti a controllare il repository dal nostro server SVN utilizzando l'utente fikri. Ora, per verificare se questo utente ha i privilegi di LETTURA e SCRITTURA, creeremo una cartella all'interno della directory del repository.

cd repo_client/
svn mkdir first_dir

E quindi ripristina la modifica nel repository:

svn commit -m "My first folder"

Vedrai questo:

Committed revision 1.

Ciò significa che il nostro impegno ha avuto successo.


Ottimo lavoro! Siamo riusciti a creare una cartella all'interno della directory del repository e abbiamo eseguito il commit.

Ora proviamo questo su una macchina Microsoft Windows. Sfoglia l'URL del repository tramite il browser Firefox. Puoi utilizzare uno qualsiasi dei tuoi browser preferiti per testarlo. Una volta inserito l'URL http://192.168.43.101/repo1 nel campo del browser, verrà visualizzata una finestra di autorizzazione come quella seguente:

Accedi con l'utente JAY. Presumo che questo utente non sarà in grado di accedere alla pagina in quanto non è un membro del gruppo privilegiato.

Bene, ora facciamo un test finale per questo tutorial. Usiamo la macchina Microsoft Windows come client SVN. Per fare ciò, dobbiamo installare un software client SVN, per questi casi userò TortoiseSVN . Puoi scaricarlo qui o utilizzare uno qualsiasi dei tuoi client SVN familiari.

Una volta installato, crea una nuova cartella nel tuo computer Windows e denominala come testSVN.


Quindi fai clic con il pulsante destro del mouse sulla cartella, noterai che ci sono collegamenti per SVN CheckOut ora (se non vedi i collegamenti, riavvia Windows). Fare clic su "SVN Checkout" per procedere.

Una volta cliccato, verrà visualizzata una finestra popup come quella qui sotto. Immettere il repository del server SVN nel campo URL, quindi fare clic su OK.

Verrà visualizzata una finestra popup che richiede di inserire un nome utente e una password per l'autenticazione. In questi casi, utilizzeremo l'utente FARID per procedere.

Al termine, una finestra popup mostrerà che il checkout del repository SVN è stato completato. Da qui, possiamo concludere che l'utente FARID ha il privilegio di LEGGERE dal repository.

Noterai che la cartella creata in precedenza dall'utente FIKRI esiste nella tua directory testSVN.

Per finire la prova. Proviamo che l'utente FARID dovrebbe avere accesso in SOLA LETTURA. Per farlo, entriamo nella cartella FIRST_DIR e creiamo un'altra cartella, io la chiamo SECOND_DIR

Una volta creato, fai clic con il pulsante destro del mouse sulla cartella e passa con il mouse su TortoiseSVN, vedrai che ci sono molte scelte elencate lì. Per procedere, fai clic su Aggiungi pulsante. Questo pulsante aggiungerà la cartella che abbiamo creato al repository svn locale.

Verrà visualizzata una finestra popup come quella qui sotto, fai clic su OK per procedere.

Al termine, verrà visualizzato un messaggio popup come di seguito. Ora hai creato con successo una cartella nel repository del tuo client.

Anche se la cartella è stata creata e aggiunta localmente con successo, non è ancora sincronizzata con il server SVN, quindi altri utenti di altre macchine non saranno in grado di vedere la cartella che abbiamo appena creato. Salva e salva la cartella ora. Per farlo, fai clic con il pulsante destro del mouse sulla cartella e fai clic su Commit SVN come da screenshot qui sotto.


Verrà visualizzata una finestra popup come quella di seguito per chiederti di confermare diversi dettagli. Digita qualsiasi commento facoltativo, quindi fai clic su OK per procedere.

Apparirà una casella di autorizzazione per richiedere un nome utente di accesso. Digita come utente FARID e procedi.

Una volta fatto, ti verrà mostrato un errore in cui si afferma che ti è vietato apportare le modifiche. Questo è quello che ci aspettavamo poiché l'utente farid ha solo i privilegi di sola lettura.

Congratulazioni! Ora abbiamo impostato il nostro primo server SVN e configurato correttamente i privilegi appropriati su determinate limitazioni utente.


Cent OS
  1. Come configurare un server SFTP su CentOS

  2. Come configurare il server SysLog su CentOS 7 / RHEL 7

  3. Come configurare il server NFS su CentOS 7 / RHEL 7

  4. Come configurare il server SVN su CentOS, RHEL e Fedora

  5. Come configurare il server NTP in CentOS?

Come configurare Samba Print Server su CentOS

Come configurare il server di posta elettronica Zimbra su CentOS 7

Come configurare il server di backup centralizzato con Amanda su CentOS 7

Come configurare il server SysLog centralizzato su CentOS 8 / RHEL 8

Come eseguire la configurazione iniziale del server CentOS 7

Come configurare HAProxy su CentOS 8