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.
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.
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, đổi thư mục thành git và tạo một thư mục mới cho kho lưu trữ 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:
Tiếp theo, cập nhật Máy chủ Git bằng lệnh:
Tiếp theo, đặt quyền sở hữu và quyền trên thư mục git bằng lệnh sau:
Tiếp theo, tạo một gituser mới để xác thực bằng lệnh sau lệnh;
Bạn sẽ được yêu cầu đặt mật khẩu như hiển thị bên dưới:
Bây giờ bạn có thể xác minh mật khẩu của mình bằng lệnh sau:
Bạn sẽ nhận được kết quả đầu ra sau:
Thêm các dòng sau:
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:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, hãy khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
Bạn cũng có thể xác minh trạng thái của dịch vụ Nginx bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Trên máy khách, cài đặt gói Git bằng lệnh sau:
Sau khi cài đặt, tạo một thư mục có tên là myapp bằng lệnh sau:
Tiếp theo, chuyển đến thư mục mới và khởi tạo Git bằng lệnh sau:
Tiếp theo, thêm kho lưu trữ Git từ xa của bạn bằng lệnh sau:
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 đó:
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:
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, đẩy những thay đổi này lên máy chủ Git từ xa bằng lệnh sau:
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:
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:
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:
Bạn sẽ nhận được kết quả sau:
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
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
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
Mã:
cd /var/www/html/git
mkdir gituser.git
Mã:
git --bare init
Mã:
git update-server-info
Mã:
chown -R www-data:www-data /var/www/html/git
chmod -R 755 /var/www/html/git
Mã:
htpasswd -c /var/www/html/git/htpasswd gituser
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
Mã:
cat /var/www/html/git/htpasswd
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
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;}}
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) 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.
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
Mã:
mkdir myapp
Mã:
cd myapp
git init
Mã:
git remote add origin http://[emailprotected]/gituser.git
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
Mã:
git add .
Mã:
git commit -a -m "Add files and directories"
Mã:
[master (root-commit) 4e90372] Add files and directories 2 files changed, 2 inserted (+) create mode 100644 app1/app1 create mode 100644 app2/app2
Mã:
git push origin master
Mã:
Mật khẩu cho 'http://[emailprotected]':
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
Mã:
git clone http://[emailprotected]/gituser.git
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.