2009-03-09 33 views
5

Tôi vừa hoàn thành một ứng dụng Django mà tôi muốn nhận được một số phản hồi của người dùng bên ngoài. Tôi muốn khởi chạy một phiên bản và sau đó chia sẻ một phiên bản riêng tư để tôi có thể kết hợp phản hồi và thêm nhiều tính năng hơn. Tôi đang lên kế hoạch thực hiện rất nhiều lần lặp lại nhỏ của quá trình này. Tôi mới phát triển web; trang web thường làm như thế nào? Nó chỉ đơn giản là một vấn đề sao chép thư mục dự án Django của tôi vào một thư mục khác, khởi động máy chủ ở đó, và tiếp tục công việc dev của tôi trong thư mục gốc? Hoặc tôi có muốn sử dụng hệ thống kiểm soát phiên bản thay thế không? Trực giác của tôi là sau này, nhưng nếu vậy, nó có vẻ như là một chủ đề lớn với nhiều công dụng (ví dụ: sự cộng tác, không áp dụng ở đây) và tôi thực sự không biết bắt đầu từ đâu.Làm cách nào để chạy một phiên bản ứng dụng web trong khi phát triển phiên bản tiếp theo?

Trả lời

6

1) URL riêng lẻ www.yoursite.com vs test.yoursite.com. bạn cũng có thể làm www.yoursite.com và www.yoursite.com/development, v.v. Bạn cũng có thể tạo/beta hoặc/staging ..

2) Giữ cơ sở dữ liệu riêng biệt, một cho sản xuất và một cho sự phát triển. Viết kịch bản sẽ sao chép cơ sở dữ liệu trực tiếp của bạn vào cơ sở dữ liệu của nhà phát triển. Giữ một cơ sở dữ liệu cho từng loại trang web bạn tạo. (Bạn có thể muốn tạo một cơ sở dữ liệu beta hoặc dàn dựng cho thử nghiệm của bạn) .. Làm công việc của riêng bạn trong cơ sở dữ liệu dev. Nếu bạn thay đổi cấu trúc cơ sở dữ liệu, hãy lưu các thay đổi dưới dạng tệp .sql có thể được tải và chạy trên cơ sở dữ liệu trang web trực tiếp khi bạn bật những thay đổi đó trực tiếp.

3) Hợp nhất các tính năng vào các trang web khác nhau của bạn với kiểm soát phiên bản. Tôi hiện đang phát với thiết lập lật đổ cho các ứng dụng web có ổn định (thân cây), một dành cho dàn dựng và một cho phát triển. Phát triển thẻ + chi nhánh được sáp nhập vào dàn dựng, và sau đó dàn thẻ/chi nhánh được sáp nhập vào ổn định. Kiểm soát phiên bản sẽ cho phép bạn quản lý mã nguồn của mình theo bất kỳ cách nào bạn muốn. Bạn sẽ phải tìm một phương pháp làm việc cho bạn và sử dụng nó.

4) Cân nhắc xây dựng tự động hóa. Nó sẽ tự động xuất bản trang web của bạn. Hãy xem http://ant.apache.org/. Nó có thể lái xe rất nhiều tự động kiểm tra mã của bạn và tải nó lên mỗi trang web cụ thể như bạn có thể cần.

5) Đồ chơi của tháng: Có một tiện ích gọi là cUrl mà bạn có thể thấy có giá trị. Nó thực hiện rất nhiều từ dòng lệnh. Điều này có thể được chấp nhận trong trường hợp bạn không muốn sử dụng tất cả hoặc bất kỳ Ant nào.

Chúc may mắn!

2

Bạn thường sử dụng kiểm soát phiên bản và có hai tên miền: your-site.com và test.your-site.com. Sau đó your-site.com sẽ luôn cập nhật cho thân cây, phiên bản giao hàng mới nhất hiện tại. Bạn sẽ làm phát triển của bạn trong một nhánh của trunk và test.your-site.com sẽ cập nhật điều đó. Sau đó, bạn định kỳ hợp nhất các thay đổi từ nhánh phát triển của bạn thành trunk.

+0

không chỉ là hai trang web - hai máy chủ, dev + dàn dựng – annakata

+0

Tôi có xu hướng giữ giai đoạn cuối cùng của tôi trên cùng một hộp như sản xuất. Tôi đã chạy trong quá khứ, nơi có sự khác biệt nhỏ giữa sân khấu và cuộc sống, có nó trên cùng một hộp giải quyết những vấn đề khá nhiều. – Luke

0

Điều tôi làm là xuất bản sao kho SVN và đặt các tệp trên máy chủ sản xuất trực tiếp, sau đó giữ máy ảo với bản sao làm việc phát triển và gửi thay đổi cho repo khi Im xong.

2

Jas Panesar có câu trả lời tốt nhất nếu bạn đang yêu cầu điều này từ quan điểm phát triển, chắc chắn. Đó là, nếu bạn chỉ hỏi làm thế nào để dễ dàng giữ cho phát triển mới của bạn tách biệt với trang web đang chạy. Tuy nhiên, nếu câu hỏi của bạn thực sự hỏi cách chạy cả hai phiên bản một cách đồng thời, thì đây là hai xu của tôi.

Thiết lập của bạn có nhiều việc phải làm với điều này, nhưng tôi luôn khuyên bạn nên chạy máy chủ web dựa trên quy trình ngay từ đầu.Đó là, không sử dụng các máy chủ luồng (ít liên quan đến câu hỏi này) và không nhúng vào máy chủ web (nghĩa là, không sử dụng mod_python, đây là phần có liên quan ở đây). Vì vậy, bạn có một hoặc nhiều quy trình nhận yêu cầu HTTP từ máy chủ web của bạn (Apache, Nginx, Lighttpd, v.v.). Bây giờ, khi bạn muốn thử thứ gì đó trực tiếp, mà không ảnh hưởng đến trang web đang chạy bình thường của bạn, bạn có thể đưa ra một quy trình phân phát các yêu cầu không bao giờ nhận được yêu cầu thường xuyên được ủy quyền như những người khác. Đó là, người dùng bình thường không nhìn thấy nó.

Bạn có thể thiết lập tên miền phụ trỏ đến tên miền phụ này và bạn có thể cài đặt phần mềm trung gian chuyển hướng người dùng "đặc biệt" sang phiên bản beta. Điều này cho phép bạn hủy đăng ký các tính năng mới cho một số người dùng, nhưng không cho phép những người khác.

Hiện tại, sự cố lớn nhất xảy ra với các thay đổi về cơ sở dữ liệu. Di chuyển lược đồ là một vấn đề lớn và một cái gì đó hầu hết chúng ta không bao giờ chú ý đến. Tôi nghĩ rằng việc chạy song song là rất tốt, bởi vì nó buộc bạn phải thực hiện di chuyển giản đồ một cách chính xác. Tức là, bạn không thể tắt mọi thứ và chạy các thay đổi lược đồ dài trước khi đưa nó trở lại. Bạn sẽ không bao giờ thấy bất kỳ trang web quan trọng nào từ xa thực hiện điều đó.

Điều quan trọng là các bước nhỏ. Bạn cần phải luôn có hai phiên bản mã của bạn có thể truy cập vào cùng một cơ sở dữ liệu, do đó các thay đổi bạn thực hiện cho mã mới không cần phải phá vỡ mã cũ. Điều này chia nhỏ thành một vài bước bạn luôn có thể thực hiện:

  • Bạn có thể thêm cột có giá trị mặc định hoặc tùy chọn. Mã mới có thể sử dụng nó và mã cũ có thể bỏ qua nó.
  • Bạn có thể cập nhật phiên bản trực tiếp bằng mã biết sử dụng cột mới, tại thời điểm này bạn có thể yêu cầu cột đó.
  • Bạn có thể làm cho phiên bản mới bỏ qua một cột và khi phiên bản đó trở thành phiên bản chính, bạn có thể xóa cột đó.

Bạn có thể thực hiện các bước nhỏ này để di chuyển giữa bất kỳ lược đồ nào. Bạn có thể lặp lại thêm một cột mới để thay thế một cột cũ, triển khai mã mới và loại bỏ cột cũ, tất cả mà không làm gián đoạn dịch vụ.

Điều đó nói rằng, ứng dụng web đầu tiên của bạn? Bạn có thể có thể phá vỡ nó. Bạn có thể có ít người dùng :-) Nhưng, thật tuyệt vời bạn thậm chí còn hỏi câu hỏi này. Nhiều "chuyên gia" công bằng bao giờ hỏi nó, và thậm chí sau đó ít trả lời nó.

+0

Tôi thực sự thích các điểm của bạn về di chuyển giản đồ. Tôi nghĩ rằng có chỗ cho việc giải thích về việc chạy song song. Tôi đã có thể chạy cả ba trang (sản xuất/dàn dựng/dev) trên một máy chủ với cơ sở dữ liệu riêng biệt, nó hoạt động rất tốt. –

Các vấn đề liên quan