Git là một hệ thống kiểm soát phiên bản mã nguồn mở và miễn phí có thể được sử dụng để theo dõi các thay đổi của mã. Git cho phép bạn tạo nhiều kho lưu trữ cho cùng một ứng dụng và phối hợp công việc trên các tệp đó giữa nhiều người. Nó chủ yếu được sử dụng để quản lý mã nguồn trong phát triển phần mềm.
Trong bài viết này, chúng ta sẽ tìm hiểu cách cài đặt Máy chủ HTTP Git với Nginx trên Ubuntu 18.04 LTS (Bionic Beaver).
Yêu cầu
Bạn có thể thực hiện việc này bằng cách chạy lệnh sau:
Sau khi hệ thống của bạn được cập nhật, hãy khởi động lại hệ thống và đăng nhập bằng người dùng sudo.
Sau khi tất cả các gói bắt buộc được cài đặt, bạn sẽ cần tạo một thư mục cho kho lưu trữ Git. Bạn có thể thực hiện việc này bằng cách chạy lệnh sau:
Tiếp theo, cấp quyền thích hợp cho thư mục Git:
Sau khi hoàn tất, bạn có thể tiến hành cấu hình máy chủ web Nginx.
Thay đổi tệp như hiển thị bên dưới:
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, hãy kiểm tra Nginx xem có lỗi cấu hình nào không bằng lệnh sau:
Nếu mọi thứ đều ổn, bạn sẽ thấy kết quả đầu ra sau:
Tiếp theo, bạn sẽ cần tạo một tài khoản người dùng mà bạn sẽ cần sử dụng để duyệt hoặc cam kết với kho lưu trữ. Bạn có thể tạo người dùng có tên hitesh bằng cách sử dụng tiện ích htpasswd:
Cuối cùng, khởi động lại Nginx để áp dụng tất cả các thay đổi bằng lệnh sau:
Bạn có thể kiểm tra trạng thái của máy chủ Nginx bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Bạn có thể tạo kho lưu trữ có tên hitesh.git bằng lệnh sau:
Tiếp theo, bạn sẽ cần cho phép dịch vụ HTTP thông qua tường lửa UFW. Theo mặc định, UFW bị vô hiệu hóa trên hệ thống của bạn, vì vậy trước tiên bạn cần bật nó. Bạn có thể bật nó bằng lệnh sau:
Sau khi tường lửa UFW được bật, bạn có thể cho phép dịch vụ HTTP và SSH bằng cách chạy lệnh sau:
SSH không cần thiết cho GIT, nhưng bạn nên bật SSH để có thể quản lý máy chủ của mình thông qua SSH.
Bây giờ bạn có thể kiểm tra trạng thái của tường lửa UFW bằng cách chạy lệnh sau:
Được rồi, vậy là xong phần cấu hình phía máy chủ. Bây giờ bạn có thể chuyển sang phía máy khách để kiểm tra Git.
Đầu tiên, tạo một kho lưu trữ cục bộ bằng lệnh sau:
Tiếp theo, thay đổi thư mục thành 'testproject' và khởi tạo kho lưu trữ từ xa mới bằng lệnh sau:
Tiếp theo, tạo một số tệp và thư mục bằng lệnh sau:
Tiếp theo, chạy lệnh sau để thêm tất cả các tệp và thư mục vào kho lưu trữ:
Bạn sẽ thấy kết quả sau:
Tiếp theo, đẩy tất cả các tệp và thư mục lên máy chủ Git bằng lệnh sau:
Bạn sẽ thấy kết quả sau:
Bây giờ, tất cả các tệp và thư mục của bạn đã được cam kết với máy chủ Git của bạn.
Quá trình tạo kho lưu trữ Git của bạn hiện đã hoàn tất. Bây giờ, bạn có thể dễ dàng sao chép kho lưu trữ của mình trong tương lai. Bạn có thể sao chép kho lưu trữ của mình bằng lệnh sau trên hệ thống từ xa:
Bạn sẽ thấy đầu ra sau:
Bây giờ, hãy thay đổi thư mục thành kho lưu trữ đã sao chép bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Đăng nhập SSH / Shell
Tên người dùng: administrator
Mật khẩu: howtoforge
Người dùng này có quyền sudo.
Đăng nhập GIT
Tên người dùng: hitesh
Mật khẩu: howtoforge
IP của VM là 192.168.1.100, có thể thay đổi trong tệp /etc/netplan/01-netcfg.yaml. Vui lòng thay đổi tất cả các mật khẩu trên để bảo mật máy ảo.
Trong bài viết này, chúng ta sẽ tìm hiểu cách cài đặt Máy chủ HTTP Git với Nginx trên Ubuntu 18.04 LTS (Bionic Beaver).
Yêu cầu
- Máy chủ Ubuntu 18.04 mới được cài đặt trên hệ thống của bạn.
- Người dùng Sudo có quyền root.
- Một địa chỉ IP tĩnh được định cấu hình trên máy chủ của bạn, tôi sử dụng IP 192.168.1.100 trong hướng dẫn này.
1 Bắt đầu
Trước khi bắt đầu, bạn sẽ cần cập nhật hệ thống của mình lên phiên bản ổn định mới nhất.Bạn có thể thực hiện việc này bằng cách chạy lệnh sau:
Mã:
sudo apt-get update -y
sudo apt-get upgrade -y
2 Cài đặt các gói bắt buộc
Trước tiên, bạn sẽ cần cài đặt một số gói bắt buộc bao gồm nginx, git, nano và fcgiwrap vào hệ thống của mình. Bạn có thể cài đặt tất cả chúng bằng cách chạy lệnh sau:
Mã:
sudo apt-get install nginx git nano fcgiwrap apache2-utils -y
Mã:
sudo mkdir /var/www/html/git
Mã:
sudo chown -R www-data:www-data /var/www/html/git
3 Cấu hình Nginx
Trước tiên, bạn sẽ cần cấu hình Nginx để chuyển lưu lượng Git sang Git. Bạn có thể thực hiện việc này bằng cách chỉnh sửa tệp cấu hình mặc định của Nginx:
Mã:
sudo nano /etc/nginx/sites-available/default
Mã:
# Cấu hình máy chủ mặc định#server { listen 80 default_server; listen [::]:80 default_server; 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 _; 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 đó chuyển sang hiển thị lỗi 404. try_files $uri $uri/ =404; }location ~ (/.*) { client_max_body_size 0; # Git push có thể rất lớn, chỉ để đảm bảo nginx không đột nhiên cắt kết nối, hãy thêm lệnh này. auth_basic "Git Login"; # Bất kỳ văn bản nào có thể thực hiện. auth_basic_user_file "/var/www/html/git/htpasswd"; include /etc/nginx/fastcgi_params; # Bao gồm các cấu hình fastcgi mặc định fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; # Yêu cầu fastcgi chuyển yêu cầu đến git http backend executable fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/www/html/git; # /var/www/git là vị trí của tất cả các kho lưu trữ git của bạn. fastcgi_param REMOTE_USER $remote_user; fastcgi_param PATH_INFO $1; # Lấy nhóm capture từ chỉ thị location của chúng ta và cung cấp cho git. fastcgi_pass unix:/var/run/fcgiwrap.socket; # Chuyển yêu cầu đến fastcgi}}
Mã:
sudo nginx -t
Tiếp theo, bạn sẽ cần tạo một tài khoản người dùng mà bạn sẽ cần sử dụng để duyệt hoặc cam kết với kho lưu trữ. Bạn có thể tạo người dùng có tên hitesh bằng cách sử dụng tiện ích htpasswd:
Mã:
sudo htpasswd -c /var/www/html/git/htpasswd hitesh
Mã:
sudo systemctl restart nginx
Mã:
sudo systemctl status nginx
4 Tạo kho lưu trữ Git
Sau khi mọi thứ được cấu hình đúng, đã đến lúc tạo kho lưu trữ Git.Bạn có thể tạo kho lưu trữ có tên hitesh.git bằng lệnh sau:
Mã:
cd /var/www/html/git
sudo mkdir hitesh.git
sudo cd hitesh.git
sudo git --bare init
sudo git update-server-info
sudo chown -R www-data.www-data .
sudo chmod -R 755 .
Mã:
sudo ufw enable
Mã:
sudo ufw allow http
sudoufw allowssh
Bây giờ bạn có thể kiểm tra trạng thái của tường lửa UFW bằng cách chạy lệnh sau:
Mã:
sudo ufw status
5 Kiểm tra Git trên Máy khách
Trước khi bắt đầu, bạn sẽ cần cài đặt git trên hệ thống máy khách. Bạn có thể cài đặt nó bằng lệnh sau:
Mã:
sudo apt-get install git -y
Mã:
sudo mkdir ~/testproject
Mã:
cd ~/testproject
git init
git remote add origin http://[emailprotected]/hitesh.git
Mã:
mkdir test1 test2 test3
echo "Đây là kho lưu trữ đầu tiên của tôi" > test1/repo1
echo "Đây là kho lưu trữ thứ hai của tôi" > test2/repo2
echo "Đây là kho lưu trữ thứ ba của tôi" > test3/repo3
Mã:
git add .
git commit -a -m "Add files and directories"
Mã:
[master 002fac9] Add files and directories 3 files changed, 3 inserteds(+) create mode 100644 repo1 create mode 100644 repo2 create mode 100644 repo3
Mã:
git push origin master
Mã:
Password for 'http://[emailprotected]':Đang đếm đối tượng: 6, xong.Nén delta sử dụng tối đa 4 luồng.Nén đối tượng: 100% (2/2), xong.Đang ghi đối tượng: 100% (5/5), 422 byte | 0 byte/giây, hoàn tất.Tổng cộng 5 (delta 0), đã sử dụng lại 0 (delta 0)Đến http://[emailprotected]/hitesh.git 68f1270..002fac9 master -> master
Quá trình tạo kho lưu trữ Git của bạn hiện đã hoàn tất. Bây giờ, bạn có thể dễ dàng sao chép kho lưu trữ của mình trong tương lai. Bạn có thể sao chép kho lưu trữ của mình bằng lệnh sau trên hệ thống từ xa:
Mã:
git clone [emailprotected]:/var/www/html/git/hitesh.git
Mã:
Đang sao chép vào 'hitesh'...Mật khẩu của [emailprotected]:remote: Đang đếm đối tượng: 8, hoàn tất.remote: Nén đối tượng: 100% (3/3), xong.Đang nhận đối tượng: 100% (8/8), 598 byte | 0 byte/giây, xong.remote: Tổng cộng 8 (delta 0), sử dụng lại 0 (delta 0)Đang kiểm tra kết nối... xong.
Mã:
cd hitesh
tree
Mã:
.|-- test1| `-- repo1|-- test2| `-- repo2`-- test3 `-- repo33 thư mục, 3 tệp
Tải xuống dưới dạng VM
Hướng dẫn này có sẵn dưới dạng ảnh máy ảo đã sẵn sàng sử dụng ở định dạng ovf/ova tương thích với VMWare và Virtualbox. Ảnh máy ảo sử dụng các thông tin đăng nhập sau:Đăng nhập SSH / Shell
Tên người dùng: administrator
Mật khẩu: howtoforge
Người dùng này có quyền sudo.
Đăng nhập GIT
Tên người dùng: hitesh
Mật khẩu: howtoforge
IP của VM là 192.168.1.100, có thể thay đổi trong tệp /etc/netplan/01-netcfg.yaml. Vui lòng thay đổi tất cả các mật khẩu trên để bảo mật máy ảo.