Cách cài đặt máy chủ HTTP Git với Nginx trên Ubuntu 16.04

theanh

Administrator
Nhân viên
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 16.04.

Yêu cầu
  • Máy chủ Ubuntu 16.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.
  • Địa chỉ IP tĩnh 192.168.15.189 cấu hình trên máy chủ của bạn

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
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.

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
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:
Mã:
sudo mkdir /var/www/html/git
Tiếp theo, cấp quyền thích hợp cho thư mục Git:
Mã:
sudo chown -R www-data:www-data /var/www/html/git
Sau khi hoàn tất, bạn có thể tiến hành cấu hình máy chủ web Nginx.

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
Thay đổi tệp như hiển thị bên dưới:
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}}
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:
Mã:
sudo nginx -t
Nếu mọi thứ đều ổn, bạn sẽ thấy kết quả sau:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: tệp cấu hình /etc/nginx/nginx.conf đã kiểm tra thành công
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
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:
Mã:
sudo systemctl restart nginx
Bạn có thể kiểm tra trạng thái của máy chủ Nginx bằng lệnh sau:
Mã:
sudo systemctl status nginx
Bạn sẽ thấy đầu ra 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 2017-06-20 23:00:11 IST; 51 phút trước Tiến trình: 12415 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS) Tiến trình: 7616 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS) Tiến trình: 12423 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Tiến trình: 12419 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 12427 (nginx) CGroup: /system.slice/nginx.service ??????12427 nginx: tiến trình chính /usr/sbin/nginx -g daemon on; master_process on ??????12431 nginx: tiến trình công nhân20 tháng 6 23:00:11 localhost systemd[1]: Đã dừng Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.20/06 23:00:11 localhost 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...20/06 23:00:11 localhost systemd[1]: nginx.service: Không đọc được PID từ tệp /run/nginx.pid: Đối số không hợp lệ20/06 23:00:11 localhost 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.

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 repo.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 777 .
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:
Mã:
sudo ufw enable
Sau khi tường lửa UFW được bật, bạn có thể cho phép dịch vụ HTTP bằng cách chạy lệnh sau:
Mã:
sudo ufw allow http
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
Được rồi, đó là tất cả về 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.

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 bằng lệnh sau:
Mã:
sudo apt-get install git -y
Trước tiên, tạo một kho lưu trữ cục bộ bằng lệnh sau:
Mã:
sudo mkdir ~/testproject
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:
Mã:
cd ~/testproject
git init
git remote add origin http://[emailprotected]/hitesh.git
Tiếp theo, tạo một số tệp và thư mục bằng lệnh sau:
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
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ữ:
Mã:
git add .
git commit -a -m "Add files and directoires"
Bạn sẽ thấy kết quả sau:
Mã:
[master 002fac9] Add files and directoires 3 files changed, 3 inserteds(+) create mode 100644 repo1 create mode 100644 repo2 create mode 100644 repo3
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:
Mã:
git push origin master
Bạn sẽ thấy kết quả sau:
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
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:
Mã:
git clone [emailprotected]:/var/www/html/git/hitesh.git
Bạn sẽ thấy đầu ra sau:
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: Đang nén đối tượng: 100% (3/3), hoàn tất.Đang nhận đối tượng: 100% (8/8), 598 byte | 0 byte/giây, xong.từ xa: Tổng cộng 8 (delta 0), sử dụng lại 0 (delta 0)Đang kiểm tra kết nối... xong.
Bây giờ, hãy thay đổi thư mục thành kho lưu trữ đã sao chép bằng lệnh sau:
Mã:
cd hitesh
tree
Bạn sẽ thấy đầu ra sau:
Mã:
.|-- test1| `-- repo1|-- test2| `-- repo2`-- test3 `-- repo33 thư mục, 3 tệp

Kết luận​

Tôi hy vọng bây giờ bạn có thể dễ dàng đẩy, kéo, sao chép và cam kết mã nguồn bằng máy chủ Git. Hãy thoải mái bình luận cho tôi nếu bạn có bất kỳ thắc mắc nào.
 
Back
Bên trên