Bạn có thể tập trung mã của mình vào một thư mục chung (hoặc tạo tập lệnh sao chép tất cả mã vào 8 máy chủ hoặc sử dụng NFS).
Mã tập trung này có thể nằm trong một hoặc nhiều kho lưu trữ trong SVN của bạn. Vì vậy, khi bạn đẩy, bạn chỉ đẩy những gì bạn cần để đẩy.
Ví dụ: bạn có thể tạo 1 kho lưu trữ cho thư viện PHP của riêng bạn (lớp cơ sở dữ liệu, xml, imap, v.v ...). Trong cấu trúc đơn giản và khi bạn gọi những tệp này bạn chỉ cần thực hiện:
require('/web/lib/DatabaseMySQL.class.php');
Bằng cách này, bạn biết tất cả các tệp cần thiết ở cùng một nơi và rất dễ bảo trì. Đặc biệt nếu mã của bạn yêu cầu các tệp yêu cầu yêu cầu tệp.
Bạn có thể tạo bao nhiêu kho lưu trữ tùy thích và lặp lại điều này nếu bạn không muốn trộn các tệp - ví dụ như bên thứ ba (Smarty, phpmailer) với mã bạn tạo.
Điều khác là, không sáng tạo lại bánh xe. Có rất nhiều mã tốt ở đó có thể làm những gì bạn đã cần phải làm. Giống như gửi email (phpmailer hoặc bất kỳ người nào khác) hoặc hệ thống mẫu (Smarty hoặc bất kỳ người nào khác). Bằng cách này bạn cùng một thời gian phát triển và khi một bản cập nhật nếu có, bạn chỉ cần tải về, sao chép (cam kết nếu bạn có nó trong một kho lưu trữ) và đẩy.
Tập lệnh VS NFS.
Tạo tập lệnh để đẩy tất cả mã của bạn vào 8 máy chủ web dễ thực hiện. Mặt trái của điều này là bạn cần phải chắc chắn rằng tất cả các thư mục và tất cả các tập tin bạn có trên mỗi máy chủ là giống hệt nhau để tránh lỗi. Ngoài ra, nếu có sự chậm trễ trên mạng của bạn hoặc thả kết nối trong khi đẩy một số máy chủ sẽ không có cùng một mã. Một lần nữa, nhiều lỗi hơn. Đây là một chút nhanh hơn để chạy so với các giải pháp NFS.
Tạo NFS khắc phục vấn đề ở trên vì bạn chỉ sử dụng 1 vị trí nhưng nếu vị trí đó thả tất cả các máy chủ của bạn sẽ không chạy chính xác. Vì vậy, khi bạn đẩy mã, bạn chỉ đẩy tới 1 địa điểm và tất cả các máy chủ khác sẽ tự động có mã mới. Một cái gì đó bạn cần phải biết cũng có, điều này sẽ chậm hơn một chút so với nếu mã trực tiếp trên ổ đĩa cứng.
Dưới đây là một kịch bản mẫu mà bạn có thể sử dụng:
Bạn có thể tạo một kịch bản sh sẽ sao chép mã từ kho lưu trữ của bạn (ví dụ, mã bạn kiểm tra ra từ kho lưu trữ) cho tất cả các máy chủ như thế này:
// file: pushcode.sh
#!/bin/bash
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ [email protected]:/path/to/code
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ [email protected]:/path/to/code
làm kịch bản này thực thi và chạy nó:
./pushcode.sh
để đảm bảo bản sao mã một cách chính xác mà không nhắc mật khẩu mỗi lần, bạn sẽ phải bypass the ssh login.
Đây là một tài khoản tốt bạn có thể thích: https://serverfault.com/questions/195035/linux-nfs-performance-vs-other-fss
là máy chủ svn trên cùng một mạng với máy chủ web? hoặc bạn có svn được lưu trữ trên một tên miền riêng biệt mà không thuộc về bạn? –
máy chủ svn nằm trong cùng phạm vi ip để có trên cùng một mạng với máy chủ nhưng không thể truy cập từ bên ngoài –