2012-01-02 19 views
5

Ok, tôi đang tạo ứng dụng ruby ​​đầu tiên của mình. Ai biết di chuyển mọi thứ sang 'sản xuất' là quá phức tạp. Cho đến nay tôi đã vật lộn theo cách của tôi thông qua cấu hình hành khách, làm cho nó chạy trên khởi động, sau đó nhận được redis để chạy khi khởi động.Làm cách nào để tạo một nhân viên phục hồi tự động khi khởi động?

Nhiệm vụ cuối cùng của tôi là khi khởi động để thêm 1 nhân viên. Ngay bây giờ, tôi phải ssh và chạy lệnh cào của tôi rake workers:start. Rõ ràng điều này là không tốt khi tôi muốn đóng ssh .. vì vậy tôi chỉ không thực sự biết làm thế nào hoặc những gì bước tiếp theo là.

Tôi đã thử sao chép cấu hình mặc định định cấu hình lại thành config.ru và nó chỉ thổi lên Hành khách có lỗi. Tôi cũng nhìn vào hồ bơi mà một số người đã đề cập nhưng đó là trên đầu của tôi.

tất cả những gì tôi phải làm là thêm 1 nhân viên khi khởi động. Điều này là không nghiêm trọng của một ứng dụng đơn giản như vậy sẽ là tốt nhất vào thời điểm này.

+0

Nhân tiện, bạn có sử dụng Rails không? Hoặc một số khuôn khổ khác? –

+0

Sinatra. xin lỗi, nên đã đề cập rằng – Tallboy

+0

Tôi hiểu những gì bạn cảm thấy.Tôi đã bị choáng ngợp quá :-) –

Trả lời

4

Trong quá trình sản xuất, bạn nên sử dụng god để xem các quy trình của mình. Ngay cả khi dự án này là một dự án nhỏ, tôi khuyên bạn nên đầu tư thời gian của bạn và thiết lập nó.

Một số lớn khác phải làCapistrano.

Vì vậy, nếu bạn đang sử dụng thần, đây là config file sẽ giúp bạn.

Bạn cũng có thể thử lên lịch rake resque:work khi khởi động hệ thống, sử dụng tập lệnh thích hợp trong /etc/init.d/ hoặc /etc/init/ hoặc cách khác (phụ thuộc vào hệ thống bạn sử dụng). Tôi đã thử điều này một thời gian trước và tôi đã từ bỏ (không nhớ tại sao).

Tôi hiểu rằng câu trả lời của tôi không phải là chính xác những gì bạn đang tìm kiếm ngay bây giờ. Nhưng hãy tưởng tượng điều này: nếu mọi thứ được thiết lập, sau đó triển khai phiên bản tiếp theo cũng dễ dàng như chạy rake deploy trên máy phát triển của bạn. Và nó sẽ chăm sóc kéo mã của bạn từ kho lưu trữ, chạy di chuyển, khởi động lại công nhân và máy chủ web và những gì không.

+1

Tôi biết đây không phải là câu trả lời bạn đang mong đợi nhưng làm thế nào tôi có thể làm điều này với một kịch bản khởi động 'thích hợp'. Tôi hứa rằng Ill sẽ nhìn vào thần và capistrano nhiều hơn nhưng tôi chỉ muốn nó hoạt động trước. Tôi đang sử dụng CentOS. – Tallboy

+0

Hmm, tôi đang sử dụng ubuntu trên máy chủ của mình. Không biết về centos, xin lỗi. –

+0

Đối với những người tin rằng Thiên Chúa là một người để thờ phượng, và không phải cái gì để sử dụng, đây là một giải pháp không thể chấp nhận. Một lựa chọn tốt hơn sẽ là monit. – sockmonk

6

Tôi không sử dụng đá quý thiên chúa vì (1) Tôi đã nhìn thấy một dự án đã bị phá vỡ bởi sự phức tạp của thiết lập mà nó đã giới thiệu và (2) Cá nhân tôi thực sự thoải mái với Linux chuẩn (Ubuntu)) các công cụ xử lý loại điều này.

Để khởi động công nhân Resque trên bootup

tôi có mã này trong file /etc/rc.local tôi. Tôi có một dùng triển khai trên hệ thống:

# Start Resque 
su -l deploy -c "/home/deploy/start-resque-workers" 
su -l deploy -c "/home/deploy/start-resque-webui" 

Sau đó, trong những kịch bản tôi thiết lập môi trường ruby ​​và chạy các nhiệm vụ rake:

# Load RVM into a shell session *as a function* 
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then 
    # First try to load from a user install 
    source "$HOME/.rvm/scripts/rvm" 
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then 
    # Then try to load from a root install 
    source "/usr/local/rvm/scripts/rvm" 
else 
    printf "ERROR: An RVM installation was not found.\n" 
fi 

# Use rvm to switch to the default ruby. 
rvm use default 

# Now launch the app 
cd /home/deploy/app-name-here/current 
nohup rake QUEUE=* RAILS_ENV=production environment resque:work & 

Tôi đã sử dụng loại thiết lập trong nhiều năm, và nó vững chắc. Các máy chủ không sụp đổ. Tôi chưa cần phải cài đặt một hệ thống khác (như đá quý) để xem các máy chủ khác.

Ngoài ra, tôi sử dụng đá quý capistrano để xử lý việc khởi động lại công nhân khi triển khai.

+0

Này, tôi thấy bạn đã trả lời điều này gần 4 năm trước, nhưng ... Bạn có muốn dọn dẹp các công nhân phục hồi ... Sử dụng ps axe và giết chết pid giết chết quá trình, nhưng resque vẫn giữ chúng đăng ký. – jdkealy

+0

hmm ... Tôi xin lỗi, tôi không biết. Dưới đây là các kịch bản lệnh resque của tôi, nếu có trợ giúp: https://github.com/asm-products/think-200/tree/master/script – Dogweather

+0

Xin cảm ơn vì đã liên hệ lại với tôi! Tôi vừa mới thực hiện điều này ngày hôm qua: https://gist.github.com/jdkealy/a7f817bbb8e568ff38bb Tôi đã lo lắng về việc giết một máy chủ trong khi các nhân viên phục hồi bận rộn với một nhiệm vụ và thêm một liên kết tượng trưng vào tập lệnh bash thực thi nhiệm vụ rake /etc/rc0.d/ dường như bỏ công nhân một cách duyên dáng! – jdkealy