Apache Subversion o SVN è un software di controllo delle versioni e delle versioni open source sviluppato dalla Apache Software Foundation. Viene utilizzato per mantenere le versioni attuali e storiche del codice sorgente, dei documenti e delle pagine Web.
Subversion è utilizzato da molti sviluppatori di software e progetti open source come Apache Software Foundation, FreeBSD, GCC e SourceForge.
In questo articolo, ti mostriamo come configurare Apache Subversion sul server CentOS 7 più recente. Installiamo e configuriamo il software svn con Apache come web server, lo proteggiamo con Let's encrypt e attiviamo "Autenticazione di base" per gli utenti.
Prerequisiti
- Server CentOS 7
- Privilegi di root
Cosa faremo
- Installa Apache Httpd su CentOS 7
- Installa Subversion
- Configura il repository Subversion
- Genera SSL Letsencrypt per CentOS Apache Httpd
- Configura Subversion Virtual Host su Apache Httpd
- Test
Passaggio 1:installa Apache Httpd su CentOS 7
Il primo passo in questa guida è installare i pacchetti httpd di Apache sul tuo sistema.
Installa Apache httpd usando il comando yum di seguito.
yum -y install httpd httpd-tools mod_ssl
E al termine dell'installazione, è necessario aggiungere il servizio HTTP agli elenchi dei servizi firewalld.
Esegui i comandi firewall-cmd di seguito.
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
Ora avvia il servizio httpd e aggiungilo per essere avviato all'avvio.
systemctl start httpd
systemctl enable httpd
Apache httpd è attivo e funzionante sul server.
Passaggio 2:installazione di Apache Subversion (SVN)
In questo tutorial, installeremo i pacchetti di subversion dal repository CentOS 7 di base.
Installa Subversion e tutti i pacchetti richiesti usando il comando yum qui sotto.
yum -y install subversion subversion-tools mod_dav_svn
Attendi che tutti i pacchetti siano installati, quindi controlla la versione svn.
svn --version
Passaggio 3:configurazione del repository Subversion (SVN)
Dopo l'installazione di Subversion, configuriamo la directory del repository di Subversion principale. Creeremo una nuova directory 'svn' in cui verranno archiviati tutto il codice sorgente e i repository.
Crea una nuova directory principale '/svn'.
mkdir /svn
E crea un nuovo repository di esempio chiamato 'hakase-project' usando il comando svnadmin di seguito.
svnadmin create /svn/hakase-project
Ora cambia il proprietario della directory '/svn/hakase-project' con l'utente e il gruppo 'apache'.
sudo chown -R apache:apache /svn/hakase-project
E il repository svn è stato creato.
Nota:
Aggiuntivo per gli utenti SELinux, esegui i comandi di seguito.
chcon -R -t httpd_sys_content_t /svn/hakase-project
chcon -R -t httpd_sys_rw_content_t /svn/hakase-project
Fase 4:genera Let's encrypt SSL Certificate per Apache
In questo tutorial, configuriamo il server svn per utilizzare la connessione HTTPS con un dominio denominato 'svn.hakase-labs.io'. Utilizzeremo un certificato SSL Let's encrypt gratuito che può essere generato con lo strumento certbot.
Installa certbot sul server CentOS con il comando yum di seguito.
yum -y install certbot
Al termine dell'installazione, è necessario aggiungere il servizio HTTPS all'elenco dei servizi firewalld.
Esegui i comandi firewalld di seguito.
firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --reload
Ora interrompi il servizio httpd, così possiamo generare SSL Letsencrypt utilizzando il server web temporaneo 'standalone'.
systemctl stop httpd
Genera il certificato SSL Letsencrypt per il nome di dominio 'svn.hakase-labs.io' utilizzando il comando certbot di seguito.
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d svn.hakase-labs.io
Ora otterrai i file del certificato nella directory '/etc/letsencrypt/live'.
Passaggio 5:configurazione dell'host virtuale Subversion su Apache Httpd
In questo passaggio creeremo una nuova configurazione httpd di Apache per l'accesso svn. Configurare il repository svn utilizzando un nome di dominio 'svn.hakase-labs.io' e sarà accessibile solo per gli utenti registrati che utilizzano l'autenticazione di base HTTP.
Vai alla directory '/etc/httpd/conf.d' e crea una nuova configurazione svn 'svn.conf'.
cd /etc/httpd/conf.d/
vim svn.conf
Incolla le configurazioni di seguito.
<VirtualHost svn.hakase-labs.io:80> ServerName svn.hakase-labs.io DocumentRoot /var/www/html Redirect permanent / https://svn.hakase-labs.io </VirtualHost> <VirtualHost svn.hakase-labs.io:443> DocumentRoot /var/www/html ServerName svn.hakase-labs.io SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /etc/letsencrypt/live/svn.hakase-labs.io/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/svn.hakase-labs.io/privkey.pem ErrorLog logs/svn_error_log TransferLog logs/svn_access_log LogLevel warn <location /repo> DAV svn SVNParentPath /svn/ AuthType Basic AuthName "Authorization Realm" AuthUserFile /etc/subversion/svn.users Require valid-user </location> <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
Salva il file ed esci dall'editor.
Successivamente, dobbiamo creare un nuovo elenco di utenti che potranno visualizzare e inviare file al repository.
Crea un nuovo utente chiamato 'hakase' usando il comando htpasswd qui sotto.
sudo htpasswd -cm /etc/subversion/svn.users hakase
Ora riavvia i servizi httpd di Apache.
systemctl restart httpd
L'utente 'hakase' ora ha accesso per visualizzare e inviare il codice sorgente al repository 'hakase-project'.
Fase 6 - Test
Visualizzazione del repository
Apri il tuo browser web e digita l'URL del server, il mio è questo: https://svn.hakase-labs.io/repo/hakase-project/
E ti verrà mostrata la richiesta di autenticazione utente di base.
Accedi con l'utente e la password 'hakase', e di seguito è riportato il risultato.
Importa un progetto nel repository
Ora importeremo i modelli di progetto di esempio svn nel repository 'hakase-project'.
Crea una nuova directory di progetto svn-templates.
mkdir -p ~/svn-templates/{trunk,branches,tags}
Aggiungi tutte le directory dei modelli al repository 'hakase-project' usando il comando svn di seguito.
svn import -m 'Initial import' ~/svn-templates/ https://svn.hakase-labs.io/repo/hakase-project/ --username hakase
Ora ti verrà chiesto di seguire le cose.
- Digita 'p' per aggiungere permanentemente il certificato Letsencrypt.
- Digita l'utente e la password 'hakase'.
- E digita 'sì' per confermare il salvataggio della password non crittografata.
Controlla il "progetto hakase" dal browser web e otterrai tutte le directory dei modelli su di esso.
Clone il repository
Dopo aver creato e caricato la directory dei modelli svn, vogliamo clonare o copiare il repository nell'ambiente locale.
Crea un nuovo utente normale e accedi all'utente.
useradd -m -s /bin/bash misaka
su - misaka
Clona il repository 'hakase-project' nella directory locale denominata 'myproject' come utente 'hakase'.
svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase
E ti verrà chiesto di nuovo di queste cose di seguito.
- Digita 'p' per aggiungere permanentemente il certificato Letsencrypt.
- Digita l'utente e la password 'hakase'.
- E digita 'sì' per confermare il salvataggio della password non crittografata.
E quando è completo, controlla la nuova directory 'myproject' e otterrai tutti i modelli svn.
tree ~/myproject
Commit The Code o Documents
Vai alla directory 'mioprogetto'.
cd myproject/
Crea alcuni file nella directory 'trunk'.
echo 'this is my repo' > trunk/test-hakase.txt
echo 'this is my repo01' > trunk/test-hakase01.txt
echo 'this is my repo02' > trunk/test-hakase02.txt
Aggiungi e impegna.
svn add trunk/* --username hakase
svn commit -m 'new file added' --username hakase
Controlla il repository dal browser web e vedrai che tutti i file sono stati aggiunti al repository.
L'installazione e la configurazione di Apache Subversion con HTTPS Letsencrypt su CentOS 7 sono state completate con successo.