Panduan Utama untuk Menyiapkan Apache Subversion SVN dan TortoiseSVN Untuk Kontrol Versi


Jika pekerjaan Anda memerlukan penanganan dokumen, halaman web, dan jenis file lainnya yang diperbarui secara berkala, Anda mungkin ingin menggunakan mekanisme kontrol versi jika Anda belum melakukannya.

Hal ini antara lain memungkinkan Anda (dan juga sekelompok kolaborator potensial) untuk melacak perubahan yang dibuat pada file tertentu, dan memungkinkan Anda memutar kembali ke versi sebelumnya jika terjadi masalah atau ketika pembaruan tidak memberikan hasil yang diharapkan. .

Dalam ekosistem perangkat lunak bebas, sistem kontrol versi yang paling banyak digunakan disebut Apache Subversion (atau disingkat SVN). Dengan bantuan mod_dav_svn (modul Apache untuk Subversion), Anda dapat mengakses repositori Subversion menggunakan HTTP dan server web.

Karena itu, mari kita menyingsingkan lengan baju kita dan menginstal alat ini pada RHEL/CentOS 7, Fedora 22-24, Debian 8/7 dan Server Ubuntu 16.04-15.04. Untuk pengujian kami, kami akan menggunakan server CentOS 7 dengan IP 192.168.0.100.

Di sisi klien (mesin Windows 7), kami akan menginstal dan menggunakan TortoiseSVN (yang didasarkan pada Apache Subversion) sebagai antarmuka ke SVN.

Lingkungan Pengujian Kami


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

Langkah 1 – Menginstal dan Mengonfigurasi SVN di Linux

Seperti yang baru saja kami sebutkan, kami akan mengandalkan Apache untuk mengakses repositori SVN menggunakan antarmuka web. Jika belum terinstal, pastikan untuk menambahkannya ke daftar paket seperti yang ditunjukkan di bawah ini:


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

Selama instalasi pada CentOS 7, file konfigurasi Apache untuk SVN akan dibuat sebagai /etc/httpd/conf.modules.d/10-subversion.conf. Buka file dan tambahkan blok konfigurasi berikut:


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

Catatan: Di Debian/Ubuntu Anda perlu menambahkan baris di bawah ini ke /etc/Apache2/mods-enabled/dav_svn.conf berkas .


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

Di Debian/Ubuntu, Anda perlu mengaktifkan modul dav_svn Apache:


a2enmod dav_svn

Beberapa klarifikasi:

  1. Direktif SVNParentPath menunjukkan direktori dimana repositori kita nantinya akan dibuat. Jika direktori ini tidak ada (yang kemungkinan besar terjadi), buatlah dengan:

    
    mkdir -p /websrv/svn
    

    Penting untuk dicatat bahwa direktori ini TIDAK boleh terletak di dalam, atau tumpang tindih, DocumentRoot dari host virtual yang saat ini dilayani oleh Apache. Ini adalah penghenti pertunjukan!

  2. Perintah AuthUserFile menunjukkan file tempat kredensial pengguna yang valid akan disimpan. Jika Anda ingin mengizinkan semua orang mengakses SVN tanpa autentikasi, hapus empat baris terakhir di blok Lokasi. Jika demikian, lewati Langkah 2 dan langsung menuju ke Langkah 3.
  3. Meskipun Anda mungkin tergoda untuk me-restart Apache untuk menerapkan perubahan terbaru ini, jangan lakukan itu dulu karena kita masih perlu membuat file otentikasi dengan pengguna yang valid untuk SVN, dan repositori itu sendiri.

Langkah 2 – Tambahkan Pengguna yang Diizinkan untuk Mengakses SVN

Sekarang kita akan menggunakan htpasswd untuk membuat kata sandi untuk akun yang diizinkan mengakses SVN. Hanya untuk pengguna pertama, kita memerlukan opsi -c.

Akun yang diizinkan dan sandi terenkripsi bcrypt (-B) akan disimpan di /etc/httpd/subversion-auth dalam pasangan nilai kunci. Perhatikan bahwa menurut standar saat ini, enkripsi MD5 atau SHA default yang digunakan oleh htpasswd dianggap tidak aman.


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

Jangan lupa untuk mengatur hak kepemilikan dan izin pada file otentikasi:


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

Langkah 3 – Tambahkan Keamanan dan Buat Repositori SVN

Karena Anda akan mengakses SVN melalui antarmuka web, Anda harus mengizinkan lalu lintas HTTP (dan opsional HTTPS) melalui firewall Anda.


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

Dengan memuat ulang konfigurasi firewall dengan --reload, pengaturan permanen akan segera diterapkan.

Buat repositori SVN awal yang disebut tecmint:


svnadmin create /websrv/svn/tecmint

Ubah pemilik dan pemilik grup menjadi apache secara rekursif:


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

Terakhir, Anda perlu mengubah konteks keamanan /websrv/svn/tecmint (perhatikan bahwa Anda harus mengulangi langkah ini jika Anda memutuskan untuk membuat repositori lain nanti):


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

Catatan: Dua perintah terakhir mungkin tidak berlaku jika Anda menginstal SVN pada VPS dengan SELinux dinonaktifkan.

Bacaan yang Disarankan: Pelajari Cara Menonaktifkan SELinux Sementara atau Permanen di Linux

Mulai ulang Apache dan verifikasi repositori tersedia.


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

Kemudian luncurkan browser web dan arahkan ke http://192.168.0.100/svn/tecmint. Setelah memasukkan kredensial untuk pengguna valid yang kita buat pada Langkah 1, hasilnya akan serupa dengan:

Saat ini kami belum menambahkan kode apa pun ke repositori kami. Tapi kami akan melakukannya sebentar lagi.

Langkah 4 – Instal TortoiseSVN di Klien Windows 7

Seperti yang kami sebutkan di pendahuluan, TortoiseSVN adalah antarmuka yang ramah pengguna untuk Apache Subversion. Ini adalah Perangkat Lunak Gratis yang berlisensi GPL dan dapat diunduh dari https://tortoisesvn.net/downloads.html.

Pilih arsitektur (32 atau 64-bit) yang sesuai dengan mesin Anda dan instal program sebelum melanjutkan.

Langkah 5 – Siapkan Repositori SVN di Mesin Klien

Pada langkah ini kita akan menggunakan folder bernama webapp di dalam Documents. Folder ini berisi file HTML, dan dua folder bernama skrip dan gaya dengan file Javascript dan CSS (masing-masing script.js dan styles.css) yang ingin kita tambahkan ke kontrol versi.

Klik kanan webapp dan pilih SVN Checkout. Ini akan membuat salinan lokal dari repositori jarak jauh (yang saat ini kosong) dan menginisialisasi folder untuk kontrol versi:

Di URL repositori, ketik http://192.168.0.100/svn/tecmint dan pastikan direktori checkout lokal tetap sama, lalu klik OK:

Masukkan nama pengguna dan sandi (lihat Langkah 2) dan klik OK:

Anda akan ditanya apakah Anda ingin melakukan checkout ke direktori yang tidak kosong. Konfirmasi untuk melanjutkan pembayaran. Setelah selesai, akan muncul tanda centang hijau di sebelah nama folder:

Langkah 6 – Komit Perubahan dan Terapkan File ke Repositori SVN Jarak Jauh

Klik kanan pada webapp lagi dan pilih Commit kali ini. Selanjutnya, tulis komentar deskriptif untuk kemudian mengidentifikasi penerapan ini, dan periksa file dan folder yang ingin Anda sebarkan ke repositori. Terakhir, klik OK:

Bergantung pada ukuran file, penerapannya tidak akan memakan waktu lebih dari satu menit. Jika sudah selesai, Anda akan melihat bahwa kami sekarang berada pada revisi 1, yang cocok dengan versi dan file yang tercantum di antarmuka web:

Jika ada beberapa orang yang mengerjakan file yang sama, Anda sebaiknya Memperbarui salinan lokal Anda agar versi terbaru tersedia untuk dikerjakan. Anda dapat melakukannya dengan mengeklik kanan webapp dan memilih Perbarui dari menu konteks.

Selamat! Anda telah berhasil menyiapkan server SVN dan melakukan/memperbarui proyek sederhana di bawah kontrol versi.

Ringkasan

Dalam artikel ini kami telah menjelaskan cara memasang dan mengonfigurasi server repositori Apache Subversion di server CentOS 7, dan cara menerapkan perubahan pada repositori tersebut menggunakan TortoiseSVN.

Perlu diketahui bahwa ada lebih banyak hal dalam SVN dan TortoiseSVN daripada apa yang dapat kami bahas secara memadai di sini (khususnya cara kembali ke revisi sebelumnya), jadi Anda mungkin ingin merujuk pada revisi resmi docs (SVN dan TortoiseSVN) untuk informasi lebih lanjut dan kasus konfigurasi.

Seperti biasa, jangan ragu untuk memberi tahu kami jika Anda memiliki pertanyaan! Jangan ragu untuk menggunakan formulir komentar di bawah untuk menghubungi kami kapan saja.