[Steve 서버 구축 #2] VM 설정

2024. 1. 9. 20:20프로젝트 로그/OCPP 프로젝트

반응형

1. Putty로 Lightsail VM에 연결

SSH 연결이 정상적으로 수행되면 아래와 같은 화면을 볼 수 있습니다.

 

2. Update

$ sudo apt update && sudo apt -y upgrade

 

3. Steve 서버를 구동하기 위한 필요한 패키지 설치

Steve를 구동하기 위한 maven과 mysql 패키지를 설치 합니다.

$ sudo apt install maven mysql-client-core-5.7

 

4. DB 연결 후 데이터베이스 생성

앞에서 생성한 DB 인스턴스에서 username과 password를 이용하여 아래 명령을 수행 합니다.

명령에 대한 의미는 아래와 같습니다. mysql -u <username> -h <end point> -p

$ mysql -u dbmasteruser -h 생성한 DB end point -p
$ 비밀번호 입력

 

 

 

stevedb 이름의 DB를 생성 합니다.

mysql> CREATE DATABASE stevedb CHARACTER SET utf8 COLLATE utf8_unicode_ci;
mysql> quit

 

5. steve server git 저장소를 가져오기

git clone https://github.com/RWTH-i5-IDSG/steve.git; cd steve

 

6. Steve 설정 변경

db.ip : 생성한 DB의 endpoint

db.user : 생성한 DB의 username

db.password: 생성한 DB의 비밀번호

 

auth.password: 웹 인터페이스에서 사용한 비밀번호

server.host = 0.0.0.0

ubuntu@ip-172-26-5-37:~/steve$ vi src/main/resources/config/prod/main.properties

# Just to be backwards compatible with previous versions, this is set to "steve",
# since there might be already configured chargepoints expecting the older path.
# Otherwise, might as well be changed to something else or be left empty.
#
context.path = steve

# Database configuration
#
db.ip = localhost
db.port = 3306
db.schema = stevedb
db.user = steve
db.password = changeme

# Credentials for Web interface access
#
auth.user = admin
auth.password = 1234

# The header key and value for Web API access using API key authorization.
# Both must be set for Web APIs to be enabled. Otherwise, we will block all calls.
#
webapi.key = STEVE-API-KEY
webapi.value =

# Jetty configuration
#
server.host = 127.0.0.1
server.gzip.enabled = true

 

7. Steve 빌드

$ export MAVEN_OPTS="-Xmx100m" && mvn package

 

해당 옵션에 대한 의미는 아래와 같습니다.

export MAVEN_OPTS="-Xmx100m" 는 maven을 실행 할 때 사용되는 Java Virtual Machine(JVM)의 옵션을 설정합니다.

여기에서 'MAVEN_OPTS"는 Maven이 사용할 JVM 옵션을 지정하는 환경 변수입니다.

  • "-Xmx100m": JVM의 최대 힙 메모리 크기를 100메가 바이트로 제한합니다. 이는 Maven이 빌드를 수행할 때 사용할 수 있는 메모리 양을 지정합니다. 메모리 제한은 시스템의 메모리 자원을 효율적으로 관리하거나, 큰 프로젝트의 경우 OutofMemoryError와 같은 메모리 관련 문제를 방지 하기 위해 설정 됩니다.

8. TrobleShooting

역시 한번에 되는건 없네요. 빌드 명령을 수행하니 아래와 같은 빌드 에러가 나왔습니다.

 

1. DB 설정 변경

아래 내용은 빌드 에러 해결과 크게 연관은 없는거 같지만, 최근 튜토리얼에서 설정을 이렇게 해 놓은 것을 보고 똑같이 적용 하였습니다.

mysql> ALTER DATABASE stevedb CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Query OK, 1 row affected (0.00 sec)

 

2. 빌드 시, JVM Option 파라미터 수정

위 에러에서 OutofMemoryError라는 문구가 있어 아래와 같이 JVM의 최대 힙 메모리 크기를 1024MByte로 수정하니 빌드 성공하였습니다.

$ export MAVEN_OPTS="-Xmx1024m" && mvn package

 

 

 

빌드가 완료되면 target/steve.jar 파일이 생성 됩니다.

아래와 같은 명령을 수행하면 수동으로 빌드된 steve 서버를 실행 할 수 있습니다.

$ java -jar target/steve.jar

 

정상적으로 실행되면 아래와 같은 화면을 볼 수 있습니다.

 

9. Ubuntu 실행 시, Steve 서버가 자동으로 실행 되도록 설정

수동으로 Steve 서버를 실행하는 것이 아닌, Ubuntu가 부팅되면 자동으로 서버를 실행 할 수 있도록 Systemd에 Steve를 등록하는 과정을 설명 합니다.

 

서비스 파일 생성

$ vi /etc/systemd/system/ocpp-server.service

 

[Unit]
Description=Steve OCPP Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/java -jar /home/ubuntu/steve/target/steve.jar
User=ubuntu
Restart=on-failure

[Install]
WantedBy=multi-user.target

 

서비스 활성화 및 시작

$ sudo systemctl enable ocpp-server.service
$ sudo systemctl start ocpp-server.service

 

서비스 상태 확인

$ sudo systemctl status ocpp-server.service
● ocpp-server.service - Steve OCPP Server
   Loaded: loaded (/etc/systemd/system/ocpp-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2024-01-07 01:51:12 UTC; 13s ago
 Main PID: 16392 (java)
    Tasks: 27 (limit: 2318)
   CGroup: /system.slice/ocpp-server.service
           └─16392 /usr/bin/java -jar /home/ubuntu/steve/target/steve.jar

Jan 07 01:51:12 ip-172-26-5-37 systemd[1]: Started Steve OCPP Server.
Jan 07 01:51:13 ip-172-26-5-37 java[16392]: Log file: /home/ubuntu/logs/steve.log

 

서비스 로그 확인

$ sudo journalctl -u ocpp-server.service
-- Logs begin at Sat 2024-01-06 07:46:57 UTC, end at Sun 2024-01-07 01:51:57 UTC. --
Jan 07 01:51:12 ip-172-26-5-37 systemd[1]: Started Steve OCPP Server.
Jan 07 01:51:13 ip-172-26-5-37 java[16392]: Log file: /home/ubuntu/logs/steve.log
Jan 07 01:51:26 ip-172-26-5-37 java[16392]: Starting...................... Done!
Jan 07 01:51:26 ip-172-26-5-37 java[16392]: Hint: You can stop the application by pressing CTRL+C
Jan 07 01:51:26 ip-172-26-5-37 java[16392]: Access the web interface using
Jan 07 01:51:26 ip-172-26-5-37 java[16392]: - http://172.26.5.37:8080/steve/manager/home
Jan 07 01:51:26 ip-172-26-5-37 java[16392]: SOAP endpoint for OCPP
Jan 07 01:51:26 ip-172-26-5-37 java[16392]: - http://172.26.5.37:8080/steve/services/CentralSystemService
Jan 07 01:51:26 ip-172-26-5-37 java[16392]: WebSocket/JSON endpoint for OCPP
Jan 07 01:51:26 ip-172-26-5-37 java[16392]: - ws://172.26.5.37:8080/steve/websocket/CentralSystemService/(chargeBoxId)

 

반응형