AWS

[AWS] EC2에 Apache Tomcat 설치하기

hanrabong 2022. 3. 23. 16:18

Java web service를 가능하게 해주는 Apache Tomcat을 EC2 amazon linux 2에 설치를 해보려고 합니다. 

EC2에 생성을 하기에 AWS 계정이 필요합니다.

 

 

[실습] EC2에 Apache Tomcat 설치

 

1. EC2 생성

 Amazon Linux2 AMI를 사용하는 EC2 하나를 생성해줍니다. 접근성이 좋게 public subnet에 ipv4를 활성화해서 만들어 줍니다.

EC2 서버를 만들었으면 ssh나 putty나 ssm을 이용하여 해당 서버 안으로 접속해 줍니다.

 

 

2. Java 설치

 Apache Tomcate을 설치하기에 앞서 EC2에 Java를 설치해 줍니다. Amazon linux2 EC2에서 Java는 amazon linux extras를 이용하여 설치 가능합니다.

sudo yum -y update
sudo amazon-linux-extras install java-openjdk11

 설치 후에 다음과 같은 명령어로 확인해 볼 수 있습니다.

Java version 확인

 

3. tomcat user 와 group 생성

 tomcat을 설치하기 앞서 user와 group을 만들어줄려고 합니다. Group을 만드는 목표는 그룹 내 사용자 간에 공유할 수 있는 주어진 리소스에 대해서 읽기, 쓰기 또는 실행 권한과 같은 권한 집합을 정의하는 것입니다. 쉽게 생각해서 같은 권한을 주고 싶은 사용자들을 group으로 묶는다고 생각하면 됩니다.

 여기서는 tomcat에 대한 권한을 부여하고자 사용자와 그룹을 만들어 줍니다. User와 group은 다음과 같은 명령어를 통해 만들 수 있습니다.

sudo groupadd --system tomcat
sudo useradd -d /usr/share/tomcat -r -s /bin/false -g tomcat tomcat

 groupadd command로 group을 만들어 줍니다. --system option을 통해서 시스템 계정 그룹을 생성해줍니다. 시스템 계정 그룹은 /etc/login.defs에서 지정한 GID_MIN과 GID_MAX 사이 범위의 숫자가 아닌 SYS_GID_MIN 과 SYS_GID_MAX 사이 범위 숫자의 GID, group id를 부여합니다. 쉽게 말해 더 낮은 숫자의 GID를 부여해줍니다. 

 useradd command로 user를 만들 수 있습니다. 위의 명령어를 보면 많은 옵션들이 있습니다. -d 옵션은 user의 home directory를 정해주는 옵션입니다.  -r 옵션은 group을 만들 때 --system과 동일합니다. 더 낮은 숫자의 UID를 부여해줍니다. -s 옵션은 사용자 로그인 shell을 지정해주는 옵션입니다. -g 옵션은 그룹을 지정해주는 옵션입니다. tomcat이라는 group을 지정해주기위해 tomcat이라고 입력하였습니다. 맨 마지막에 있는 tomcat은 사용자 이름을 설정해 준 것입니다.

 

 

위의 설정을 다 해주었으면 확인하는 명령어를 이용하여 잘 설정을 해주었는지 확인해 봅니다.

tomcat user와 gorup 확인

 

위의 메세지에서 나오는 정보를 잠깐 설명해 보겠습니다.

tomcat:x:995:993::/usr/share/tomcat:/bin/false

":"를 기준으로 총 7개 필드가 있습니다.

  • 첫 번째 필드는 사용자 이름을 가리킵니다.
  • 두 번째 필드는 암호화된 암호를 의미하고 x는 암호가 /etc/shaow 파일에 저장됨을 의미합니다.
  • 세 번째는 UID, 사용자 ID번호를 말합니다.
  • 네 번째는 GID, 사용자의 그룹 ID 번호를 말합니다.
  • 다섯 번째는 사용자의 전체 이름입니다.
  • 여섯번째는 사용자 홈 디렉토리를 말합니다.
  • 7번째는 로그인셸을 말합니다. 

 

4. Tomcat 설치

 User와 group을 만들어줬으면 이제 tomcat을 설치해 보겠습니다.

 

 

다음과 같은 명령어를 입력해 설치하겠습니다. VER 안에 9.0.39대신에 원하는 tomcat 버전이 있으면 그 버전을 명시해 주면 됩니다.

sudo yum -y install wget
export VER="9.0.39"
wget https://archive.apache.org/dist/tomcat/tomcat-9/v${VER}/bin/apache-tomcat-${VER}.tar.gz

 

파일을 생성했으면 이제 그 파일의 압축을 풀어주겠습니다. 압축 파일을 현재 폴더에 풀지 않고 -C 옵션을 주어서 압축을 풀 경로를 설정해주겠습니다.

sudo tar xvf apache-tomcat-${VER}.tar.gz -C /usr/share/

 

/usr/share 위치에 apache-tomcat-9.0.39로 압축이 풀린 폴더를 확인할 수 있습니다. 이제 새로운 폴더를 만들어서 apache tomcat 폴더와 symlonk를 걸겠습니다.

sudo ln -s /usr/share/apache-tomcat-$VER/ /usr/share/tomcat

 

symlink를 걸고 /usr/share 위치를 확인해보면 tomcat 파일이 생성된 것을 확인할 수 있습니다.

 

이제 이 파일에 대한 권한을 앞에서 만들어 준 user와 group으로 바꿔주겠습니다.

sudo chown -R tomcat:tomcat /usr/share/tomcat
sudo chown -R tomcat:tomcat /usr/share/apache-tomcat-$VER/

 

 다음과 같은 명령어를 통해 권한이 바뀌었는지 link가 연결되었는지 확인할 수 있습니다.

ls -l

 

이렇게 파일의 소유자와 소유그룹이 tomcat으로 되어있고 link가 걸려있는걸 확인할 수 있습니다.

 

5. Tomcat service 파일 생성

 

systemd에 service를 등록하기위해 service 파일을 만들려고 합니다.

/etc/systemd/system/ 경로 안에 tomcat.service의 이름으로 다음과 같이 파일을 만들어 줍니다.

[Unit]
Description=Tomcat Server
After=syslog.target network.target

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment='JAVA_OPTS=-Djava.awt.headless=true'
Environment=CATALINA_HOME=/usr/share/tomcat
Environment=CATALINA_BASE=/usr/share/tomcat
Environment=CATALINA_PID=/usr/share/tomcat/temp/tomcat.pid
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M'
ExecStart=/usr/share/tomcat/bin/catalina.sh start
ExecStop=/usr/share/tomcat/bin/catalina.sh stop

[Install]
WantedBy=multi-user.target

 

 

파일을 만든 후 다음과 같은 명령어로 tomcat service를 실행합니다.

sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat

 

맨 마지막 enable 명령어로 서버 부팅시 자동으로 시작 가능하게 해줍니다.

 

 

위의 명령어를 다 입력했으면 서버가 시작되었는지 다음 명령어를 이용해서 확인을 합니다.

sudo systemctl status tomcat

 

tomcat status

 active(running)이라고 보이면 서버가 실행이 되고 있는 것입니다.

 

 

6. Tomcat web interface 접속

/etc/share/tomcat/conf/server.xml 에 톰캣 Service, Connector, Host 정보 등 중요한 정보 설정을 할 수 있습니다.

 

server.xml

 

 위의 정보를 통해서 8080번 포트에 연결되어 있음을 알 수 있습니다. 원하는 포트가 있을 경우 바꿔주면 됩니다. 바꿔줄 경우 tomcat을 재시작 해줘야 합니다.

 

 

이제 웹에서 직접 접속해 확인해 보겠습니다. 접속에 앞서 8080번 포트의 보안그룹을 열어 주겠습니다. 

EC2 보안그룹

 

http://<EC2-ip:8080> 으로 접속하면 다음 페이지를 볼 수 있습니다.

tomcat page

 

 

 

※ 혼자 찾아보고 공부한 내용이라 잘못되었거나 궁금한거 있으면 언제든 댓글 달아주세요

 

 

 

참고자료

https://techviewleo.com/install-tomcat-on-amazon-linux/

https://jjeongil.tistory.com/1307

 

Linux : 사용자를 나열하는 방법, 예제, 명령어

Linux 시스템의 모든 사용자를 나열하거나 시스템의 사용자 수를 세어 본 적이 있습니까? 사용자를 생성하고, 사용자를 삭제하고, 로그인한 사용자를 나열하는 명령이 있지만 Linux의 모든 사용자

jjeongil.tistory.com

https://habiis.tistory.com/104

 

[LINUX] 리눅스 계정의 nologin, false 정리

리눅스를 사용해보셨다면 가장 먼저 접하는게 계정이겠죠? root 권한에 대해 부여받을 것이고, 패스워드 설정이나 사용계정 생성 등 계정을 먼저 접하게 될거에요 생성된 계정들은 /etc/passwd 파일

habiis.tistory.com