Cách cài đặt HTTP Git Server với Nginx trên Ubuntu 20.04

theanh

Administrator
Nhân viên
Git là một hệ thống quản lý phiên bản mã nguồn mở và miễn phí do Linus Torvalds phát triển. Hệ thống này được hàng triệu nhà phát triển trên toàn thế giới sử dụng. GitHub cũng cung cấp dịch vụ lưu trữ mã miễn phí. Tuy nhiên, dịch vụ miễn phí này không cho phép lưu trữ mã riêng. Trong trường hợp này, bạn có thể lưu trữ máy chủ lưu trữ mã của riêng mình bằng máy chủ Git HTTP. Điều này sẽ cung cấp cho bạn quyền kiểm soát hoàn toàn trên máy chủ.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình máy chủ Git HTTP với Nginx trên Ubuntu 20.04.

Điều kiện tiên quyết​

  • Một máy chủ chạy Ubuntu 20.04.
  • Tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
  • Một mật khẩu gốc được cấu hình cho máy chủ.

Bắt đầu​

Trước khi bắt đầu, bạn nên cập nhật các gói máy chủ của mình lên phiên bản mới nhất. Bạn có thể cập nhật chúng bằng lệnh sau:
Mã:
apt-get update -y
Sau khi tất cả các gói được cập nhật, bạn có thể tiến hành bước tiếp theo.

Cài đặt Nginx và Git​

Tiếp theo, bạn sẽ cần cài đặt máy chủ web Nginx, Git và các gói cần thiết khác vào hệ thống của mình. Bạn có thể cài đặt chúng bằng lệnh sau:
Mã:
apt-get install nginx git fcgiwrap apache2-utils unzip -y
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.

Tạo kho lưu trữ Git​

Tiếp theo, bạn sẽ cần tạo kho lưu trữ Git bên trong thư mục gốc web Nginx. Trước tiên, tạo một thư mục có tên git bằng lệnh sau:
Mã:
mkdir /var/www/html/git
Tiếp theo, đổi thư mục thành git và tạo một thư mục mới cho kho lưu trữ Git:
Mã:
cd /var/www/html/git
mkdir gituser.git
Tiếp theo, đổi vào thư mục mới này và khởi tạo kho lưu trữ Git bằng lệnh:
Mã:
git --bare init
Tiếp theo, cập nhật Máy chủ Git bằng lệnh:
Mã:
git update-server-info
Tiếp theo, đặt quyền sở hữu và quyền trên thư mục git bằng lệnh sau:
Mã:
chown -R www-data:www-data /var/www/html/git
chmod -R 755 /var/www/html/git
Tiếp theo, tạo một gituser mới để xác thực bằng lệnh sau lệnh;
Mã:
htpasswd -c /var/www/html/git/htpasswd gituser
Bạn sẽ được yêu cầu đặt mật khẩu như hiển thị bên dưới:
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 gituser
Bây giờ bạn có thể xác minh mật khẩu của mình bằng lệnh sau:
Mã:
cat /var/www/html/git/htpasswd
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
gituser:$apr1$iPKZDbFB$ziRRbGXzVMMHaPYOtL05m/

Cấu hình Nginx cho Git​

Tiếp theo, bạn sẽ cần cấu hình Nginx để phục vụ kho lưu trữ Git. Bạn có thể tạo tệp cấu hình máy chủ ảo mới cho Git bằng lệnh sau:
Mã:
nano /etc/nginx/conf.d/git.conf
Thêm các dòng sau:
Mã:
server { listen 80; root /var/www/html/git; # 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.example.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/git/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/git; fastcgi_param REMOTE_USER $remote_user; fastcgi_param PATH_INFO $1; fastcgi_pass unix:/var/run/fcgiwrap.socket;}}
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, hãy xác minh Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Bạn sẽ nhận được kết quả sau:
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
Tiếp theo, hãy khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
Mã:
systemctl restart nginx
Bạn cũng có thể xác minh trạng thái của dịch vụ Nginx bằng lệnh sau:
Mã:
systemctl status nginx
Bạn sẽ nhận được kết quả sau:
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) từ Tue 2020-11-17 07:43:46 UTC; 4 giây trước Tài liệu: man:nginx(8) Tiến trình: 3240 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Tiến trình: 3256 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 3257 (nginx) Nhiệm vụ: 3 (giới hạn: 4691) Bộ nhớ: 3,5M CGroup: /system.slice/nginx.service ??3257 nginx: tiến trình chính /usr/sbin/nginx -g daemon on; master_process on; ??3258 nginx: tiến trình công nhân ??3259 nginx: tiến trình công nhân17/11 07:43:46 ubuntu2004 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...17/11 07:43:46 ubuntu2004 systemd[1]: Đã khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Kiểm tra Máy chủ Git HTTP​

Tại thời điểm này, máy chủ Git đã được cài đặt và định cấu hình. Bây giờ, đã đến lúc kiểm tra nó.

Trên máy khách, cài đặt gói Git bằng lệnh sau:
Mã:
apt-get install git -y
Sau khi cài đặt, tạo một thư mục có tên là myapp bằng lệnh sau:
Mã:
mkdir myapp
Tiếp theo, chuyển đến thư mục mới và khởi tạo Git bằng lệnh sau:
Mã:
cd myapp
git init
Tiếp theo, thêm kho lưu trữ Git từ xa của bạn bằng lệnh sau:
Mã:
git remote add origin http://[emailprotected]/gituser.git
Tiếp theo, tạo thư mục app1 và app2, đồng thời tạo các tệp app1 và app2 với một số nội dung bên trong các thư mục đó:
Mã:
mkdir app1 app2
echo "Đây là ứng dụng đầu tiên của tôi" > app1/app1
echo "Đây là ứng dụng đầu tiên của tôi" > app2/app2
Tiếp theo, thêm tất cả các thư mục và tệp vào kho lưu trữ bằng lệnh sau:
Mã:
git add .
Tiếp theo, cam kết các thay đổi bằng lệnh sau:
Mã:
git commit -a -m "Add files and directories"
Bạn sẽ nhận được kết quả sau:
Mã:
[master (root-commit) 4e90372] Add files and directories 2 files changed, 2 inserted (+) create mode 100644 app1/app1 create mode 100644 app2/app2
Tiếp theo, đẩy những thay đổi này lên máy chủ Git từ xa bằng lệnh sau:
Mã:
git push origin master
Bạn sẽ được yêu cầu cung cấp mật khẩu cho người dùng Git từ xa như hiển thị bên dưới:
Mã:
Mật khẩu cho 'http://[emailprotected]':
Cung cấp mật khẩu của bạn và nhấn Enter. Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
Đếm đối tượng: 5, xong.Nén delta sử dụng tối đa 4 luồng.Nén đối tượng: 100% (2/2), xong.Ghi đối tượng: 100% (5/5), 354 byte | 0 byte/giây, xong.Tổng cộng 5 (delta 0), sử dụng lại 0 (delta 0)Đến http://[emailprotected]/gituser.git * [new branch] master -> master
Kết quả đầu ra ở trên cho biết các tệp và thư mục của bạn đã được thêm vào kho lưu trữ Git từ xa. Nếu bạn muốn sao chép kho lưu trữ này vào hệ thống cục bộ của mình, hãy chạy lệnh sau:
Mã:
git clone http://[emailprotected]/gituser.git
Bạn sẽ nhận được kết quả sau:
Mã:
Đang sao chép vào 'gituser'...Mật khẩu cho 'http://[emailprotected]':remote: Đang liệt kê các đối tượng: 5, xong.remote: Đang đếm các đối tượng: 100% (5/5), xong.remote: Đang nén các đối tượng: 100% (2/2), xong.remote: Tổng cộng 5 (delta 0), đã sử dụng lại 0 (delta 0)Đang giải nén các đối tượng: 100% (5/5), xong.Đang kiểm tra kết nối... xong.

Kết luận​

Xin chúc mừng! Bạn đã cài đặt và thiết lập thành công máy chủ Git HTTP trên máy chủ Ubuntu 20.04. Bây giờ bạn có thể triển khai máy chủ Git trong môi trường phát triển của mình và có thể truy cập từ bên trong mạng LAN của bạn.
 
Back
Bên trên