Cách thiết lập triển khai tự động với Git với VPS
Giới thiệu
Để được giới thiệu về Git và cách cài đặt, vui lòng tham khảo hướng dẫn giới thiệu .
Bài viết này sẽ hướng dẫn bạn cách sử dụng Git khi bạn muốn triển khai ứng dụng của bạn . Mặc dù có nhiều cách sử dụng Git để triển khai ứng dụng của ta , nhưng hướng dẫn này sẽ tập trung vào cách đơn giản nhất. Tôi giả sử bạn đã biết cách tạo và sử dụng repository trên máy local của bạn . Nếu không, hãy tham khảo hướng dẫn này .
Khi bạn sử dụng Git, quy trình làm việc thường chỉ hướng tới kiểm soát version . Bạn có một repository local nơi bạn làm việc và một repository từ xa nơi bạn giữ mọi thứ đồng bộ và có thể làm việc với một group và các máy khác nhau. Nhưng bạn cũng có thể sử dụng Git để chuyển ứng dụng của bạn sang production .
Cài đặt server
Không gian làm việc hư cấu của ta :
Thư mục trực tiếp server của bạn: / var / www / domain.com
Kho lưu trữ server của bạn: /var/repo/site.git
Ta nên làm gì nếu ta muốn đẩy lên site.git và đồng thời cung cấp tất cả nội dung tại / var / www / domain.com ?
Tạo repository của ta
Đăng nhập vào VPS của bạn từ dòng lệnh và nhập như sau:
cd /var mkdir repo && cd repo mkdir site.git && cd site.git git init --bare
--bare
nghĩa là folder của ta sẽ không có file nguồn, chỉ có điều khiển version .
Móc
Kho lưu trữ Git có một folder được gọi là 'hooks' . Thư mục này chứa một số file mẫu cho các hành động khả thi mà bạn có thể kết nối và thực hiện các hành động tùy chỉnh do bạn đặt.
Tài liệu Git xác định ba móc server có thể có: 'nhận trước' , 'nhận sau' và 'cập nhật' . 'Nhận trước' được thực thi ngay sau khi server nhận được 'đẩy' , 'cập nhật' cũng tương tự nhưng nó thực hiện một lần cho mỗi nhánh và 'sau nhận' được thực hiện khi hoàn thành 'đẩy' và đó là một trong những ta quan tâm.
Trong repository của ta nếu bạn nhập:
ls
Bạn sẽ thấy một vài file và folder , bao gồm cả folder 'hooks' . Vì vậy, hãy vào folder 'hooks' :
cd hooks
Bây giờ, hãy tạo file 'sau khi nhận' bằng lệnh :
cat > post-receive
Khi bạn thực hiện lệnh này, bạn sẽ có một dòng trống cho biết rằng mọi thứ bạn nhập sẽ được lưu vào file này. Vì vậy, hãy nhập:
#!/bin/sh git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
Khi bạn nhập xong, nhấn 'control-d' để lưu. Để thực thi file , ta cần đặt các quyền thích hợp bằng cách sử dụng:
chmod +x post-receive
Bạn có thể thấy trên tài liệu rằng 'git-dir' là đường dẫn đến repository . Với 'work-tree' , bạn có thể xác định một đường dẫn khác đến nơi các file của bạn thực sự sẽ được chuyển đến.
Tệp 'sau khi nhận' sẽ được xem xét mỗi khi quá trình đẩy hoàn tất và nó nói rằng các file của bạn cần phải ở trong / var / www / domain.com .
Máy local
Hãy tạo repository local của ta . Bạn nên thay đổi đường dẫn và tên thành bất kỳ điều gì bạn chọn. Nếu bạn đang sử dụng VPS, chỉ cần nhập:
exit
Và tạo repo của bạn:
cd /my/workspace mkdir project && cd project git init
Sau đó, ta cần cấu hình đường dẫn từ xa của repository của ta . Yêu cầu Git thêm một điều khiển từ xa có tên là 'live' :
git remote add live ssh://user@mydomain.com/var/repo/site.git
Ở đây ta nên cung cấp liên kết repository chứ không phải folder trực tiếp.
Hãy giả sử rằng ta có một số công việc tuyệt vời đã sẵn sàng trong folder này. Ta nên thực hiện các bước thông thường để thêm file và commit bằng một thông báo:
git add . git commit -m "My project is ready"
Chỉ cần nhớ, dấu chấm sau 'git add' nghĩa là bạn đang thêm tất cả các file vào vùng hiển thị. Sau 'git commit', ta có '-m' nghĩa là ta sẽ nhập một tin nhắn. Để hoàn thành, ta chỉ cần 'đẩy' mọi thứ lên server . Ta sử dụng alias 'sống' mà ta đã sử dụng khi đặt điều khiển từ xa.
git push live master Counting objects: 7, done.Delta compression using up to 4 threads.Compressing objects: 100% (7/7), done.Writing objects: 100% (7/7), 10.56 KiB, done.Total 7 (delta 0), reused 0 (delta 0)To ssh://user@mydomain.com/var/repo/site.git * [new branch] master -> master
Ở đây ta yêu cầu Git đẩy đến điều khiển từ xa 'sống' trên nhánh 'chính' . Để hiểu thêm về các nhánh và cách sử dụng nó, bạn có thể đọc hướng dẫn này .
Beta
Điều gì xảy ra nếu bạn không muốn triển khai mọi thứ trong một bước? Có thể bạn muốn kiểm tra nó trước và có một folder beta.
Một trong những cách để làm điều đó là tạo một repository khác. Hãy đăng nhập lại vào VPS của ta và tạo folder của ta :
cd /var/www/ mkdir beta
Để tạo repository của ta :
cd /var/repo mkdir beta.git && cd beta.git git init --bare
, ta nên tạo file 'sau khi nhận' vì ta muốn xem dự án của bạn trong folder beta:
cd hooks cat > post-receive
Nhập nội dung của file :
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f
Khi bạn nhập xong, nhấn 'control-d' để lưu. Để thực thi file , ta cần đặt các quyền thích hợp bằng cách sử dụng:
chmod +x post-receive
Hãy quay lại repository local của ta :
exit cd /my/workspace/project
Vì vậy, bây giờ ta có thể đặt một điều khiển từ xa khác trỏ đến repository beta của ta :
git remote add beta ssh://user@mydomain.com/var/repo/beta.git
Với điều này, ta có thể có một quy trình gồm hai bước. Đầu tiên, ta chuyển sang version beta và kiểm tra, và nếu mọi thứ đều ổn, ta sẽ thúc đẩy hoạt động:
git add . git commit -m "New version" git push beta master
Và sau đó:
git push live master
Stream từ server
Có thể bạn có một group làm việc trong cùng một dự án và bạn muốn những người khác cũng có thể quyết định rằng đã đến lúc stream . Để làm điều này, ta có thể liên kết bản beta và repository trực tiếp trên server . Đăng nhập vào VPS của bạn và gõ:
cd /var/repo/beta.git git remote add live ../site.git
Vì vậy, bây giờ bạn có thể đẩy từ version beta sang hoạt động trên server :
cd /var/repo/beta.git git push live master
Xin chúc mừng! VPS của bạn hiện đã được cài đặt để tự động triển khai với Git!
Các tin liên quan