2011-12-05 25 views
6

Tôi đang sử dụng AMI Linux của Amazon và thực hiện một số sửa đổi tùy chỉnh (thêm máy chủ axis2, v.v ...) và lưu nó làm AMI mới. Bây giờ những gì tôi muốn làm là khi AMI khởi động, khởi động axis2server (ie.axis2server sẽ tự động khởi động khi cá thể khởi động). Đối với điều đó tôi đã sử dụng một tập lệnh init như dưới đây và chạy lệnh sau:Thêm tập lệnh khởi động dịch vụ cho Amazon linux AMI

chkconfig --add axisservice 

Nhưng khi tôi khởi chạy một phiên bản mới từ hình ảnh của tôi, máy chủ axis2 không bắt đầu.

Tôi chỉ cần thực thi tập lệnh /home/ec2-user/axis2-1.6.1/bin/axis2server.sh khi khởi động. Tôi có thiếu gì ở đây không?

#! /bin/sh 
# Basic support for IRIX style chkconfig 
### 
# chkconfig: 235 98 55 
# description: Manages the services you are controlling with the chkconfig command 
### 

case "$1" in 
    start) 
     echo -n "Starting axisservice"   
     touch ~/temp.txt 
     cd /home/ec2-user/axis2-1.6.1/bin 
     ./axis2server.sh & 
     echo "." 
     ;; 
    stop) 
     echo -n "Stopping axisservice" 
     echo "." 
     ;; 

    *) 
     echo "Usage: /sbin/service axisservice {start|stop}" 
     exit 1 
esac 

exit 0 

tôi đã đi qua https://help.ubuntu.com/community/CloudInit là tốt và nó cung cấp một cơ chế gọi là người sử dụng dữ liệu Scripts, nơi người dùng có thể thực hiện một kịch bản khi khởi chạy kịch bản.

$ euca-run-instances --key mykey --user-data-file myscript.sh ami-axxxx 

Đây là một tùy chọn dòng lệnh và những gì tôi muốn là một cái gì đó giống như khi tôi khởi động ví dụ thông qua giao diện người dùng, kịch bản nên started.Therefore, tôi nghĩ rằng tùy chọn ở trên không thể được sử dụng trong trường hợp của tôi. Hãy sửa tôi nếu tôi sai.

Cảm ơn, H.

+0

Chỉ cần kiểm tra những điều cơ bản, tập lệnh có quyền chính xác để chạy khi khởi động không? Bạn đã thử chạy nó theo cách thủ công chưa? – David

+0

Bạn đã tìm thấy giải pháp chưa? Tôi cũng muốn chạy một máy chủ Redis và một node.js khi cá thể của tôi khởi động lại. Có vẻ như Amazon AMI không có bản cập nhật-rc.d được cài đặt ở đây. – user482594

Trả lời

3

Tôi đặt cược môi trường không được thiết lập (lập đúng). Điều này có nghĩa rằng tôi đoán rằng kịch bản shell của bạn cố gắng để bắt đầu một chương trình khác và nó không được tìm thấy.

Vì vậy, lúc đầu, tôi muốn điều chỉnh start một phần của kịch bản của bạn (hiện tại):

echo -n "Starting axisservice"   
touch ~/temp.txt 
cd /home/ec2-user/axis2-1.6.1/bin 
./axis2server.sh & 
echo "." 

được sửa đổi:

echo -n "Starting axisservice"   
touch ~/temp.txt 
cd /home/ec2-user/axis2-1.6.1/bin 
./axis2server.sh 
RETVAL=$? 
[ $RETVAL -eq 0 ] && echo Success 
[ $RETVAL -ne 0 ] && echo Failure 
echo "." 

Vì vậy, sao tôi phải làm gì?

  • loại bỏ & nên kịch bản chờ đợi kịch bản shell của bạn (axis2server.sh) để hoàn thành
  • kiểm tra tình trạng lợi nhuận ($?) của shell script của bạn

Tiếp tục gỡ rối:

Add set -x vào tập lệnh của bạn để bật theo dõi và ghi lại cả hai stderrstdout.

Câu hỏi:

  1. Bạn có nhận thức được rằng stop (trong kịch bản dịch vụ của bạn) không làm gì cả?
  2. touch ~/temp.txt là nghĩa vụ phải tạo /root/temp.txt? (Tôi đang đoán root chạy tập lệnh này.)
  3. Nếu không có đề xuất nào của tôi hoạt động, bạn có thể chia sẻ axis2server.sh và dán stderrstdout?
Các vấn đề liên quan