Chúng tôi đang sử dụng capistrano để sử dụng một thiết lập tương tự. Tuy nhiên, chúng tôi đã gặp phải một số sự cố:
Sau khi chuyển sang thiết lập, mọi thứ có vẻ ổn nhưng sau đó chúng tôi bắt đầu nhận thấy rằng sau khi chạy cap deploy
, mặc dù liên kết tượng trưng đã được thay đổi để trỏ về phía đầu sửa đổi, trình duyệt sẽ vẫn hiển thị các trang cũ, ngay cả sau khi làm mới nhiều và chắp thêm các tham số GET khác nhau.
Lúc đầu, chúng tôi nghĩ rằng đó là bộ nhớ đệm của trình duyệt, vì vậy để phát triển, chúng tôi đã vô hiệu hóa bộ nhớ đệm trình duyệt qua tiêu đề HTTP, nhưng điều này không thay đổi bất cứ điều gì. Sau đó, tôi đã kiểm tra để đảm bảo rằng chúng tôi đã không thực hiện toàn bộ bộ nhớ cache phía máy chủ và chúng tôi đã không làm như vậy. Nhưng sau đó tôi nhận thấy rằng nếu tôi xóa một tệp trong bản sửa đổi mà liên kết tượng trưng được sử dụng để trỏ tới, chúng tôi sẽ nhận được 404, vì vậy Apache đang phục vụ các trang mới, nhưng vẫn đang theo "liên kết tượng trưng cũ" và phân phát các trang từ thư mục sai.
Đây là lưu trữ được chia sẻ, vì vậy tôi không thể khởi động lại Apache. Vì vậy, tôi đã thử xóa liên kết tượng trưng và tạo một liên kết mới mỗi lần. Điều này dường như hoạt động đôi khi, nhưng không đáng tin cậy. Nó làm việc có lẽ 25 ~ 50% thời gian.
Cuối cùng, tôi thấy rằng nếu tôi:
- loại bỏ các liên kết tượng trưng hiện có (xóa nó hoặc đổi tên nó);
- đã yêu cầu trang, gây Apache để cố gắng giải quyết các liên kết tượng trưng nhưng thấy nó thiếu (kết quả là 404)
- sau đó tạo ra một liên kết tượng trưng mới vào thư mục mới
nó sẽ gây ra docroot để được cập nhật chính xác phần lớn thời gian.Tuy nhiên, ngay cả điều này không hoàn hảo và khoảng 2-5% thời gian, khi tập lệnh triển khai chạy wget
để tìm nạp trang ngay sau khi đổi tên liên kết tượng trưng cũ, nó sẽ trả lại trang cũ thay vì 404.
Dường như Apache đang lưu vào bộ đệm hệ thống tập tin, hoặc có lẽ lệnh mv
chỉ thay đổi hệ thống tập tin trong bộ nhớ trong khi Apache đang đọc từ hệ thống tập tin trên đĩa (thực sự không có ý nghĩa gì). Trong cả hai trường hợp, tôi đã đưa ra đề nghị của một ai đó để chạy sync
sau khi thay đổi liên kết tượng trưng, điều này sẽ khiến hệ thống tệp trên đĩa đồng bộ với bộ nhớ và có lẽ sự chậm trễ nhỏ cũng sẽ giúp wget
trả lại 404.
I suy nghĩ "rm/var/www/html/finalbuild & & ln -s/home/người dùng/build4/var/www/html/finalbuild". Bạn thậm chí có thể không cần phải khởi động lại Apache. – barrycarter
cảm ơn, tôi đã thay đổi docroot và chỉ nó vào một liên kết tượng trưng, nhưng apache dường như không được lắng nghe ... Tôi đã khởi động lại apache thành công, bất kỳ ý tưởng? – Jorre
Tôi cũng đã cố gắng tìm một câu trả lời cho điều này. Apache chỉ cho tôi một lỗi 403. Không may mắn cho đến nay. Có lẽ bởi vì đó là thực tế xấu để làm điều này trong sản xuất. Chỉ muốn làm điều đó trên hộp dev của tôi mặc dù. – nedned