Git adalah sistem kontrol versi sumber terbuka yang digunakan oleh ribuan pengembang di seluruh dunia. Ini digunakan untuk melacak perubahan perangkat lunak Anda di tingkat sumber. Ini memungkinkan Anda untuk melacak perubahan, mengembalikannya ke tahap sebelumnya dan membuat versi alternatif dari file dan direktori.
HTTP Git Server adalah proyek sumber terbuka yang menggunakan server web Nginx untuk melayani repositori Git melalui Jaringan Area Lokal (LAN) Anda. Ini sangat sederhana dan mudah diatur. Siapa pun dapat mengelolanya dari antarmuka baris perintah.
Dalam tutorial ini, saya akan menjelaskan cara menyiapkan server repositori HTTP Git dengan Nginx di Debian 11.
Prasyarat
- Server yang menjalankan Debian 11.
- Nama domain valid yang ditunjukkan dengan IP server Anda.
- Kata sandi root dikonfigurasi di server Anda.
Instal Nginx dan Dependensi Lainnya
Pertama, Anda perlu menginstal server web Nginx dan paket lain yang diperlukan untuk menyiapkan server HTTP Git. Anda dapat menginstal semuanya menggunakan perintah berikut:
apt-get install nginx git fcgiwrap apache2-utils unzip -y
Setelah semua paket terinstal, Anda dapat melanjutkan ke langkah berikutnya.
Buat Repositori Git
Selanjutnya, Anda perlu membuat direktori untuk menyimpan repositori Git. Mari buat direktori bernama myrepo di dalam direktori root web Nginx:
mkdir /var/www/html/myrepo
Selanjutnya, ubah direktori menjadi myrepo dan buat direktori lain untuk pengguna:
cd /var/www/html/myrepo
mkdir user1.git
Selanjutnya, navigasikan ke direktori pengguna dan inisialisasi repositori Git menggunakan perintah berikut:
cd user1.git
git --bare init
Anda akan mendapatkan output berikut:
Initialized empty Git repository in /var/www/html/myrepo/user1.git/
Selanjutnya, perbarui informasi server Git dengan perintah berikut:
git update-server-info
Selanjutnya, ubah kepemilikan myrepo dan atur izin yang tepat dengan perintah berikut:
chown -R www-data:www-data /var/www/html/myrepo
chmod -R 755 /var/www/html/myrepo
Selanjutnya, buat pengguna bernama user1 dan atur kata sandi:
htpasswd -c /var/www/html/myrepo/htpasswd user1
Anda dapat mengatur kata sandi seperti yang ditunjukkan di bawah ini:
New password: Re-type new password: Adding password for user user1
Anda dapat memeriksa kata sandi Anda menggunakan perintah berikut:
cat /var/www/html/myrepo/htpasswd
Contoh keluaran:
user1:$apr1$LoyCEkzA$Fjq5nBbLhBRdaxCQBBUQd1
Konfigurasikan Nginx untuk Melayani Repositori Git
Selanjutnya, Anda perlu membuat file konfigurasi virtual host Nginx untuk melayani repositori Git.
nano /etc/nginx/conf.d/git.conf
Tambahkan baris berikut:
server { listen 80; root /var/www/html/myrepo; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name git.yourdomain.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } location ~ (/.*) { client_max_body_size 0; auth_basic "Git Login"; auth_basic_user_file "/var/www/html/myrepo/htpasswd"; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/www/html/myrepo; fastcgi_param REMOTE_USER $remote_user; fastcgi_param PATH_INFO $1; fastcgi_pass unix:/var/run/fcgiwrap.socket; } }
Simpan dan tutup file setelah Anda selesai kemudian verifikasi Nginx untuk kesalahan sintaks:
nginx -t
Anda akan mendapatkan output berikut:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Terakhir, restart layanan Nginx untuk menerapkan perubahan:
systemctl restart nginx
Anda juga dapat memeriksa status Nginx menggunakan perintah berikut:
systemctl status nginx
Anda akan mendapatkan output berikut:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-12-11 08:00:04 UTC; 2s ago Docs: man:nginx(8) Process: 144985 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 144986 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 144987 (nginx) Tasks: 2 (limit: 2341) Memory: 2.5M CPU: 42ms CGroup: /system.slice/nginx.service ??144987 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??144988 nginx: worker process Dec 11 08:00:04 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server... Dec 11 08:00:04 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument Dec 11 08:00:04 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
Hubungkan ke Repositori Git Dari Klien
Pada titik ini, server HTTP Git sudah diatur dengan Nginx. Sekarang, saatnya menghubungkannya dari mesin klien dan mengujinya.
Pertama, instal paket Git pada mesin klien menggunakan perintah berikut:
apt-get install git -y
Selanjutnya, buat direktori untuk proyek Anda dengan perintah berikut:
mkdir project
Selanjutnya, navigasikan ke direktori proyek Anda dan inisialisasi Git menggunakan perintah di bawah ini:
cd project
git init
Selanjutnya, konfigurasikan Git menggunakan email dan nama pengguna Anda:
git config --global user.email "[email protected]"
git config --global user.name "user1"
Selanjutnya, tambahkan server HTTP Git Anda menggunakan perintah berikut:
git remote add origin http://[email protected]/user1.git
Selanjutnya, buat direktori bernama dev01 dan tambahkan file di dalamnya:
mkdir dev01
echo "This is my first application" > dev01/file1
Selanjutnya, tambahkan direktori dan file yang Anda buat ke repositori Git:
git add .
Selanjutnya, komit perubahan dengan perintah berikut:
git commit -a -m "Add files and directories"
Anda akan mendapatkan output berikut:
[master (root-commit) 0299d83] Add files and directories 1 file changed, 1 insertion(+) create mode 100644 dev01/file1
Selanjutnya, unggah file dan direktori Anda ke server HTTP Git menggunakan perintah berikut:
git push origin master
Anda akan diminta untuk memberikan kata sandi Anda untuk mengakses server Git:
Password for 'http://[email protected]':
Setelah Anda terhubung, Anda akan mendapatkan output berikut:
Counting objects: 4, done. Writing objects: 100% (4/4), 281 bytes | 281.00 KiB/s, done. Total 4 (delta 0), reused 0 (delta 0) To http://git.yourdomain.com/user1.git * [new branch] master -> master
Anda juga dapat mengunduh repositori Anda dari server Git secara langsung menggunakan perintah berikut:
git clone http://[email protected]domain.com/user1.git
Anda akan mendapatkan output berikut:
Cloning into 'user1'... Password for 'http://[email protected]': remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (4/4), done.
Kesimpulan
Dalam panduan di atas, Anda telah mempelajari cara menyiapkan server HTTP Git dengan Nginx di Debian 11. Kini Anda dapat menerapkan penyiapan ini ke lingkungan pengembangan lokal dan mengelola serta melacak proyek Anda menggunakan baris perintah.