Trang chủ Công cụ [Git] Cách tự tạo một Repository Server

[Git] Cách tự tạo một Repository Server

bởi Thạch Phạm
5 bình luận 9,4K views

Tham gia nhóm hỗ trợ WordPress

Tham gia nhóm Hỗ trợ Server - Hosting & WordPress để cùng nhau hỏi đáp và hỗ trợ các vấn đề về WordPress, tối ưu máy chủ/server.

Tham gia ngay
Bài này thuộc phần 11 của 11 phần trong serie Git cơ bản

Trong một vài trường hợp cá biệt, có thể bạn sẽ không muốn nâng cấp tài khoản của bạn tại các dịch vụ Repository Hosting từ miễn phí lên trả phí để có thể tạo ra không giới hạn các kho chứa mã nguồn, mà bạn muốn tự tạo cho mình một Repository Server để thoải mái tạo ra bao nhiêu kho chứa cũng được. Thật vậy, bạn có thể thuê một VPS tại AZDIGI chỉ với 150.000/tháng thì bạn đã có thể tạo ra một Repository Server thật tốt và đủ để sử dụng cho team của bạn từ nhỏ tới trung bình.

Chuẩn bị

Một Linux Server, có thể là hệ điều hành nào cũng được nhưng nên sử dụng các hệ điều hành phổ biến và bạn dễ thao tác là được, ví dụ như Ubuntu, CentOS, Debian, Fedora,…Và bạn phải sử dụng user root.

Trong bài này thì mình sẽ sử dụng hệ điều hành Ubuntu 14.04 32-bits.

Nếu bạn tự cài đặt server thì hãy chắc chắn rằng đã cài đặt SSH và mở cổng SSH (mặc định là 22).

Khuyến mãi Black Friday

Cài đặt Git

Trước tiên, bạn hãy cài đặt Git vào server với lệnh:

CentOS/RHEL/Fedora

$ yum install git

Ubuntu/Debian

$ apt-get install git

Sau đó gõ git để kiểm tra xem có hiện nội dung hướng dẫn không, nếu có thi thành công.

Tạo Repository

Quy trình tạo Repository trên Server cũng giống như bài tạo repository mình đã viết trước đó. Nhưng để an toàn hơn, mình khuyến khích bạn làm theo từng bước của mình.

Bước 1. Tạo user truy cập vào repository

Bước này chúng ta sẽ tạo ra một user để khi kết nối từ máy tính cá nhân sẽ dùng nó chứ không nên kết nối thẳng vào user root nhé.

Ví dụ mình tạo ra một user tên là git_user và.

$ useradd git_user

Hiếm gặp: Trường hợp khi tạo user nó không tự tạo ra thư mục riêng cho user này tại /home/git_user thì bạn có thể tạo thủ công bằng tài khoản root với lệnh mkdir /home/git_user và dùng lệnh chown -R git_user:git_user /home/git_user để cấp quyền thư mục này cho user git_user.

Và thiết lập mật khẩu cho git_user với lệnh passwd git_user, lưu ý là mật khẩu này bạn chỉ nên sử dụng cho riêng bạn để truy cập vào user git_user nhanh chứ khi remote repository ở máy tính cá nhân thì sẽ dùng SSH cho bảo mật mà không cần gõ lại user/pass khi push.

Tham khảo: Quản trị & Tạo user trên Linux

Thiết lập mật khẩu xong, hãy gõ lệnh su – git_user để chuyển qua user git_user và gõ cd ~ để quay về thư mục gốc của nó để làm việc (các thao tác ở dưới đều làm trên user git_user này).

Bước 2. Thiết lập SSH cho git_user

Bước này chúng ta sẽ thiết lập cho phép người dùng bên ngoài kết nối vào thư mục /home/git_user bằng giao thức SSH cho bảo mật và thuận tiện.

Tham khảo: Bảo mật máy chủ với SSH Key

Tạo thư mục .ssh cho user này.

$ mkdir ~/.ssh/

Kế tiếp là tạo thêm tập tin authorized_keys trong thư mục .ssh/ của nó.

$ touch ~/.ssh/authorized_keys

Bây giờ hãy CHMOD thư mục ~/.ssh/ thành 700.

$ chmod 700 ~/.ssh/

Sau đó CHMOD file authorized_keys thành 600.

$ chmod 600 ~/.ssh/authorized_keys

Bước 2. Tạo repository trên server

Hãy chắc chắn là bạn đang truy cập vào user git_user và đang ở thư mục gốc của user này.

Bây giờ sẽ tạo một tập tin .git cho repository bằng lệnh sau:

$ git init --bare thachpham.git
Initialized empty Git repository in /home/git_user/thachpham.git/

Xong roài đó.

Kết nối với repository từ máy tính

Để kết nối vào repository thachpham.git mà chúng ta vừa tạo, bạn phải tạo ra một SSH Key riêng và thêm nó vào tập tin authorized_keys trong thư mục .ssh của git_user.

Để tạo SSH Key, bạn mở Terminal (hoặc Git Bash ở Windows) lên và gõ lệnh sau:

$ ssh-keygen -t rsa -C "Key cua Thach"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/thachpham/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/thachpham/.ssh/id_rsa.
Your public key has been saved in /home/thachpham/.ssh/id_rsa.pub.
The key fingerprint is:
ce:50:14:df:7b:5e:a5:e2:1f:1e:af:66:79:56:57:87 Key cua Thach
The key's randomart image is:
+--[ RSA 2048]----+
| o. |
| . . . |
| . . . ..|
| . .E.+|
| . S o o +|
| + . + .o|
| o . +.o|
| o++o|
| o++.|
+-----------------+

Sau đó ở máy tính, bạn gõ lệnh cat ~/.ssh/id_rsa.pub để xem public key và copy nó, sau đó dán vào file authorized_keys trong thư mục /home/git_user/.ssh/ trên server. Lưu ý là mỗi key sẽ là một dòng nếu sau này bạn thêm nhiều key vào.

Sau đó, bạn có thể clone repository trên server với lệnh sau.

$ git init && git remote add origin [email protected]:thachpham.git
Initialized empty Git repository in /home/thachpham/thachpham_git/.git/

Trong đó,

  • git_user: Tên user sở hữu thư mục git trên server bạn đã tạo
  • 123.456.78.9: là IP của server
  • thachpham.git: Tên repository đã tạo trên server.

Và bây giờ bạn có thể thử commit và push một tập tin lên server.

$ touch README.md
$ git add .
$ git commit -m "Initial commit"
[master (root-commit) 104f7b7] Initial commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md
thachpham@ubuntu:~/thachpham_git$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 215 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:thachpham.git
 * [new branch] master -> master

Nếu bạn lên server kiểm tra thì trong thư mục repository sẽ không thấy tập tin của bạn vừa push lên. Bạn có thể test thử bằng cách tạo một thư mục khác, sau đó clone lại repository này trên server sẽ thấy tập tin được kéo về.

Lời kết

Tới đây thì bạn cũng đã nắm khá rõ về cách hoạt động của Git, cũng như là biết cách tự tạo một repository server dành cho Git rồi nhỉ? Và đây cũng là bài cuối cùng trong serie Git cơ bản này và mình hy vọng là nó có thể giúp ích cho bạn nhiều trong việc sử dụng Git. Về video thì mình sẽ làm sau nhé.

3.5/5 - (2 bình chọn)
5 bình luận

Có thể bạn quan tâm

Hiện tại blog tạm đóng bình luận vì mình cần tập trung thời gian vào cập nhật bài viết. Bình luận sẽ mở ra cho đến khi mình sẵn sàng.