저는 이 가이드에 따라 Spring Boot 애플리케이션을 init.d 서비스로 설정했습니다. https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment-initd-service 내 웹 사이트가 제대로 작동하지만 몇 가지 새로운 변경 사항을 배포하려고 하면 업데이트되지 않습니다. 재배포를 시도하는 방법은 다음과 같습니다.
$ ~/deploy.sh
#!/bin/bash
rm -rd /var/myapp/target
rm -rd /etc/init.d/myapp
git --git-dir=/var/myapp/.git pull
sudo systemctl stop myapp
mvn clean package
rm -rd /etc/init.d/myapp
ln -s /var/myapp/target/myapp-0.1.0.jar /etc/init.d/myapp
systemctl daemon-reload
systemctl start myapp
systemctl status myapp
내 항아리에 최신 코드가 있는지 확인했지만 여전히 업데이트되지 않습니다. 좀 더 가지고 놀다가 일부 init.d 파일을 삭제한 것 같은데 이제는 전혀 작동하지 않고 이 오류가 발생합니다.
$ sudo ln -s /var/myapp/target/myapp-0.1.0.jar /etc/init.d/myapp
ln: failed to create symbolic link ‘/etc/init.d/myapp’: File exists
$ sudo systemctl start whatthephil
Failed to start myapp.service: Unit not found.
Spring 가이드에서는 링크를 생성하면 애플리케이션이 설치된다고 나와 있지만 올바르게 설치되지는 않습니다. /var/logs/myapp에 로그가 없습니다. 거기에서 로그를 본 적이 있어요. myapp.service를 찾는 이유는 무엇인가요? 링크만 만들어서 어떻게 애플리케이션을 설치할 수 있나요? 왜 내 장치를 찾을 수 없나요?
답변1
업데이트하려면 nginx 캐시를 삭제해야 합니다.
rm -rd /var/cache/nginx/cache *
현재 저는 Spring Boot 애플리케이션을 이와 같이 재배포하고 있습니다. 항상 뭔가 문제가 생기고 있지만, 확인해 보면 대개 발견하기 어렵지 않습니다./var/log/myApp.log
service myApp stop
rm -rd /etc/init.d/myApp //careful backup home dir first
rm -rd /var/cache/nginx/cache *
git --git-dir=/var/myApp/.git pull
mvn clean package -f /var/myApp/pom.xml
ln -s /var/myApp/target/gs-serving-web-content-0.1.0.jar /etc/init.d/myApp
service myApp start
service myApp status
certbot