Git là một hệ thống kiểm soát phiên bản mã nguồn mở được hàng nghìn nhà phát triển trên toàn thế giới sử dụng. Nó được sử dụng để theo dõi các thay đổi phần mềm của bạn ở cấp độ nguồn. Nó cho phép bạn theo dõi các thay đổi, khôi phục lại các giai đoạn trước đó và tạo phiên bản thay thế của các tệp và thư mục.
HTTP Git Server là một dự án mã nguồn mở sử dụng máy chủ web Nginx để phục vụ kho lưu trữ Git qua Mạng cục bộ (LAN) của bạn. Nó rất đơn giản và dễ thiết lập. Bất kỳ ai cũng có thể quản lý nó từ giao diện dòng lệnh.
Trong hướng dẫn này, tôi sẽ giải thích cách thiết lập máy chủ lưu trữ HTTP Git với Nginx trên Debian 11.
Sau khi tất cả các gói được cài đặt, bạn có thể tiến hành bước tiếp theo.
Tiếp theo, hãy đổi thư mục thành myrepo và tạo một thư mục khác cho người dùng:
Tiếp theo, hãy điều hướng đến thư mục người dùng và khởi tạo kho lưu trữ Git bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, hãy cập nhật thông tin máy chủ Git bằng lệnh sau:
Tiếp theo, hãy thay đổi quyền sở hữu myrepo và đặt quyền thích hợp bằng lệnh sau:
Tiếp theo, tạo một người dùng có tên là user1 và đặt mật khẩu:
Bạn có thể đặt mật khẩu như hiển thị bên dưới:
Bạn có thể kiểm tra mật khẩu của mình bằng lệnh sau:
Đầu ra mẫu:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất, sau đó kiểm tra Nginx xem có lỗi cú pháp nào không:
Bạn sẽ nhận được kết quả sau:
Cuối cùng, khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
Bạn cũng có thể kiểm tra trạng thái Nginx bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Đầu tiên, cài đặt gói Git trên máy khách bằng lệnh sau:
Tiếp theo, tạo một thư mục cho dự án của bạn bằng lệnh sau:
Tiếp theo, điều hướng đến thư mục dự án của bạn và khởi tạo Git bằng lệnh bên dưới:
Tiếp theo, cấu hình Git bằng email và tên người dùng của bạn:
Tiếp theo, thêm máy chủ HTTP Git của bạn bằng lệnh sau:
Tiếp theo, tạo một thư mục có tên là dev01 và thêm tệp bên trong nó:
Tiếp theo, thêm thư mục và tệp đã tạo vào kho lưu trữ Git:
Tiếp theo, cam kết các thay đổi bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, tải tệp và thư mục của bạn lên máy chủ Git HTTP bằng lệnh sau:
Bạn sẽ được yêu cầu cung cấp mật khẩu để truy cập máy chủ Git:
Sau khi kết nối, bạn sẽ nhận được kết quả sau:
Bạn cũng có thể tải kho lưu trữ của mình trực tiếp từ máy chủ Git bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
HTTP Git Server là một dự án mã nguồn mở sử dụng máy chủ web Nginx để phục vụ kho lưu trữ Git qua Mạng cục bộ (LAN) của bạn. Nó rất đơn giản và dễ thiết lập. Bất kỳ ai cũng có thể quản lý nó từ giao diện dòng lệnh.
Trong hướng dẫn này, tôi sẽ giải thích cách thiết lập máy chủ lưu trữ HTTP Git với Nginx trên Debian 11.
Điều kiện tiên quyết
- Máy chủ chạy Debian 11.
- Tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
- Mật khẩu gốc được cấu hình trên máy chủ của bạn.
Cài đặt Nginx và các phụ thuộc khác
Đầu tiên, bạn sẽ cần cài đặt máy chủ web Nginx và các gói bắt buộc khác để thiết lập máy chủ HTTP Git. Bạn có thể cài đặt tất cả chúng bằng lệnh sau:
Mã:
apt-get install nginx git fcgiwrap apache2-utils unzip -y
Tạo kho lưu trữ Git
Tiếp theo, bạn sẽ cần tạo một thư mục để lưu trữ kho lưu trữ Git. Hãy tạo một thư mục có tên myrepo bên trong thư mục gốc web Nginx:
Mã:
mkdir /var/www/html/myrepo
Mã:
cd /var/www/html/myrepo
mkdir user1.git
Mã:
cd user1.git
git --bare init
Mã:
Đã khởi tạo kho lưu trữ Git trống trong /var/www/html/myrepo/user1.git/
Mã:
git update-server-info
Mã:
chown -R www-data:www-data /var/www/html/myrepo
chmod -R 755 /var/www/html/myrepo
Mã:
htpasswd -c /var/www/html/myrepo/htpasswd user1
Mã:
Mật khẩu mới:Nhập lại mật khẩu mới:Đang thêm mật khẩu cho người dùng user1
Mã:
cat /var/www/html/myrepo/htpasswd
Mã:
user1:$apr1$LoyCEkzA$Fjq5nBbLhBRdaxCQBBUQd1
Cấu hình Nginx để phục vụ kho lưu trữ Git
Tiếp theo, bạn sẽ cần tạo tệp cấu hình máy chủ ảo Nginx để phục vụ kho lưu trữ Git.
Mã:
nano /etc/nginx/conf.d/git.conf
Mã:
server { listen 80; root /var/www/html/myrepo; # Thêm index.php vào danh sách nếu bạn đang sử dụng PHP index index.html index.htm index.nginx-debian.html; server_name git.yourdomain.com; location / { # Đầu tiên thử phục vụ yêu cầu dưới dạng tệp, sau đó # dưới dạng thư mục, sau đó quay lại hiển thị lỗi 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;}}
Mã:
nginx -t
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf thành công
Mã:
systemctl restart nginx
Mã:
systemctl status nginx
Mã:
? nginx.service - Một máy chủ web hiệu suất cao và một máy chủ proxy ngược Đã tải: đã tải (/lib/systemd/system/nginx.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Sat 2021-12-11 08:00:04 UTC; 2 giây trước Tài liệu: man:nginx(8) Quy trình: 144985 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Quy trình: 144986 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 144987 (nginx) Nhiệm vụ: 2 (giới hạn: 2341) Bộ nhớ: 2,5M CPU: 42ms CGroup: /system.slice/nginx.service ??144987 nginx: tiến trình chính /usr/sbin/nginx -g daemon on; master_process on; ??144988 nginx: tiến trình công nhân11/12 08:00:04 debian11 systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược...11/12 08:00:04 debian11 systemd[1]: nginx.service: Không phân tích được PID từ tệp /run/nginx.pid: Đối số không hợp lệ11/12 08:00:04 debian11 systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.
Kết nối đến Kho lưu trữ Git từ Máy khách
Tại thời điểm này, máy chủ HTTP Git được thiết lập với Nginx. Bây giờ, đã đến lúc kết nối nó từ máy khách và kiểm tra nó.Đầu tiên, cài đặt gói Git trên máy khách bằng lệnh sau:
Mã:
apt-get install git -y
Mã:
mkdir project
Mã:
cd project
git init
Mã:
git config --global user.email "[emailprotected]"
git config --global user.name "user1"
Mã:
git remote add origin http://[emailprotected]/user1.git
Mã:
mkdir dev01
echo "Đây là ứng dụng đầu tiên của tôi" > dev01/file1
Mã:
git add .
Mã:
git commit -a -m "Add files and directories"
Mã:
[master (root-commit) 0299d83] Add files and directories 1 file changed, 1 inserted(+) create mode 100644 dev01/file1
Mã:
git push origin master
Mã:
Mật khẩu cho 'http://[emailprotected]':
Mã:
Đang đếm đối tượng: 4, xong.Đang ghi đối tượng: 100% (4/4), 281 byte | 281,00 KiB/giây, xong.Tổng cộng 4 (delta 0), đã sử dụng lại 0 (delta 0)Đến http://git.yourdomain.com/user1.git * [new branch] master -> master
Mã:
git clone http://[emailprotected]/user1.git
Mã:
Đang sao chép vào 'user1'...Mật khẩu cho 'http://[emailprotected]':remote: Đang liệt kê đối tượng: 4, xong.remote: Đang đếm đối tượng: 100% (4/4), xong.remote: Tổng cộng 4 (delta 0), đã sử dụng lại 0 (delta 0), đã đóng gói-sử dụng lại 0Đang giải nén các đối tượng: 100% (4/4), đã hoàn tất.