Làm cách nào tôi có thể cập nhật trang web của mình mà không buộc người dùng phải chờ đợi?


8

Thời gian ngừng hoạt động gây bất tiện cho người dùng và hiện tại họ phải chờ bất cứ khi nào công cụ của trang web được nâng cấp. Ngoài ra, khi sử dụng các tập lệnh ngoài giá, có nguy cơ thay đổi cài đặt sẽ không hoạt động tốt như dự định (ngay cả khi chúng đã được thử nghiệm trên trang web dàn dựng).

Làm cách nào tôi có thể giữ nhiều phiên bản của một trang web trên một máy chủ và chuyển đổi giữa chúng mà không gây ra bất kỳ thời gian chết nào (ví dụ với tệp htaccess)?

Câu trả lời:


6

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.comlà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 mklinklệ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.


7

Bạn có thể sử dụng máy chủ ảo trong apache để có 2 phiên bản mã ở 2 url khác nhau. Một ví dụ thường được sử dụng là:

test.example.com -> /var/www/version1.2

www.example.com -> /var/www/version1.1

cả hai đều trên cùng một máy chủ, nhưng có lẽ chỉ một người có thể truy cập được trên thế giới. Khi bạn hài lòng rằng test.example.com đang hoạt động, bạn có thể thay đổi nơi chúng trỏ đến trong cấu hình apache của bạn và ... thế là xong. Trang web mới, mã mới. Giả sử không có thay đổi lược đồ cơ sở dữ liệu nào sẽ hoạt động. Vì vậy, sau khi bạn thực hiện thay đổi, nó sẽ là:

test.example.com -> / var / www / newtestversion

www.example.com -> /var/www/version1.2

Dưới đây là một ví dụ chỉ thị cấu hình apache cho máy chủ ảo:

<VirtualHost *:80>

     ServerAdmin gabe@localhost

     DocumentRoot "/var/www/version1.1"

     ServerName test.example.com

</VirtualHost>

Để biết thêm thông tin về cách thực hiện việc này, hãy xem tài liệu máy chủ ảo apache

Tôi không chắc làm thế nào để làm điều này trong IIS, nhưng tôi tưởng tượng cũng có một cách.

Nếu có lỗi xảy ra, hãy chuyển máy chủ ảo trở lại ban đầu và trang web cũ của bạn đã hoạt động trở lại ... không có vấn đề gì. Bạn phải khởi động lại apache để những thay đổi này có hiệu lực, nhưng đó thường là một việc rất nhanh phải làm.



0

Những gì tôi muốn đề nghị:

  • Kiểm tra cục bộ trên máy chủ phát triển trước khi tải lên bất kỳ thay đổi nào. Đừng thực hiện các thay đổi trên máy chủ trực tiếp cho đến khi bạn chắc chắn rằng nó hoạt động trên máy chủ thử nghiệm.
  • Thực hiện bảo trì ít nhất là thời gian giao thông nặng. Đối với hầu hết các trang web, điều này sẽ có trong những giờ sáng sớm vào cuối tuần. Nếu cuối tuần không phải là một lựa chọn, thì hãy thực hiện nó trong thời gian ít bị buôn bán nhất trong tuần.
  • Cảnh báo người dùng của bạn về bảo trì theo lịch trình trước thời hạn.

Có cách nào để chỉ thiết lập nhiều phiên bản và chuyển đổi liền mạch giữa chúng không?
Gelatin

Tôi chưa từng làm điều đó trước đây, nhưng tôi sẽ tưởng tượng bạn có thể làm điều đó thông qua thiết lập nhiều máy chủ hoặc máy chủ ảo. Nếu đó là những gì bạn đang tìm kiếm, nó có thể trở thành một câu hỏi tốt hơn cho ServerFault.
Truyền thông Virtuosi

@Simon: Có, sử dụng WampServer và cài đặt các mô-đun khác nhau cho các phiên bản khác nhau của Apache, PHP và MySQL để phù hợp với máy chủ trực tiếp - wamperver.com/en
DisgruntledGoat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.