Bạn có đang sử dụng máy Linux / BSD không? Nếu vậy, bạn có thể dễ dàng sử dụng các liên kết tượng trưng để thực hiện mục tiêu này.
Tạo phiên bản 1 của trang web tại đây:
/var/www/www.example.org.v1
Tạo một liên kết tượng trưng chỉ đến thư mục này
cd /var/www
ln -s www.example.com.v1 www.example.com
Điều này sẽ cung cấp cho bạn một danh sách thư mục ( ls -la
) trông giống như thế này:
lrwxr-xr-x 1 userid users 18 Aug 3 03:35 www.example.com -> www.example.com.v1
drwxr-xr-x 2 userid users 512 Aug 3 03:35 www.example.com.v1
Đặt máy chủ web của bạn để sử dụng /var/www/www.example.com
làm tài liệu gốc. Bạn sẽ không bao giờ phải thay đổi điều này; tất cả việc trỏ lại sẽ được thực hiện ở cấp hệ thống tập tin.
Bây giờ, khi bạn muốn trao đổi trong Phiên bản 2 của trang web, tất cả những gì bạn phải làm là đặt phiên bản mới vào:
/var/www/www.example.org.v2
Và cập nhật liên kết tượng trưng để trỏ đến phiên bản này:
ln -sfh www.example.com.v2 www.example.com
Mà sẽ để lại đầu ra thư mục của bạn trông như thế này:
lrwxr-xr-x 1 userid users 18 Aug 3 03:43 www.example.com -> www.example.com.v2
drwxr-xr-x 2 userid users 512 Aug 3 03:42 www.example.com.v1
drwxr-xr-x 2 userid users 512 Aug 3 03:41 www.example.com.v2
Như bạn có thể thấy, liên kết tượng trưng www.example.com hiện đang trỏ đến Phiên bản 2 của trang web của bạn. Đây là một hoạt động nguyên tử và không gây ra bất kỳ thời gian chết liên quan đến các tập tin không có sẵn.
Tất nhiên, vẫn còn sự phức tạp đáng kể cần thiết để đảm bảo rằng các cấu trúc cơ sở dữ liệu được cập nhật, mọi tài nguyên tĩnh đều có sẵn (và được liên kết với phiên bản chính xác), v.v., nhưng ít nhất điều này quan tâm đến việc đảm bảo rằng tất cả các tài nguyên phù hợp cho trang web mới có sẵn ngay lập tức.
Windows Vista và Server 2008 cũng hỗ trợ các liên kết tượng trưng bằng cách sử dụng mklink
lệnh, mặc dù tôi không có bất kỳ trải nghiệm trực tiếp nào với chúng.