2015-12-23 8 views
1

Итак, через 2 дня (да, я - полный новобранец, когда дело доходит до серверов), пытаясь получить эту работу, я сдаюсь и обращаюсь к SO за помощью :)Как запустить Java как службу на Ubuntu?

Я хочу запустить приложение java при запуске, войдите в файл журнала. Вот это :)

start on runlevel [2345] 
stop on runlevel [!2345] 


#Respawn the process if it crashes 
#If it respawns more than 10 times in 5 seconds stop 
respawn 
respawn limit 10 5 

expect fork 

script 
    cd /home/ubuntu/admin/ 
    mvn spring-boot:run > /var/log/upstart/admin.log 2>&1 
end script 

Запуск «Суд начать администратор» работает, и я получаю «админ старт/Running» в консоли .. Нет журнал создаются и приложение Java не запускаются ..?

Что мне не хватает?

Как запустить Java как службу на Ubuntu?

+0

Можете ли вы подтвердить, что /home/ubuntu/admin/pom.xml существует? – Aurelien

+0

Он делает .. Я заставлю кого-то взглянуть на это в 2016 году. Теперь пришло время для X-mas;) – Mackelito

+1

Это Q не о программировании, как определено для StackOverflow. Это может быть более целесообразным на соответствующих сайтах http://askubuntu.com ИЛИ http://ServerFault.com. Подумайте об использовании ссылки флага в нижней части вашего Q и попросите модератора переместить ее туда. Удачи. – shellter

ответ

5

Я не хочу отвлекаться, но я развертывал Java-приложения на Ubuntu в производстве с 2010 года и имел очень мало успехов в Upstart. Я использую скрипты init.d и start-stop-daemon. Боковой бонус: он работает на большее количество дистрибутивов.

Создать /etc/init.d/my-java-app:

#!/bin/sh 
# 
# my-java-app My Java App 
# 
# chkconfig: - 80 05 
# description: Enable My Java Application 
# 

### BEGIN INIT INFO 
# Provides:   my-java-app 
# Required-Start: $remote_fs $network 
# Required-Stop:  $remote_fs $network 
# Default-Start: 2 3 4 5 
# Default-Stop: 0 1 6 
# Description:  My Java Application 
# Short-Description: Enable My Java Application 
### END INIT INFO 

DESC="my java app" 
NAME=my-java-app 
PIDFILE=/var/run/$NAME.pid 
RUN_AS=ubuntu 
WORK_DIR=/home/ubuntu/admin 
DAEMON=/usr/bin/mvn 
DAEMON_OPTS="spring-boot:run" 

# Read configuration variable file if it is present 
[ -r /etc/default/$NAME ] && . /etc/default/$NAME 

# Load the VERBOSE setting and other rcS variables 
. /lib/init/vars.sh 

# Define LSB log_* functions. 
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present 
# and status_of_proc is working. 
. /lib/lsb/init-functions 

do_start() { 
    start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE \ 
     --background \ 
     --chuid $RUN_AS \ 
     --chdir $WORK_DIR \ 
     --exec $DAEMON -- $DAEMON_OPTS 
} 

do_stop() { 
    start-stop-daemon --stop --quiet --pidfile $PIDFILE 
    if [ -e $PIDFILE ] 
     then rm $PIDFILE 
    fi 
} 

case "$1" in 
    start) 
    echo -n "Starting $DESC: $NAME" 
    do_start 
    echo "." 
    ;; 
    stop) 
    echo -n "Stopping $DESC: $NAME" 
    do_stop 
    echo "." 
    ;; 
    restart) 
    echo -n "Restarting $DESC: $NAME" 
    do_stop 
    sleep 1 
    do_start 
    echo "." 
    ;; 
    status) 
    status_of_proc -p $PIDFILE "$DAEMON" "$NAME" && exit 0 || exit $? 
    ;; 
    *) 
    echo "usage: $NAME {start|stop|restart}" 
    exit 1 
    ;; 
esac 

Сделать это относится к корню, сделать его исполняемым, и установить его для запуска при старте с:

sudo chown root:root /etc/init.d/my-java-app 
sudo chmod 755 /etc/init.d/my-java-app 
sudo update-rc.d my-java-app defaults 

Для запуска службы вы можете запустить:

sudo service my-java-app start 

Чтобы остановить службу вы можете ру п:

sudo service my-java-app stop 

Это основано на упрощенной версии файла /etc/init.d/skeleton включен в Ubuntu.

man page for start-stop-daemon стоит посмотреть, если вы хотите изменить этот further.b

+1

Большое спасибо за ваше предложение! Попробуй это как можно скорее! :) – Mackelito

+0

@Mackelito любые вопросы, просто ответьте здесь, и мы можем прыгать в чате, если потребуется. –

+1

Thx! :) Есть ли способ записывать вещи «из коробки» или мне нужно написать какую-то оболочку? – Mackelito

Смежные вопросы