Apache Subversion atau SVN adalah versi perangkat lunak sumber terbuka dan sistem kontrol revisi yang dikembangkan oleh Apache Software Foundation. Ini digunakan untuk memelihara versi terkini dan historis dari kode sumber, dokumen, dan halaman web.
Subversion atau svn banyak digunakan untuk proyek besar dan komunitas open source seperti Apache Software Foundation, FreeBSD, GCC, SourceForge dll.
Pada artikel ini, saya akan menunjukkan kepada Anda cara mengatur Apache Subversion menggunakan server Ubuntu 18.04 LTS. Kami akan menginstal dan mengonfigurasi perangkat lunak svn dengan Apache sebagai server web, mengaktifkan 'otentikasi dasar' untuk pengguna, dan mengamankan akses dengan menggunakan Letsencrypt SSL untuk akses repositori.
Dan bagi mereka yang lebih menyukai GIT, tutorial GIT Ubuntu 18.04 ada di sini.
Prasyarat
- Ubuntu 18.04
- Hak istimewa root
Apa yang akan kami lakukan
- Instal server web Apache2 di Ubuntu 18.04
- Instal Apache Subversion (SVN)
- Konfigurasikan Repositori Subversi
- Buat SSL Letsencrypt untuk Ubuntu Apache2
- Konfigurasi Subversion Virtual Host di Apache2
- Pengujian
Langkah 1 - Instal server web Apache2 di Ubuntu 18.04 LTS
Pada langkah pertama ini, kita akan menginstal server web Apache2 dan menambahkan layanan baru ssh dan HTTP ke konfigurasi firewall ufw.
Instal server web Apache2 menggunakan perintah apt di bawah ini.
sudo apt install apache2 apache2-utils -y
Setelah instalasi selesai, tambahkan layanan SSH dan HTTP ke konfigurasi firewall ufw.
Jalankan perintah ufw di bawah ini.
ufw allow ssh
ufw allow http
Aktifkan firewall.
ufw enable
Sekarang mulai layanan Apache2 dan aktifkan untuk diluncurkan setiap kali sistem boot.
systemctl start apache2
systemctl enable apache2
Server web Apache2 aktif dan berjalan, serta layanan SSH dan HTTP telah ditambahkan ke daftar layanan firewall.
Langkah 2 - Instal Apache Subversion (SVN)
Dalam tutorial ini, kita akan menginstal subversion dan paket svn libapache dari repositori resmi Ubuntu.
Instal Subversion menggunakan perintah apt di bawah ini.
sudo apt install subversion subversion-tools libapache2-mod-svn -y
Sekarang periksa perintah svn.
svn --version
Apache Subversion (SVN) telah diinstal pada Server Ubuntu 18.04.
Langkah 3 - Konfigurasikan Repositori Subversi
Setelah instalasi Subversion, kita akan mengkonfigurasi direktori repositori master Subversion. Kami akan membuat direktori 'svn' baru yang akan digunakan untuk menyimpan semua kode sumber dan repositori.
Buat direktori master '/svn' baru.
mkdir /svn
Dan buat repositori sampel baru bernama 'hakase-project' menggunakan perintah svnadmin di bawah ini.
svnadmin create /svn/hakase-project
Sekarang ubah pemilik direktori '/svn/hakase-project' menjadi pengguna dan grup 'apache'.
sudo chown -R apache:apache /svn/hakase-project
Dan repositori svn telah dibuat.
Langkah 4 - Buat Sertifikat SSL Letsencrypt
Dalam tutorial ini, kita akan mengkonfigurasi server svn untuk menggunakan koneksi HTTPS dengan domain bernama 'svn.hakase-labs.io'. Kami akan menggunakan SSL Letsencrypt gratis, dan dapat dibuat menggunakan alat certbot.
Instal certbot di server Ubuntu menggunakan perintah yum di bawah ini.
sudo apt install certbot -y
Setelah instalasi selesai, kita perlu menambahkan layanan HTTPS ke daftar layanan firewall ufw.
Jalankan perintah ufw di bawah ini.
ufw allow https
ufw reload
Sekarang hentikan layanan httpd, sehingga kami dapat membuat SSL Letsencrypt menggunakan server web sementara 'mandiri'.
systemctl stop apache2
Buat Letsencrypt SSL untuk nama domain 'svn.hakase-labs.io' menggunakan perintah certbot di bawah ini.
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d svn.hakase-labs.io
Dan setelah selesai, Anda akan mendapatkan file sertifikat di dalam direktori '/etc/letsencrypt/live'.
Langkah 5 - Konfigurasikan Subversion Virtual Host di Apache2
Pada langkah ini, kita akan membuat konfigurasi Apache httpd baru untuk akses svn. Kami akan mengonfigurasi repositori svn menggunakan nama domain 'svn.hakase-labs.io', dan hanya dapat diakses oleh pengguna terdaftar yang menggunakan otentikasi dasar HTTP.
Buka direktori konfigurasi '/etc/apache2'.
cd /etc/apache2/
Buat konfigurasi host virtual subversi baru 'svn.conf' pada direktori 'sites-available'.
cd sites-available/
vim svn.conf
Tempelkan konfigurasi di bawah ini.
<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>
Simpan dan keluar.
Selanjutnya, kita perlu membuat daftar pengguna baru yang dapat melihat dan mengkomit file ke repositori.
Buat pengguna baru bernama 'hakase' menggunakan perintah htpasswd.
sudo htpasswd -cm /etc/subversion/svn.users hakase
Aktifkan modul SSL di apache dan aktifkan svn virtual host dengan menjalankan perintah di bawah ini.
sudo a2enmod ssl
sudo a2ensite svn
Mulai ulang layanan Apache2.
systemctl restart apache2
Konfigurasi virtual host untuk Subversion telah dibuat, dan pengguna 'hakase' sekarang memiliki akses untuk melihat dan mengkomit kode sumber ke repositori 'hakase-project'.
Langkah 6 - Pengujian
Lihat Repositori
Buka browser web Anda dan ketik URL server, milik saya adalah yang di bawah ini).
https://svn.hakase-labs.io/repo/hakase-project/
Dan Anda akan diperlihatkan otentikasi pengguna dasar.
Login dengan user dan password 'hakase', dan Anda akan mendapatkan halaman kosong halaman repositori seperti di bawah ini.
Impor Proyek ke Repositori SVN
Sekarang kita akan mengimpor template proyek sampel svn ke repositori 'hakase-project'.
Buat direktori proyek svn-templates baru.
mkdir -p ~/svn-templates/{trunk,branches,tags}
Tambahkan direktori templates ke repositori 'hakase-project' menggunakan perintah svn di bawah ini.
svn import -m 'Initial import' ~/svn-templates/ https://svn.hakase-labs.io/repo/hakase-project/ --username hakase
Anda akan ditanya tentang beberapa hal, bertindaklah dengan cara berikut.
- Ketik 'p' untuk menambahkan sertifikat Letsencrypt secara permanen.
- Ketikkan pengguna dan sandi 'hakase'.
- Dan ketik 'ya' untuk mengonfirmasi tentang penyimpanan sandi yang tidak terenkripsi.
Periksa 'hakase-project' dari browser web, dan Anda akan mendapatkan semua direktori template di dalamnya.
Klon Repositori
Setelah membuat dan mengunggah direktori template svn, kami akan mencoba mengkloning repositori ke lingkungan lokal.
Masuk ke pengguna non-root/normal.
useradd -m -s /bin/bash misaka
su - misaka
Klon ke repositori 'hakase-project' direktori lokal bernama 'myproject' sebagai pengguna 'hakase'.
svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase
Periksa direktori 'myproject' baru dan Anda akan mendapatkan semua template svn.
tree ~/myproject
Membuat Kode Sumber
Buka direktori 'proyek saya'.
cd myproject/
Buat beberapa file di direktori '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
Tambahkan dan komit
svn add trunk/* --username hakase
svn commit -m 'new file added' --username hakase
Periksa repositori dari browser web, dan Anda akan mendapatkan semua file telah ditambahkan ke repositori.
Instalasi dan konfigurasi Apache Subversion di Ubuntu 18.04 LTS Server telah berhasil diselesaikan.