У меня есть приложение Spring Boot, которое я хочу начать использовать System V Init. Мой файл jar находится в /var/my-app/my-app-0.0.1-SNAPSHOT.jar. Итак, я создал символическую ссылку, используя команду ниже
sudo ln -s /var/my-app/my-app-0.0.1-SNAPSHOT.jar /etc/init.d/my-app-0.0.1-SNAPSHOT
без каких-либо проблем. Однако, когда я пытаюсь
sudo service my-app-0.0.1-SNAPSHOT start
, я получаю ошибку:
/etc/init.d/my-app-0.0.1-SNAPSHOT: 1: /etc/init.d/myapp-0.0.1-SNAPSHOT: Syntax error: Unterminated quoted string
Кто-нибудь есть идея, что я делаю неправильно? Спасибо.
Если это может помочь кому-то еще в будущем, мне удалось заставить это работать, используя upstart. Оригинальный ответ можно найти здесь.
Я собираюсь скопировать и вставить ответ Patrk Bego здесь для удобства:
Сначала вам нужно будет определить сценарий Upstart (в случае Ubuntu 14.04), он находится в / etc / init / и заканчивается на .conf. ( здесь )
# <service name>.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
в случае Ubuntu 16.06+ (здесь вы можете найти хорошую статью)
sudo vim /etc/systemd/system/my-webapp.service
Затем вы можете запустить его как :
sudo service <your service name> start
Надеюсь, что это поможет.
Если это может помочь кому-то еще в будущем, мне удалось заставить это работать, используя upstart. Оригинальный ответ можно найти здесь.
Я собираюсь скопировать и вставить ответ Patrk Bego здесь для удобства:
Сначала вам нужно будет определить сценарий Upstart (в случае Ubuntu 14.04), он находится в / etc / init / и заканчивается на .conf. ( здесь )
# <service name>.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
в случае Ubuntu 16.06+ (здесь вы можете найти хорошую статью)
sudo vim /etc/systemd/system/my-webapp.service
Затем вы можете запустить его как :
sudo service <your service name> start
Надеюсь, что это поможет.
Если это может помочь кому-то еще в будущем, мне удалось заставить это работать, используя upstart. Оригинальный ответ можно найти здесь.
Я собираюсь скопировать и вставить ответ Patrk Bego здесь для удобства:
Сначала вам нужно будет определить сценарий Upstart (в случае Ubuntu 14.04), он находится в / etc / init / и заканчивается на .conf. ( здесь )
# <service name>.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
в случае Ubuntu 16.06+ (здесь вы можете найти хорошую статью)
sudo vim /etc/systemd/system/my-webapp.service
Затем вы можете запустить его как :
sudo service <your service name> start
Надеюсь, что это поможет.
Ubuntu использует systemd. Вы можете найти сообщение о том, что кто-то задает аналогичный вопрос в этом сообщении
. Другим подходом было бы использовать какой-либо инструмент оркестровки, например кубернеты или роутер докеров, для создания служб, которые могут перезапускать службу, даже если в какой-то момент она терпит неудачу времени.
Пример с докером:
В вашем Dockerfile
FROM java:8-jre-alpine
COPY /location/of/your/jar/xyz.jar /where/you/want/it/stored/xyz.jar
CMD ["/bin/sh", "-c", "java -jar /where/you/want/it/stored/xyz.jar"]
Создайте изображение вашего докера
docker build \
-t my-app:0.0.1-snapshot \ #specify a name for your image
/dockerfile/location/ # the location of your dockerfile
] Чтобы проверить
docker run -it \ # -it represents interactive tty
-p 80:8080 \ # -p binds 8080 (the container port) to 80 (host port)
--restart=always \ # --restart=always run the service unless stopped by user
--name my-app \ # --name the name of your container
my-app:0.0.1-snapshot # the image you built with the build command
Протестируйте почтовый агент или браузер на свой локальный хост. Вы можете попробовать перезагрузить компьютер, и приложение все равно должно работать. В производстве вы используете рой или кубернеты.
Чтобы использовать рой, вы создаете файл docker-compose.yml, и вы должны хранить изображения в реестре - на управляющем узле должно существовать построенное изображение, если оно
В вашем docker-compose.yml
version: '3.5'
services:
my-app:
image: my-app:0.0.1-snapshot
ports:
- "80:8080"
restart: always
В терминале:
docker swarm init
docker stack deploy my-app --compose-file ./docker-compose.yml
Вы должны проверить свое сообщение для других вопросов, таких как настойчивость и безопасность.
Ubuntu использует systemd. Вы можете найти сообщение о том, что кто-то задает аналогичный вопрос в этом сообщении
. Другим подходом было бы использовать какой-либо инструмент оркестровки, например кубернеты или роутер докеров, для создания служб, которые могут перезапускать службу, даже если в какой-то момент она терпит неудачу времени.
Пример с докером:
В вашем Dockerfile
FROM java:8-jre-alpine
COPY /location/of/your/jar/xyz.jar /where/you/want/it/stored/xyz.jar
CMD ["/bin/sh", "-c", "java -jar /where/you/want/it/stored/xyz.jar"]
Создайте изображение вашего докера
docker build \
-t my-app:0.0.1-snapshot \ #specify a name for your image
/dockerfile/location/ # the location of your dockerfile
] Чтобы проверить
docker run -it \ # -it represents interactive tty
-p 80:8080 \ # -p binds 8080 (the container port) to 80 (host port)
--restart=always \ # --restart=always run the service unless stopped by user
--name my-app \ # --name the name of your container
my-app:0.0.1-snapshot # the image you built with the build command
Протестируйте почтовый агент или браузер на свой локальный хост. Вы можете попробовать перезагрузить компьютер, и приложение все равно должно работать. В производстве вы используете рой или кубернеты.
Чтобы использовать рой, вы создаете файл docker-compose.yml, и вы должны хранить изображения в реестре - на управляющем узле должно существовать построенное изображение, если оно
В вашем docker-compose.yml
version: '3.5'
services:
my-app:
image: my-app:0.0.1-snapshot
ports:
- "80:8080"
restart: always
В терминале:
docker swarm init
docker stack deploy my-app --compose-file ./docker-compose.yml
Вы должны проверить свое сообщение для других вопросов, таких как настойчивость и безопасность.
Ubuntu использует systemd. Вы можете найти сообщение о том, что кто-то задает аналогичный вопрос в этом сообщении
. Другим подходом было бы использовать какой-либо инструмент оркестровки, например кубернеты или роутер докеров, для создания служб, которые могут перезапускать службу, даже если в какой-то момент она терпит неудачу времени.
Пример с докером:
В вашем Dockerfile
FROM java:8-jre-alpine
COPY /location/of/your/jar/xyz.jar /where/you/want/it/stored/xyz.jar
CMD ["/bin/sh", "-c", "java -jar /where/you/want/it/stored/xyz.jar"]
Создайте изображение вашего докера
docker build \
-t my-app:0.0.1-snapshot \ #specify a name for your image
/dockerfile/location/ # the location of your dockerfile
] Чтобы проверить
docker run -it \ # -it represents interactive tty
-p 80:8080 \ # -p binds 8080 (the container port) to 80 (host port)
--restart=always \ # --restart=always run the service unless stopped by user
--name my-app \ # --name the name of your container
my-app:0.0.1-snapshot # the image you built with the build command
Протестируйте почтовый агент или браузер на свой локальный хост. Вы можете попробовать перезагрузить компьютер, и приложение все равно должно работать. В производстве вы используете рой или кубернеты.
Чтобы использовать рой, вы создаете файл docker-compose.yml, и вы должны хранить изображения в реестре - на управляющем узле должно существовать построенное изображение, если оно
В вашем docker-compose.yml
version: '3.5'
services:
my-app:
image: my-app:0.0.1-snapshot
ports:
- "80:8080"
restart: always
В терминале:
docker swarm init
docker stack deploy my-app --compose-file ./docker-compose.yml
Вы должны проверить свое сообщение для других вопросов, таких как настойчивость и безопасность.