서버

UBUNTU lightsail에 war 파일 배포하는 방법(+MySQL 원격설정 +서비스 항상실행)

silver-w 2025. 2. 4. 10:51

※ apt 저장소 다운로드 및 서버 업데이트 

1. apt 저장소 업데이트
$ sudo apt update

2. 우분투 서버 업데이트
$ sudo apt-get update

 

(1) JDK-21 다운로드


 □ apt 저장소에서 받는 방법

apt install openjdk-21-jre-headless -y

 

□ 아카이브에서 받는 방법

 아카이브에서 원하는 버전의 다운로드 링크 가져온 후 다운로드 - tar xvfz 등으로 압축풀기 필요

  - https://jdk.java.net/archive/

sudo wget https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz

 

 

 

(2) 톰캣 다운로드 [4-2 방법(톰캣내장x 프로젝트)으로 배포시 수행]


 1. 아카이브에서 원하는 버전의 다운로드 링크 가져오기 ( 아래는 10버전  ) 

  - https://tomcat.apache.org/ 에서 Core에서 tar.gz 파일 다운로드 링크 복사

ubuntu@ip-172-26-8-212:~$ sudo wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.34/bin
/apache-tomcat-10.1.34.tar.gz

 

 2.  압축풀기

sudo tar xvfz apache-tomcat-10.1.34.tar.gz

 

<결과 : 파란색이 압축이 풀린 폴더>

 

3. 압축 해제된 톰캣 폴더에 chmod '쓰기' 권한 설정 (.war 파일 업로드 시 필요)

$ sudo chmod -R 777 /home/ubuntu/apache-tomcat-10.1.34

 

<결과 ($ ls -l 로 권한 확인)>

 

4. tomcat 설정파일 수정 (server.xml, context.xml)

 

※ vim 편집기 실행

$ sudo vim 경로/파일명

 

 ■ server.xml : server.xml 70라인에 port="8080"을 port="80"으로 변경

$sudo vim /home/ubuntu/apache-tomcat-10.1.34/conf/server.xml

 

 ■ context.xml : allowCasualMultipartParsing="true" path="/" 추가

$sudo vim /home/ubuntu/apache-tomcat-10.1.34/conf/context.xml

5. 톰캣 재실행

$ sudo /home/ubuntu/apache-tomcat-10.1.34/bin/startup.sh

 

(3) MySQL 셋팅 (포트 개방, 다운로드, 권한 설정)


1. MySQL 포트(3306) 개방 

 

2. 우분투의 apt-get 패키지매니저에서 mysql-server 설치

sudo apt-get install mysql-server

 

 

3. 권한 설정

 [1] 관리자로 mysql 접속

sudo mysql -u root -p

 

 [2] root 연결을 원격연결 비밀번호 방식으로 변경

  前 : root 사용자는 auth_socket 플러그인을 이용하여 인증 로그인

  後 : mysql_native_password로 변경

mysql> update mysql.user set plugin='mysql_native_password' where user='root';

 

 [3] 변경사항 반영 

mysql> flush privileges;
(참고) flusth privileges 
 - mysql에서 사용자 계정, 권한에 변경 사항이 생겼을 때 기존의 캐시를 리프레쉬하고 새로운 변경사항을 즉시 반영하는 명령
 - ( 안써도 되는 경우 ) 
   :  create user, drop user, grant, revoke 같은 명령어는 수행 즉시 자동으로 FLUSH PRIVILEGES를 수행하고
      내용을 즉시 반영
- ( 써야 하는 경우 )
   :  mysql.user 테이블을 직접 update, insert 등으로 수정했을 때

 

 § 변경이 반영된 모습

 

[4] root의 비밀번호 변경

mysql> alter user 'root'@'localhost' identified with mysql_native_password by '비밀번호입력';

 

[5] 일반 계정으로 root 비밀번호 입력하여 접속 확인

 

mysql> exit
$ mysql -u root -p 
$ (설정한 비밀번호 입력)

 

[6] 원격 접속 허용 (root@%) user 생성 및 권한 설정

1.원격접속user 생성 ( % = 어디서든 접속가능하도록 설정 )
mysql> create user 'root'@'%' identified by '비밀번호 설정';

2. 전체 DB에 대해 권한을 가진 사용자 추가
mysql> grant all privileges on *.* to 'root'@'%' with grant option;

 

[7] 원격 접속 허용을 위한 mysql 설정파일 수정 

$sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

 i (insert 모드) 입력 후 아래 주석풀기 및 bind-address 부분 내용변경 

 :wq! 로 저장하고 끝내기 (저장을 하지 않아야하면 :q!)

 

4. 우분투 mysql 서버 재시작 

$ sudo service mysql restart

 

 

(4-1) 톰캣 내장한 war파일 배포시

(톰캣을 내장한 war파일을 배포 - (2)부분 시행 x)

 


1. sts에서 로컬에 있는 프로젝트 MAVEN 패킹

1.프로젝트 클린
2/프로젝트 우클릭 : run as -> maven clean
 maven -> update project
 run as -> maven build 
 : profiles 공백 수정 / goals : package -> run 클릭

3.프로젝트 새로고침 후 target 폴더 안에 있는 파일 확인
대상 파일 : "mall-0.0.1-SNAPSHOT.war" 형식

(참고)
jar 파이 빌드를 원하면 pom.xml에서 war 를 jar로 변경 필요
pom.xml 에서 artifactId ~ packaging

mall-0.0.1-SNAPSHOT.war 를 원하는 파일명으로 저장 ( exam.war 등...)

 

2. 패킹한 파일 우분투로 만든 폴더로 이동 ( FileZilla 프로그램 등 활용 ) 

 

(1) FileZilla 에서 site manager 열기 

Transfers Finish 알림창이 뜨면 우분투 다시 실행 

//(프로젝트 run)
sudo java -jar /home/ubuntu/mall/test.war

 

 

(4-2) 톰캣 내장하지 않은 war파일 배포시


 

1. sts : *.war(이클립스 - export - war) 

2. export로 받은 파일을 filezilla를 이용하여 (2)에서 다운 받은 톰캣 폴더의 webapps 폴더에 붙여넣기 

3. 톰캣 재실행

$ sudo /home/ubuntu/apache-tomcat-10.1.34/bin/startup.sh

 

 

 

※ SSH 창 꺼도 서버 실행되게끔 설정


1. 서비스 파일 생성 

$ sudo nano /etc/systemd/system/프로젝트명.service

// 아래 내용 복사 붙여넣기
[Unit]
Description=Groupware Spring Boot Application
After=network.target

[Service]
User=ubuntu
WorkingDirectory=디렉토리 경로
ExecStart=/usr/bin/java -jar 배포파일 경로
SuccessExitStatus=143
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

※ 서비스 파일 수정

 

컨트롤 x  →  y  →  엔터 

 

 2. 서비스 활성화 및 시작

# systemd 설정 다시 로드
sudo systemctl daemon-reload

# 서비스 자동 시작 활성화
sudo systemctl enable group

sudo setcap 'cap_net_bind_service=+ep' $(readlink -f /usr/bin/java)

# 서비스 시작
sudo systemctl start group

// 배포 파일 수정 등 재시작이 필요한 경우 
# 서비스 재시작 
sudo systemctl restart group

 

 3. 서비스 상태 확인

$sudo systemctl status group

→ 서비스 정상 실행 시, 『 Active: running 』 출력

 

 

 

 


 

출처 : 

https://binwrite.com/mysql-flush-privileges/

 

MySQL FLUSH PRIVILEGES 안 해도 되는 이유 – 엔지니어의 기록

MySQL에서 사용자 계정 관련 쿼리를 수행하고 뭔가 뜻대로 반영이 잘 안 되는 거 같으면 무지성으로 FLUSH PRIVILEGES 를 날려보는 경향이 있습니다. 그치만 FLUSH PRIVILEGES가 무엇인지 정확히 알면 쓸 일

binwrite.com

https://cafe.naver.com/jjdev/16661

 

12/16 AWS Lightsail 서버 설정 + mysql8 설정 + DB복사

0) AWS 회원가입 https://cafe.naver.com/jjdev/11485 0) Lightsail 콘솔 접속 후 한 "한국어"변경 https://lightsail....

cafe.naver.com