Добавление сценария запуска службы для Amazon linux AMI - PullRequest
7 голосов
/ 05 декабря 2011

Я использую Amazon Linux AMI и выполняю некоторые пользовательские изменения (добавляем сервер axis2 и т. Д.) И сохраняю его как новый AMI. Теперь я хочу, чтобы при загрузке AMI запускался axis2server (то есть .axis2server должен запускаться автоматически при загрузке экземпляра). Для этого я использовал скрипт инициализации, как показано ниже, и выполнил следующую команду:

chkconfig --add axisservice

Но когда я запускаю новый экземпляр из своего изображения, сервер axis2 не запускается.

Мне нужно только запустить скрипт /home/ec2-user/axis2-1.6.1/bin/axis2server.sh при запуске. Я что-то здесь упускаю?

#! /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

Я также прошел через https://help.ubuntu.com/community/CloudInit, и он предоставляет механизм, называемый скриптами пользовательских данных, где пользователь может выполнить скрипт при запуске скрипта.

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

Это параметр командной строки, и мне нужно, чтобы при запуске экземпляра через пользовательский интерфейс запускался сценарий. Поэтому, я думаю, вышеописанный параметр нельзя использовать в моем случае. Пожалуйста, поправьте меня, если я ошибаюсь.

Спасибо, H.

1 Ответ

3 голосов
/ 25 мая 2012

Бьюсь об заклад, среда не настроена (правильно). Это означает, что я предполагаю, что ваш сценарий оболочки пытается запустить другую программу, и он не найден.

Итак, сначала я бы настроил start часть вашего скрипта (текущую):

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

Отредактировано:

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 "."

Так что я сделал?

  • удалено &, поэтому скрипт ожидает завершения сценария оболочки (axis2server.sh)
  • проверил статус возврата ($?) вашего сценария оболочки

Дальнейшая отладка:

Добавьте set -x в свои скрипты, чтобы включить трассировку и протоколировать stderr и stdout.

Вопросы:

  1. Знаете ли вы, что stop (в вашем сервисном скрипте) ничего не делает?
  2. touch ~/temp.txt это должно создать /root/temp.txt? (Я догадываюсь root запускает этот скрипт.)
  3. Если ни одно из моих предложений не сработает, вы можете поделиться axis2server.sh и вставить stderr и stdout?
...