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.
Nếu như bạn muốn một git server riêng có giao diện đầy đủ thì có thể cài đặt Gitlab Self-hosted hoặc Gogs.io lên máy chủ.
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).
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ệnhchown -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:
+------+
| 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ạo123.456.78.9
: là IP của serverthachpham.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" 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 * 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é.