Bạn có thể đề xuất các cách để quản lý triển khai mã cho máy chủ web dựa trên Linux không? [đóng cửa]


7

Tôi đã luôn sử dụng một tập lệnh bash rất đơn giản để triển khai mã. Tôi đang chuyển từ sử dụng lật đổ sang Mercurial nhưng tôi thực sự không nghĩ rằng phần mềm kiểm soát sửa đổi là vấn đề cần triển khai.

Một số cách để làm điều này là gì?

#!/bin/sh
date=`date +%Y%m%d_%H%M%S`
tar -zcvf app-dir-$date.tar.gz app/dir 
tar -zcvf app-templates-$date.tar.gz app/templates
tar -zcvf app-media-$date.tar.gz app/media
svn export http://example.com/somepath/trunk hh/ --force

Câu trả lời:


5

Tôi sử dụng Mercurial để quản lý mọi thứ , kể cả các trang HTML tĩnh của tôi. Nó làm cho cuộc sống thực sự, thực sự dễ dàng cho tôi.

Lợi ích bao gồm

  • Tất cả các ưu đãi kiểm soát phiên bản đặc quyền (rollback, thẻ mốc, v.v.)
  • Có thể sao chép trang web của bạn vội vàng
  • Bạn luôn có một bản sao lưu / sao chép cục bộ
  • Dễ dàng giữ đồng bộ nếu bạn có xu hướng thay đổi tại chỗ (tại chỗ, trên máy chủ)
  • Hầu hết các máy chủ được chia sẻ (nếu bạn giao dịch với một) không ngại cài đặt nó

Từ chối trách nhiệm, tôi đã viết hướng dẫn. Có, loại VCS bạn sử dụng có vấn đề, ở một mức độ. Chẳng hạn, tôi sẽ không sử dụng thứ gì đó trong kịch bản này khi tôi không thể cam kết cục bộ và thực hiện một cú hích / cập nhật lớn. Điều đó chỉ buộc tôi gộp quá nhiều thay đổi có vấn đề vào một cam kết.

Tôi có thể làm điều đó với Subversion, và tôi không đánh bại SVN chút nào. Tôi chỉ nghĩ rằng Mercurial là một công cụ tốt hơn nhiều cho vấn đề bạn đang cố gắng giải quyết.

Theo ý kiến ​​của tôi, bạn không cần phải 'làm việc xung quanh' các công cụ của mình trừ khi bạn không có lựa chọn nào khác. Làm như vậy để đánh bại mục đích có chúng, và bạn có một sự lựa chọn :)


Ngoài ra, hãy kiểm tra webmasters.stackexchange.com/questions/262/ Khăn nếu bạn quyết định sử dụng đồng bóng để triển khai.
Evan Plaice

1
Hầu như đã quên ... +1 Mercurial cho việc triển khai gia tăng chắc chắn là con đường để đi.
Evan Plaice

Đây là một ý tưởng tuyệt vời, dunno tại sao tôi chưa bao giờ xem xét nó trước đây.
Không hài lòngGoat

1

Ngoài những gợi ý tuyệt vời trong các câu trả lời khác, bạn có thể muốn xem xét liệu điều đó có quan trọng với bạn để thực hiện cập nhật nguyên tử hay không.

Trên máy chủ FreeBSD của tôi, tôi thực hiện điều này thông qua hai cơ chế:

  • Phiên bản tất cả các tài nguyên tĩnh của tôi. (Ví dụ http://static.example.com/images/logo.1.pnghoặc http://static.example.com/style/main.3.css). Điều này cho phép tôi svn updatetrực tiếp đến trang tĩnh trước khi cập nhật trang động mà không phải lo lắng về việc người dùng nhìn thấy các tệp mới trong các trang cũ.

  • Phiên bản toàn bộ trang web động. Trong trường hợp của tôi, tôi có gốc tài liệu của tôi trỏ đến một liên kết tượng trưng. Chiến lược của tôi là đưa phiên bản sản xuất mới vào vị trí và sau đó với một lệnh duy nhất đẩy nó trực tiếp. .g. đại loại như thế này:

    cp -Rp www.site1.com.1 www.site1.com.2 (hoặc svn checkout)

    svn update site1.com.2 (có thể cần svn switchtrước)

    ln -sf site1.com.2 www.site1.com (nguyên tắc chuyển các thay đổi sang sản xuất)

Điều này đảm bảo rằng không ai trong số những người dùng của tôi cuối cùng nhìn thấy một trang nửa nướng. Họ sẽ thấy phiên bản cũ nếu nó vẫn còn trong bộ nhớ cache hoặc phiên bản mới.

Chiến lược này chỉ hoạt động tốt nếu bạn không trộn nội dung do người dùng tải lên với trang web động của bạn.


0

Chúng tôi sử dụng tác vụ scp của ant , với bộ chọn sửa đổi . Điều đó có nghĩa là bạn chỉ cần cập nhật các tệp đã thay đổi kể từ lần tải lên trước. Thật không may, bộ chọn sửa đổi dường như chỉ được thiết kế để sử dụng cá nhân, không chia sẻ với các thành viên trong nhóm. Các cache.propertiestập tin có tên đường dẫn đến thư mục làm việc của người sử dụng trong đó. Chúng tôi đã viết một loạt các mục tiêu kiến ​​để xoa bóp cache.propertiestệp thành một định dạng có thể được chia sẻ giữa các nhà phát triển và sau đó mát xa trở lại định dạng mà kiến ​​cần. Định dạng cũng khác nhau giữa môi trường Windows và môi trường GNU / Linux.


0

Không phải toàn bộ vấn đề sử dụng kiểm soát phiên bản mà bạn không cần quan tâm đến việc sao lưu trang web trước khi đưa ra bản cập nhật?

Nếu nó được thực hiện chính xác, một svn update(hoặc tương đương) là đủ, và nếu đó là một sai lầm thì hãy đưa nó trở lại một cam kết trước đó? Dù sao đó cũng là những gì chúng ta làm. Cam kết tất cả các thay đổi, svn updatemáy chủ dàn dựng, nếu tất cả đều ổn thì svn updatemáy chủ trực tiếp.

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.