2013-04-03 42 views
8

Tôi đang chạy ứng dụng đường ray của mình bằng phiên bản doanh nghiệp ruby ​​với kỳ lân là máy chủ ứng dụng. Tôi chạy lệnh nàybắt đầu máy chủ ứng dụng lân khi máy chủ ubuntu bắt đầu

bundle exec unicorn -D -c /home/ubuntu/apps/st/config/unicorn.rb 

Tôi cần chạy lệnh này ngay sau khi khởi động lại hệ thống hoặc khởi động. Tôi đang chạy ứng dụng trên phiên bản ubuntu 10.04 LTS EC2. Tôi đã thử một vài ví dụ được đề cập on this site cũng như as this site nhưng nó không làm việc cho tôi. Mọi người đứng đầu lên

+0

Làm thế nào nó không hoạt động? Bạn có thấy lỗi không? Là quá trình không thực sự chạy (kiểm tra với ps aux) – aussiegeek

+0

Tôi thêm tập lệnh này và khởi động lại dụ nhưng kỳ lân đã bắt đầu cũng tôi đã kiểm tra syslog không tìm thấy và đăng nhập và cũng đã kiểm tra ps aux, quá trình chưa bắt đầu được nêu ra –

+0

I cần chạy bó exec, unicorn_rails không thường của nó. Hãy tạo sự khác biệt –

Trả lời

2

Trong trường hợp của tôi, tôi chỉ muốn nó nhanh chóng vì vậy tôi đặt lệnh khởi động trong /etc/rc.local như dưới đây. Lưu ý rằng tôi đang sử dụng RVM.

# By default this script does nothing. 
cd <your project dir> 
/usr/local/rvm/gems/ruby-2.2.1/wrappers/bundle exec unicorn -c <your project dir>/config/unicorn.conf -D 
test -e /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server 
exit 0 

Hãy chắc chắn rằng lệnh khởi động của bạn là trên lối ra 0. Sau khi bạn khởi động lại, kiểm tra xem nó đang chạy hay không bằng cách trực tiếp đánh url của ứng dụng của bạn hoặc sử dụng ps -aux | grep unicorn lệnh.

Lưu ý * Trước đây tôi sử dụng Phusion Passenger nhưng tôi gặp khó khăn khi nhìn thấy nhật ký lỗi của nó, vì vậy tôi di chuyển trở lại lân. Tôi cũng đã thử @warantesbr mà không thành công, mà tôi đoán nó không thành công vì toàn bộ môi trường của tôi nơi thiết lập sử dụng quyền truy cập root.

16

Hãy dùng thử làm Khởi động. Để làm như vậy, bạn cần phải tạo ra một myapp.conf tập tin vào thư mục /etc/init/ với những nội dung dưới đây:

description "myapp server" 

start on runlevel [23] 
stop on shutdown 
exec sudo -u myuser sh -c "cd /path/to/my/app && bundle exec unicorn -D -c /home/ubuntu/apps/st/config/unicorn.rb" 

respawn 

Sau đó, bạn sẽ có thể bắt đầu/dừng/khởi động lại ứng dụng của bạn với các lệnh bên dưới:

start myapp 
stop myapp 
restart myapp 

Sử dụng ps -aux | grep myapp để kiểm tra xem ứng dụng của bạn có đang chạy không.

+0

Hãy để tôi thử điều này và liên hệ lại với bạn sớm. Cảm ơn rất nhiều. –

+0

khi chạy myapp bắt đầu, công việc không xác định của nó nói. –

+1

Tôi nhận được: 'initctl: Tin nhắn gửi bị từ chối, 1 quy tắc phù hợp; type = "method_call", người gửi = ": 1.7 "(uid = 1000 pid = 4533 comm =" initctl bắt đầu dàn dựng-myapp ") interface =" com.ubuntu.Upstart0_6.Job "thành viên =" Bắt đầu "lỗi name =" (unset) "requested_reply =" 0 "đích = "com.ubuntu.Upstart" (uid = 0 pid = 1 comm = "/ sbin/init") ' –

13

Bạn có thể sử dụng this file làm mẫu, đặt đường dẫn thích hợp được đề cập trong tệp này, làm cho tệp thực thi và liên kết tượng trưng thành /etc/init.d/my_unicorn_server. Bây giờ bạn có thể bắt đầu các máy chủ sử dụng:

sudo service my_unicorn_server start 

Sau đó, bạn có thể làm:

sudo update-rc.d my_unicorn_server defaults 

Để khởi động máy chủ lân trên hệ thống khởi động lại tự động.

+0

I đã cố gắng mà kịch bản đã có, nó không làm việc cho tôi –

+0

Điều này chỉ được khuyến khích nếu bạn không có mới nổi.Tôi không nhớ cho dù 10.04 nào bạn đã bao giờ nhận được điều này được sắp xếp? – jrhorn424

+0

Làm việc ra khỏi hộp cho tôi trên 12.04 .. Ma ke chắc chắn trong khi tạo liên kết tượng trưng bạn cho đường dẫn tuyệt đối và không tương đối .. – benchwarmer

2

Nếu bạn đang sử dụng unicorn_init kịch bản
Bạn có thể cấu hình một công việc định kỳ để khởi động server kỳ lân trên khởi động lại

crontab -e 

và thêm

@reboot /bin/bash -l -c 'service unicorn_<your service name> start >> /<path to log file>/cron.log 2>&1'