Apache Subversion o SVN è un sistema di controllo delle versioni e delle versioni del software 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 o svn ampiamente utilizzato per il grande progetto e la comunità open source come Apache Software Foundation, FreeBSD, GCC, SourceForge ecc.
In questo articolo, ti mostrerò come configurare Apache Subversion utilizzando il server Ubuntu 18.04 LTS. Installeremo e configureremo il software svn con Apache come server web, abiliteremo l'"autenticazione di base" per gli utenti e proteggeremo l'accesso utilizzando Letsencrypt SSL per l'accesso al repository.
E per coloro che preferiscono GIT, il tutorial GIT di Ubuntu 18.04 è qui.
Prerequisiti
- Ubuntu 18.04
- Privilegi di root
Cosa faremo
- Installa il server web Apache2 su Ubuntu 18.04
- Installa Apache Subversion (SVN)
- Configura il repository Subversion
- Genera SSL Letsencrypt per Ubuntu Apache2
- Configura Subversion Virtual Host su Apache2
- Test
Passaggio 1:installa il server Web Apache2 su Ubuntu 18.04 LTS
In questo primo passaggio, installeremo il server web Apache2 e aggiungeremo nuovi servizi ssh e HTTP alla configurazione del firewall ufw.
Installa il server web Apache2 utilizzando il comando apt di seguito.
sudo apt install apache2 apache2-utils -y
Al termine dell'installazione, aggiungi i servizi SSH e HTTP alla configurazione del firewall ufw.
Esegui i comandi ufw di seguito.
ufw allow ssh
ufw allow http
Abilita il firewall.
ufw enable
Ora avvia il servizio Apache2 e abilitalo all'avvio ogni volta all'avvio del sistema.
systemctl start apache2
systemctl enable apache2
Il server Web Apache2 è attivo e funzionante e i servizi SSH e HTTP sono stati aggiunti all'elenco dei servizi firewall.
Passaggio 2:installazione di Apache Subversion (SVN)
In questo tutorial installeremo i pacchetti subversion e svn libapache dal repository ufficiale di Ubuntu.
Installa Subversion usando il comando apt qui sotto.
sudo apt install subversion subversion-tools libapache2-mod-svn -y
Ora controlla il comando svn.
svn --version
Apache Subversion (SVN) è stato installato su Ubuntu 18.04 Server.
Fase 3 - Configura un repository Subversion
Dopo l'installazione di subversion, configureremo la directory del repository di subversion principale. Creeremo una nuova directory 'svn' che verrà utilizzata per memorizzare 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.
Passaggio 4 - Genera certificato SSL Letsencrypt
In questo tutorial, configureremo il server svn per utilizzare la connessione HTTPS con un dominio denominato 'svn.hakase-labs.io'. Utilizzeremo l'SSL gratuito Letsencrypt e può essere generato utilizzando lo strumento certbot.
Installa certbot sul server Ubuntu usando il comando yum di seguito.
sudo apt install certbot -y
Al termine dell'installazione, è necessario aggiungere il servizio HTTPS agli elenchi dei servizi firewall ufw.
Esegui i comandi ufw di seguito.
ufw allow https
ufw reload
Ora interrompi il servizio httpd, così possiamo generare SSL Letsencrypt utilizzando il server web temporaneo 'standalone'.
systemctl stop apache2
Genera il Letsencrypt SSL 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
E una volta completato, otterrai i file del certificato all'interno della directory '/etc/letsencrypt/live'.
Passaggio 5:configurazione dell'host virtuale Subversion su Apache2
In questo passaggio creeremo una nuova configurazione httpd di Apache per l'accesso a svn. Configurare il repository svn utilizzando un nome di dominio 'svn.hakase-labs.io' e sarà accessibile solo agli utenti registrati che utilizzano l'autenticazione di base HTTP.
Vai alla directory di configurazione '/etc/apache2'.
cd /etc/apache2/
Crea una nuova configurazione dell'host virtuale di subversion 'svn.conf' nella directory 'sites-available'.
cd sites-available/
vim svn.conf
Incolla la configurazione qui sotto.
<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 /var/log/apache2/svn_error_log TransferLog /var/log/apache2/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 /var/log/apache2/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
Salva ed esci.
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.
sudo htpasswd -cm /etc/subversion/svn.users hakase
Abilita il modulo SSL su Apache e abilita l'host virtuale svn eseguendo i comandi seguenti.
sudo a2enmod ssl
sudo a2ensite svn
Riavvia il servizio Apache2.
systemctl restart apache2
La configurazione dell'host virtuale per subversion è stata creata e l'utente 'hakase' ora ha accesso per visualizzare e inviare il codice sorgente al repository 'hakase-project'.
Fase 6 - Test
Visualizza repository
Apri il tuo browser web e digita l'URL del server, il mio è quello qui sotto).
https://svn.hakase-labs.io/repo/hakase-project/
E ti verrà mostrata l'autenticazione utente di base.
Accedi con l'utente e la password 'hakase' e otterrai il repository della pagina vuota come di seguito.
Importa progetto nel repository SVN
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 la directory dei modelli al repository 'hakase-project' utilizzando il comando svn di seguito.
svn import -m 'Initial import' ~/svn-templates/ https://svn.hakase-labs.io/repo/hakase-project/ --username hakase
Ti verranno chieste alcune cose, agisci nei seguenti modi.
- 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, proveremo a clonare il repository nell'ambiente locale.
Accedi all'utente non root/normale.
useradd -m -s /bin/bash misaka
su - misaka
Clona nel repository 'hakase-project' la directory locale denominata 'myproject' come utente 'hakase'.
svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase
Controlla la nuova directory 'myproject' e otterrai tutti i modelli svn.
tree ~/myproject
Imposta codice sorgente
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 otterrai che tutti i file sono stati aggiunti al repository.
L'installazione e la configurazione di Apache Subversion su Ubuntu 18.04 LTS Server sono state completate con successo.