1. 클라우드 인스턴스를 생성 및 key를 이용하여 인스턴스 접속
2. requirements 설치
$ sudo apt update
$ sudo apt install openjdk-11-jdk
$ java --version
$ sudo apt install postgresql postgresql-contrib
$ psql --version
$ sudo -i -u postgres #postgres로 유저 전환
postgres@ubuntu:~$ psql
# psql user, db 생성
# 생성한 psql 유저로 접속할 땐 psql -U [username] -d [database] -h 127.0.0.1
3. git clone [repository]
4. 프로젝트 빌드 파일이 있는 위치로 이동
5. 빌드 및 실행
Maven
$ ./mvnw clean package -DskipTests
$ cd target/
$ nohup java -jar [빌드된 jar 파일 이름] &
command | description |
---|---|
package | 컴파일을 수행하고 컴파일한 소스를 packaging 양식(war/jar)에 맞춰 프로젝트 내 지정한 경로(eg.target) 디렉토리에 생성 |
clean | 이전 maven build 시 생성된 모든 것들을 삭제한다. |
-DskipTests | 빌드할 때 테스트케이스를 건너뛴다. |
testskip
은 -Dmaven.test.skip=true
옵션이나 pom.xml plugin
에 아래 코드를 추가하는 방법으로도 가능합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
❗️error
./mvnw clean package permission denied
해당 명령어의 수행 권한이 없어서 발생하는 에러이므로
chmod +x mvnw
로 권한을 주면 됩니다.
Gradle
Gradle 도 Maven 과 크게 다르지 않습니다.
$ ./gradlew clean build -x test
$ cd build/libs/
$ nohup java -jar [빌드된 jar 파일 이름] &
nohup
커맨드를 추가해 daemon
으로 실행시킬 수 있습니다.
tail nohup.out
으로 로그 확인이 가능합니다.
tail
옵션-f
: 파일의 마지막 10라인을 실시간으로 계속 출력
ex) tail -f nohup.out
-n
: 원하는 수 라인 만큼 출력
ex)
tail -n 10 nohup.out
마지막부터 10줄을 출력
tail -n +10 nohup.out
파일의 10번째 줄 이후부터 출력
grep
: 특정 패턴이 들어간 라인만 출력
ex)
tail -f nohup.out | grep "example"
마지막부터 10줄에 example이 들어간 라인들을 출력
tail -100f nohup.out | grep "example"
마지막부터 100줄에 example이 들어간 라인들을 출력
git pull
로 수정사항을 불러옵니다.
기존에 돌아가던 서버 중지하지 않고 새로 빌드한 파일을 실행하면 8080 port already in use
가 뜹니다.
taskkill
을 해주면 해결됩니다.
ps -ef | grep java
혹은
jps
// 실행 중인 프로세스 번호 확인
kill -9 [프로세스의 실행번호]
매번 수정때마다 빌드하고 배포하기 너무 귀찮아서...조만간 웹훅이라도 달아서 처리해야겠습니다😂
wrapper
도 조만간 자세히 뒤져보는걸로🙄
CD를 연결해 두지 않았을 경우 매번 커맨드를 치는 것 보다 쉘스크립트를 생성하는게 편합니다..
chmod u+x script.sh
로 권한을 부여하고 실행합니다.
아래는 Gradle+멀티모듈 구조 기준 스크립트입니다.
#!/bin/bash
SERVICE_NAME=
echo "kill previous process"
kill -9 $(jps | grep $SERVICE_NAME | awk '{print $1}')
echo "###### $SERVICE_NAME ######"
cd $SERVICE_NAME/
echo "remove old jar file"
rm -rf build/
echo "build new jar file"
cd ../
./gradlew clean
./gradlew $SERVICE_NAME:bootJar
echo "run server"
cd $SERVICE_NAME/build/libs/
nohup java -jar $SERVICE_NAME-0.0.1.jar &