이번 항목에서는 실제 외부 IP가 접속하도록 클라우드 서버에 war파일을 배포를 하는 법을 정리해보겠습니다.

배포환경

클라우드 호스팅 서비스는 GCP를 기준으로 하고 VM의 운영체제는 우분투 20.04이고 JDK는 17버전이고 아파치 톰캣은 9.0.98버전이고 SQL은 MySQL 8.0.41 기준으로 배포합니다.

개발환경 상세

환경 사용 버전
OS Ubuntu ubuntu 20.04
Server Apache Tomcat Apache Tomcat v9.0
Language Java JDK: JavaSE-17
DB MySQL mysql-8.0.41

VM 인스턴스 생성하기

alt text


프로젝트 선택버튼을 클릭합니다.


alt text


새 프로젝트버튼을 눌러줍니다.


alt text


프로젝트 이름을 정해주고 위치는 상관안하셔도 됩니다. 그리고 만들기버튼을 클릭합니다.


alt text


위에서 만든 프로젝트로 들어갑니다.


alt text


Computer Engine 버튼을 눌러줍니다.


alt text


사용버튼을 눌러줍니다.


alt text


인스턴스 만들기버튼을 클릭합니다.


alt text


이름을 지어주고 리전은 us-central1(아이오와), 영역은 us-central-a로 설정합니다.


alt text


OS 및 스토리지 항목에 들어가서 변경버튼을 눌러줍니다.


alt text


운영체제는 Ubuntu, 버전은 Ubuntu 20.04 LTS로 해줍니다.


alt text


HTTP 트래픽 허용이랑 HTTPS 트래픽 허용 두 개의 체크박스를 선택해줍니다.


alt text


모든 Cloud API에 대한 전체 액세스 허용 라디오 버튼을 체크해주고 만들기버튼을 누릅니다.


alt text


연결 컬럼의 SSH버튼을 눌러줍니다.


alt text


이 화면이 뜨면 VM 생성과 접속이 잘 된 것입니다!


alt text


다시 홈 화면으로 돌아간다음 VPC 네트워크버튼을 클릭합니다.


alt text


방화벽항목을 클릭합니다.


alt text


방화벽 규칙 만들기버튼을 클릭합니다.


alt text


이름은 아무거나 해도 상관 없지만, 대상, 소스범위, 프로토콜(TCP)를 8080으로 허용하는 건 다 지켜주시고 “만들기” 눌러줍니다.


우분트 기본 패키지 다운로드, 설정

sudo apt upgrade

sudo apt update


alt text


우분트의 기본 패키지들을 다운 받아 줍니다.

Java(JDK)

https://www.oracle.com/kr/java/technologies/downloads/archive/

위의 링크에서 본인의 실행환경과 맞는 JDK를 선택하는게 최고입니다. 이 글에서는 일단 JDK 17버전으로 설치를 하겠습니다.


wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz

sudo tar -xvzf jdk-17.0.12_linux-x64_bin.tar.gz


alt text


리눅스에 호환되는 JDK를 설치하고 압축을 풀어줍니다.


wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz

sudo tar -xvzf jdk-17.0.12_linux-x64_bin.tar.gz

sudo mkdir -p /usr/lib/jvm

sudo mv jdk-17.0.12 /usr/lib/jvm/

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17.0.12/bin/java 1

sudo update-alternatives --config java

java -version


alt text


JDK는 보통 /usr/lib/jvm 폴더 밑에 위치하게 하는 관습이 있으므로 /usr/lib 폴더 밑에 jvm 폴더를 만들어주고 그 곳에다가 JDK를 위치시켜줍니다. java -version 쳤을 때 자바 버전이 잘 나오면 설치가 잘 된 것입니다.


sudo apt-get install openjdk-17-jdk


alt text


openjdk도 설치를 해줍니다. 중간에 “y” 누르는 부분 있습니다.


sudo apt-get install openjdk-17-jdk

Tomcat

https://tomcat.apache.org/whichversion.html

위의 링크에서 본인의 실행환경과 맞는 Tomcat을 선택하는게 최고입니다. 이 글에서는 일단 tomcat 9버전으로 설치를 하겠습니다.

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.99/bin/apache-tomcat-9.0.99.tar.gz

tar -xvzf apache-tomcat-9.0.99.tar.gz


alt text


tomcat을 설치하고 압축풀어줍니다.


cd ~/ 

nano .bashrc #아래 꺼 맨 밑에 복사 붙여넣기

CATALINA_HOME="~/tomcat/apache-tomcat-9.0.99"
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

CATALINA_HOME="~/tomcat/apache-tomcat-9.0.99"
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

source ~/.bashrc


alt text


시스템의 환경변수를 설정합니다.

CATALINA_HOME="~/tomcat/apache-tomcat-9.0.99"
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

CATALINA_HOME="~/tomcat/apache-tomcat-9.0.99"
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

이 부분은 bashrc 파일을 열고 맨 아랫줄에 붙여넣어줍니다.


cd apache-tomcat-9.0.99/bin

vi ~/apache-tomcat-9.0.99/bin/setenv.sh

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-17-openjdk-amd64
CATALINA_PID="/run/tomcat.pid"


alt text


이번에는 톰캣 부분에서 환경변수를 설정해줍니다.


export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-17-openjdk-amd64
CATALINA_PID="/run/tomcat.pid"

이 부분을 복사 붙여넣기 해줍니다. vi 편집기에서 저장 후 나가려면 ESC 한번 누르고 :wq입니다.


cd apache-tomcat-9.0.99/bin

vi ~/apache-tomcat-9.0.99/bin/setenv.sh

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-17-openjdk-amd64
CATALINA_PID="/run/tomcat.pid"


alt text


이번에는 톰캣 부분에서 환경변수를 설정해줍니다.

데이터베이스(MySQL)


sudo apt-get install mysql-server


alt text


MySQL을 깔아줍니다. 우분투에서는 기본 패키지에 MySQL이 내장 되어있으니 그걸 이용하면 편리합니다. 중간에 “y” 눌러줍니다.


sudo systemctl start mysql

sudo systemctl enable mysql


alt text


MySQL 서버를 시작해주고 서버 시작을 자동적으로 유지해줍니다.


sudo apt-get install mysql-server

sudo systemctl start mysql

sudo systemctl enable mysql

sudo mysql -u root -p

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1111';

GRANT GRANT OPTION ON *.* TO 'root'@'localhost';

FLUSH PRIVILEGES;

CREATE USER 'apple'@'localhost' IDENTIFIED BY '1111';

GRANT ALL PRIVILEGES ON *.* TO 'apple'@'localhost';

FLUSH PRIVILEGES;

exit


alt text


일단 “root” 계정으로 들어가서 일반 사용자를 만들어주고 권한을 부여해야합니다. 일반 사용자 이름은 여러분들이 로컬에서 웹 프로젝트 만들 적에 썼던 유저이름과 비밀번호로 해줘야합니다!!! 저는 “apple”이 유저 이름이고 “1111”이 비밀번호입니다.


sudo mysql -u apple -p

CREATE DATABASE gapi;

USE gapi;

// #create, insert 구문 스크립트 복붙


alt text


해당 유저이름으로 데이터베이스 만들고 웹 프로젝트 할 적에 해놨던 create,insert 스크립트 복사,붙여넣기해줍니다.

Github 이용하기

war파일을 VM에 올리기 위해 git 레파지토리를 만들고 git clone 하는 방식을 사용할 것 입니다. 그러므로 지금부터는 여러분들이 github계정을 가지고 있다고 가정하고 진행할 것이니 github계정이 없으시다면 계정을 먼저 만들고 진행해주세요.


cd ~/

sudo apt install git

git --version

cd ~/.ssh

ssh-keygen -t rsa -C 'trumanjinhwan@gmail.com' #본인 깃허브계정 이메일

cat id_rsa.pub


alt text


sh-keygen -t rsa -C 'trumanjinhwan@gmail.com'

이거 한 다음에 뭐 입력해야 될 것 처럼 나오지만 그냥 아무것도 입력안하고 엔터 키 눌러도 되니까 한 3번 정도는 그냥 엔터 키만 치셔도 됩니다. 그리고

cat id_rsa.pub

이거 한 다음 나오는 거 메모장 같은 곳에다가 복사 붙여넣기 해줍니다. 저로 예를 들면

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDWptUKblKCs8QkWYUzU0za/rlv+S5xxSUm2MuVvrZ6DJEN/bh6lSSLh3/IWe3s4Fc6ZNTnA9EcvJKFV+LlrTewLJVLJ1
ya1jhNKEqVn8HEW1d7aHk+cUhdqrH94U8vKyloKt8XXOZU75yPykIM2Lfd8AHjSjL4+DqN12+qQzS0lZ7yYDNfjqEVoe/SARtdlZ9WVX7hjIwGHVsOY8Wwfeynob6R8uJRM
PhBt1fX3E39KZTKcU/CzVoDX33aa+j971OB0+23OPqdslpuHgzcd5HBtog6zKtk+afYP7Q+g0OL3MqipLBGZTXvC3OGl9OFykfg1w8TrmLB7RVYLjg1pIXIYW5AOmzHcCb4g1
WjQRy1pdYDDq6OSzLDadY6MFmOjGWJbzj/TJQgC23HAGbvlvRlJh716V9s2plj3CQoBFR+qXzWM2c8xxqcuZ8xOV/d4zwgezc6bExkKccYzKixy7YNbujOtYoFPV8I45o6JkPX
ax/Z8F6EDMfSYNtFkmAz2ws= trumanjinhwan@gmail.com

이런식으로 나옵니다.


alt text


깃허브 들어가서 우측 상단에 프로필 -> Settings -> SSH and GPG keys -> New SSH key 복사한 SSH 키 붙여넣어봅시다 .


alt text


깃 레파지토리를 생성해줍니다.


alt text


깃 레파지토리에 war파일 올려줄겁니다.


alt text


해당 war파일을 선택 후 커밋 해줍니다.


alt text


깃 레파지토리 주소를 복사 해줍니다.


cd ~/

git clone https://github.com/trumanjinhwan/myserver.git

cd myserver

cp Project4team_PMS.war /home/trumanjinhwan/apache-tomcat-9.0.99/webapps/

cd ~/apache-tomcat-9.0.99/webapps


alt text


깃 클론 해주고 war파일을 webapps폴더 밑에 복사시켜줍니다.


#서버 켜기
sudo sh /home/trumanjinhwan/apache-tomcat-9.0.99/bin/startup.sh

#서버 끄기
sudo sh /home/trumanjinhwan/apache-tomcat-9.0.99/bin/shutdown.sh


alt text


서버를 켜고 끄기는 명령어는 위의 2개입니다.


alt text


이런식으로 서버 배포에 성공했습니다!