토이 프로젝트 진행 중에 라즈베리파이 내부에 jar를 배포해야 했다.
처음에 war 방식으로 진행하다가 나중에 집와서 방식이 다르다는 것을 깨닫고 ‘아..’ 했다.
추후에 다시 작업할 일 있으면 참고할려고 메모용으로 남기는 포스팅이다.
선수 작업으로 해당 jar에 맞는 jdk가 설치되어 있어야 한다.
1. 포트포워딩 작업
알아서 포트포워딩하자.
2. Apache2 conf 파일 수정
Apache2 기준으로 수정 파일 경로는 ‘/etc/apache2/sites-available/000-defeault.conf’이다.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName {URL}:{PORT}
ServerAlias {URL}:{PORT}
ProxyPreserveHost On
ProxyPass / http://192.168.0.10:{PORT}/
ProxyPassReverse / http://192.168.0.10:{PORT}/
</VirtualHost>
- URL : DDNS(이걸 적으라는건 아니고 내 기준에선 이걸 입력했다)
- PORT : 포트포워딩한 API 전용 포트
3. application.yaml 확인
spring:
config:
activate:
on-profile: PROD
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://{IP}:{PORT}/{DB NAME}
username: {USERNAME}
password: {PASSWORD}
swagger:
base-url: {PATH}
- url : API 서버는 팀장님 라즈베리파이에서 배포하는데 DB는 내 라즈베리파이에 있는 MariaDB를 쓰기 때문에 내 쪽 공인 IP로 접근한다.
- swagger-base-url : {팀장님 DDNS}:{API 서버 전용 포트}
4. FTP 전송
FTP 프로그램을 통해 jar 파일을 전송한다.
5. jar 실행 테스트
java -jar app.jar --spring.profiles.active=PROD
application.yaml에서 profile로 DEV랑 PROD랑 나눠서 쓰기 때문에 적은 부분이고 없으면 생략 가능하다.
6. 서비스 등록 작업(백그라운드 실행)
cd /etc/systemd/system
nano {서비스명}.service
[Unit]
Description={서비스명}
After=network.target
[Service]
User={서비스 실행 계정}
WorkingDirectory={jar 파일있는 배포용 디렉토리}
ExecStart=java -jar {jar 파일있는 배포용 디렉토리}/app.jar --spring.profiles.active=PROD
SuccessExitStatus=143
Restart=always
RestartSec=5
StandardOutput=file:{jar 파일있는 배포용 디렉토리}/log/output.log
StandardError=file:{jar 파일있는 배포용 디렉토리}/log/error.log
[Install]
WantedBy=multi-user.target
배포 폴더 내부에 log 디렉토리가 없으면 ‘systemctl start {서비스명}’으로 실행할 때 fail 뜨니까 확인하자.
systemctl daemon-reload
systemctl enable {서비스명}.service
systemctl start {서비스명}.service
systemctl status {서비스명}.service
뒤에 ‘.service’는 생략해도 되긴 하던데..
알아서 하길..
'Network > Raspberry Pi 5' 카테고리의 다른 글
[Raspberry Pi 5] Mosquitto 설치 (0) | 2025.03.26 |
---|---|
[Raspberry Pi 5] Prometheus 시각화를 위한 Grafana 설치 및 연동 (0) | 2025.01.05 |
[Raspberry Pi 5] Docker를 이용한 Prometheus 설치 (2) | 2025.01.05 |
[Raspberry Pi 5] 운영(배포) 서버에 파일 업로드 시 하드디스크 경로에 업로드하기 (0) | 2025.01.04 |
[Raspberry Pi 5] '파일 탐색기(내 PC)'에 마운트한 하드디스크 추가하기 (0) | 2025.01.04 |