[Amazon Linux] Tomcat 및 Java 설치 방법
- -
Tomcat은 Java로 작성된 JSP를 실행할 수 있는 서버로 OpenJDK 설치가 반드시 필요합니다. 본 포스팅에서는 Amazon Linux에서 Tomcat과 Java를 설치하는 방법을 알아보겠습니다.
설치 환경
설치 환경은 다음과 같습니다.
- AWS AMI : al2023-ami-2023.0.20230329.0-kernel-6.1-x86_64
- Tomcat version 9.0.74
- Java version 11.0.18
Java 설치 및 설정
우선 설치 가능한 Java 패키지가 어떤 것들이 있는지 확인해보겠습니다.
$ sudo yum list java*
Last metadata expiration check: 1 day, 7:55:39 ago on Tue Apr 18 23:00:31 2023.
Installed Packages
java-11-amazon-corretto.x86_64 1:11.0.18+10-1.amzn2023 @amazonlinux
java-11-amazon-corretto-headless.x86_64 1:11.0.18+10-1.amzn2023 @amazonlinux
javapackages-filesystem.noarch 6.0.0-7.amzn2023.0.5 @amazonlinux
Available Packages
java-1.8.0-amazon-corretto.x86_64 1:1.8.0_362.b08-1.amzn2023 amazonlinux
java-1.8.0-amazon-corretto-devel.x86_64 1:1.8.0_362.b08-1.amzn2023 amazonlinux
java-11-amazon-corretto-devel.x86_64 1:11.0.18+10-1.amzn2023 amazonlinux
java-11-amazon-corretto-javadoc.x86_64 1:11.0.18+10-1.amzn2023 amazonlinux
java-11-amazon-corretto-jmods.x86_64 1:11.0.18+10-1.amzn2023 amazonlinux
java-17-amazon-corretto.x86_64 1:17.0.6+10-1.amzn2023.1 amazonlinux
java-17-amazon-corretto-devel.x86_64 1:17.0.6+10-1.amzn2023.1 amazonlinux
java-17-amazon-corretto-headless.x86_64 1:17.0.6+10-1.amzn2023.1 amazonlinux
java-17-amazon-corretto-javadoc.x86_64 1:17.0.6+10-1.amzn2023.1 amazonlinux
java-17-amazon-corretto-jmods.x86_64 1:17.0.6+10-1.amzn2023.1 amazonlinux
java_cup.noarch 1:0.11b-21.amzn2023.0.3 amazonlinux
java_cup-javadoc.noarch 1:0.11b-21.amzn2023.0.3 amazonlinux
java_cup-manual.noarch 1:0.11b-21.amzn2023.0.3 amazonlinux
javacc.noarch 7.0.4-11.amzn2023.0.1 amazonlinux
javacc-demo.noarch 7.0.4-11.amzn2023.0.1 amazonlinux
javacc-javadoc.noarch 7.0.4-11.amzn2023.0.1 amazonlinux
javacc-manual.noarch 7.0.4-11.amzn2023.0.1 amazonlinux
javacc-maven-plugin.noarch 2.6-35.amzn2023.0.1 amazonlinux
javacc-maven-plugin-javadoc.noarch 2.6-35.amzn2023.0.1 amazonlinux
javapackages-bootstrap.noarch 1.5.0^20220105.git9f283b7-3.amzn2023.0.2 amazonlinux
javapackages-generators.noarch 6.0.0-7.amzn2023.0.5 amazonlinux
javapackages-local.noarch 6.0.0-7.amzn2023.0.5 amazonlinux
javapackages-tools.noarch 6.0.0-7.amzn2023.0.5 amazonlinux
javaparser.noarch 3.22.0-3.amzn2023.0.1 amazonlinux
javaparser-javadoc.noarch 3.22.0-3.amzn2023.0.1 amazonlinux
javassist.noarch 3.28.0-4.amzn2023.0.1 amazonlinux
javassist-javadoc.noarch 3.28.0-4.amzn2023.0.1 amazonlinux
여기서는 java 11버전을 설치하였습니다. devel이 붙은 패키지는 Java Compiler인 javac입니다.
$ sudo yum update
$ sudo yum install java-11-amazon-corretto.x86_64
$ sudo yum install java-11-amazon-corretto-devel.x86_64
java와 javac가 잘 설치되었는지 버전을 확인해보겠습니다.
$ java -version
openjdk version "11.0.18" 2023-01-17 LTS
OpenJDK Runtime Environment Corretto-11.0.18.10.1 (build 11.0.18+10-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.18.10.1 (build 11.0.18+10-LTS, mixed mode)
$ javac -version
javac 11.0.18
환경 변수를 추가하기 위해 /etc/profile 파일을 열어 다음 세 가지의 환경 변수를 마지막 줄에 추가하겠습니다.
- JAVA_HOME : java가 실행되는 경로
- PATH : JAVA_HOME/bin 경로
- CLASSPATH : 클래스를 찾기 위한 경로
$ which java
/usr/bin/java
$ readlink -f /usr/bin/java
/usr/lib/jvm/java-11-amazon-corretto.x86_64/bin/java
$ sudo vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-11-amazon-corretto.x86_64/bin/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
$ source /etc/profile
$ echo $JAVA_HOME
/usr/lib/jvm/java-11-amazon-corretto.x86_64/bin/java
여기까지 문제없이 왔다면 Java 설치와 설정이 된 것 입니다.
다음으로 Tomcat 설치 및 설정 부분을 이어나가봅시다.
Tomcat 설치 및 설정
보안적인 측면에서 WAS를 기동하는 계정은 root가 아닌 별도의 계정을 사용하는 것이 좋습니다. 따라서 Tomcat을 실행할 그룹과 계정을 생성하겠습니다. tomcat 계정을 생성할 때 해당 계정의 로그인은 필요없기 때문에 nologin 옵션을 주었습니다.
$ sudo groupadd tomcat
$ sudo useradd -s /bin/nologin -g tomcat tomcat
useradd: Warning: missing or non-executable shell '/bin/nologin'
ec2-user 계정에서 tomcat 디렉토리의 내용에 접근하기 위해서는 다음 명령어로 ec2-user 계정을 tomcat 그룹에 추가해주면 되겟습니다.
$ sudo usermod -aG tomcat ec2-user
$ groups
ec2-user adm wheel systemd-journal
여기서는 Tomcat 9버전을 설치 할 것입니다. Tomcat 공식 홈페이지에서 설치에 필요한 tar.gz 파이너리 파일 주소를 복사하여 다운로드하고, 압축을 풀어 위에서 생성한 tomcat 계정의 홈디렉토리로 이동시켜주겠습니다.
$ wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.74/bin/apache-tomcat-9.0.74.tar.gz
--2023-04-20 07:10:47-- https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.74/bin/apache-tomcat-9.0.74.tar.gz
Resolving dlcdn.apache.org (dlcdn.apache.org)... 151.101.2.132, 2a04:4e42::644
Connecting to dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11642299 (11M) [application/x-gzip]
Saving to: ‘apache-tomcat-9.0.74.tar.gz’
apache-tomcat-9.0.74.tar.gz 100%[=======================================================================================================>] 11.10M --.-KB/s in 0.06s
2023-04-20 07:10:47 (174 MB/s) - ‘apache-tomcat-9.0.74.tar.gz’ saved [11642299/11642299]
$ tar xvfz apache-tomcat-9.0.74.tar.gz
$ sudo mv apache-tomcat-9.0.74 /home/tomcat
그리고 tomcat 홈디렉토리 하위의 모든 파일들에 대한 소유자와 그룹을 tomcat으로 일괄적으로 변경하겠습니다.
$ sudo chgrp -R tomcat /home/tomcat/
$ sudo chown -R tomcat /home/tomcat/
다음으로 tomcat.service 파일을 새로 생성하여 다음과 같이 내용을 추가합시다.
$ sudo vim /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat 9.0 Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/home/tomcat/apache-tomcat-9.0.74/temp/tomcat.pid
Environment=CATALINA_HOME=/home/tomcat/apache-tomcat-9.0.74
Environment=CATALINA_BASE=/home/tomcat/apache-tomcat-9.0.74
Environment='CATALINA_OPTS=-Xms256M -Xmx256M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/home/tomcat/apache-tomcat-9.0.74/bin/startup.sh
ExecStop=/home/tomcat/apache-tomcat-9.0.74/bin/shutdown.sh
#ExecStop=/bin/kill -15 $MAINPID
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
위의 내용으로 서비스 파일을 생성하였으면 데몬 리로드를 하여 서비스를 등록하겠습니다. 그리고 부팅될 때 Tomcat 서비스가 자동으로 Active될 수 있도록 enable하고, Tomcat 서비스를 시작합니다.
$ sudo systemctl daemon-reload
$ sudo systemctl enable tomcat.service
$ sudo systemctl start tomcat.service
Tomcat 서비스가 정상적으로 시작되었다면 기본적으로 8080포트를 사용하기 때문에 localhost의 해당 포트로 curl 명령을 수행해봅시다.
$ curl localhost:8080
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/9.0.74</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
<span id="nav-hosts"><a href="/docs/">Documentation</a></span>
<span id="nav-config"><a href="/docs/config/">Configuration</a></span>
<span id="nav-examples"><a href="/examples/">Examples</a></span>
<span id="nav-wiki"><a href="https://cwiki.apache.org/confluence/display/TOMCAT/">Wiki</a></span>
<span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
<span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
<br class="separator" />
</div>
<div id="asf-box">
<h1>Apache Tomcat/9.0.74</h1>
</div>
<div id="upper" class="curved container">
<div id="congrats" class="curved container">
<h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
</div>
<div id="notice">
<img id="tomcat-logo" src="tomcat.svg" alt="[tomcat logo]" />
<div id="tasks">
<h3>Recommended Reading:</h3>
<h4><a href="/docs/security-howto.html">Security Considerations How-To</a></h4>
<h4><a href="/docs/manager-howto.html">Manager Application How-To</a></h4>
<h4><a href="/docs/cluster-howto.html">Clustering/Session Replication How-To</a></h4>
</div>
</div>
<div id="actions">
<div class="button">
<a class="container shadow" href="/manager/status"><span>Server Status</span></a>
</div>
<div class="button">
<a class="container shadow" href="/manager/html"><span>Manager App</span></a>
</div>
<div class="button">
<a class="container shadow" href="/host-manager/html"><span>Host Manager</span></a>
</div>
</div>
<br class="separator" />
</div>
<div id="middle" class="curved container">
<h3>Developer Quick Start</h3>
<div class="col25">
<div class="container">
<p><a href="/docs/setup.html">Tomcat Setup</a></p>
<p><a href="/docs/appdev/">First Web Application</a></p>
</div>
</div>
<div class="col25">
<div class="container">
<p><a href="/docs/realm-howto.html">Realms & AAA</a></p>
<p><a href="/docs/jndi-datasource-examples-howto.html">JDBC DataSources</a></p>
</div>
</div>
<div class="col25">
<div class="container">
<p><a href="/examples/">Examples</a></p>
</div>
</div>
<div class="col25">
<div class="container">
<p><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Specifications">Servlet Specifications</a></p>
<p><a href="https://cwiki.apache.org/confluence/display/TOMCAT/Tomcat+Versions">Tomcat Versions</a></p>
</div>
</div>
<br class="separator" />
</div>
<div id="lower">
<div id="low-manage" class="">
<div class="curved container">
<h3>Managing Tomcat</h3>
<p>For security, access to the <a href="/manager/html">manager webapp</a> is restricted.
Users are defined in:</p>
<pre>$CATALINA_HOME/conf/tomcat-users.xml</pre>
<p>In Tomcat 9.0 access to the manager application is split between
different users. <a href="/docs/manager-howto.html">Read more...</a></p>
<br />
<h4><a href="/docs/RELEASE-NOTES.txt">Release Notes</a></h4>
<h4><a href="/docs/changelog.html">Changelog</a></h4>
<h4><a href="https://tomcat.apache.org/migration.html">Migration Guide</a></h4>
<h4><a href="https://tomcat.apache.org/security.html">Security Notices</a></h4>
</div>
</div>
<div id="low-docs" class="">
<div class="curved container">
<h3>Documentation</h3>
<h4><a href="/docs/">Tomcat 9.0 Documentation</a></h4>
<h4><a href="/docs/config/">Tomcat 9.0 Configuration</a></h4>
<h4><a href="https://cwiki.apache.org/confluence/display/TOMCAT/">Tomcat Wiki</a></h4>
<p>Find additional important configuration information in:</p>
<pre>$CATALINA_HOME/RUNNING.txt</pre>
<p>Developers may be interested in:</p>
<ul>
<li><a href="https://tomcat.apache.org/bugreport.html">Tomcat 9.0 Bug Database</a></li>
<li><a href="/docs/api/index.html">Tomcat 9.0 JavaDocs</a></li>
<li><a href="https://github.com/apache/tomcat/tree/9.0.x">Tomcat 9.0 Git Repository at GitHub</a></li>
</ul>
</div>
</div>
<div id="low-help" class="">
<div class="curved container">
<h3>Getting Help</h3>
<h4><a href="https://tomcat.apache.org/faq/">FAQ</a> and <a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></h4>
<p>The following mailing lists are available:</p>
<ul>
<li id="list-announce"><strong><a href="https://tomcat.apache.org/lists.html#tomcat-announce">tomcat-announce</a><br />
Important announcements, releases, security vulnerability notifications. (Low volume).</strong>
</li>
<li><a href="https://tomcat.apache.org/lists.html#tomcat-users">tomcat-users</a><br />
User support and discussion
</li>
<li><a href="https://tomcat.apache.org/lists.html#taglibs-user">taglibs-user</a><br />
User support and discussion for <a href="https://tomcat.apache.org/taglibs/">Apache Taglibs</a>
</li>
<li><a href="https://tomcat.apache.org/lists.html#tomcat-dev">tomcat-dev</a><br />
Development mailing list, including commit messages
</li>
</ul>
</div>
</div>
<br class="separator" />
</div>
<div id="footer" class="curved container">
<div class="col20">
<div class="container">
<h4>Other Downloads</h4>
<ul>
<li><a href="https://tomcat.apache.org/download-connectors.cgi">Tomcat Connectors</a></li>
<li><a href="https://tomcat.apache.org/download-native.cgi">Tomcat Native</a></li>
<li><a href="https://tomcat.apache.org/taglibs/">Taglibs</a></li>
<li><a href="/docs/deployer-howto.html">Deployer</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Other Documentation</h4>
<ul>
<li><a href="https://tomcat.apache.org/connectors-doc/">Tomcat Connectors</a></li>
<li><a href="https://tomcat.apache.org/connectors-doc/">mod_jk Documentation</a></li>
<li><a href="https://tomcat.apache.org/native-doc/">Tomcat Native</a></li>
<li><a href="/docs/deployer-howto.html">Deployer</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Get Involved</h4>
<ul>
<li><a href="https://tomcat.apache.org/getinvolved.html">Overview</a></li>
<li><a href="https://tomcat.apache.org/source.html">Source Repositories</a></li>
<li><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/">Wiki</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Miscellaneous</h4>
<ul>
<li><a href="https://tomcat.apache.org/contact.html">Contact</a></li>
<li><a href="https://tomcat.apache.org/legal.html">Legal</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
</ul>
</div>
</div>
<div class="col20">
<div class="container">
<h4>Apache Software Foundation</h4>
<ul>
<li><a href="https://tomcat.apache.org/whoweare.html">Who We Are</a></li>
<li><a href="https://tomcat.apache.org/heritage.html">Heritage</a></li>
<li><a href="https://www.apache.org">Apache Home</a></li>
<li><a href="https://tomcat.apache.org/resources.html">Resources</a></li>
</ul>
</div>
</div>
<br class="separator" />
</div>
<p class="copyright">Copyright ©1999-2023 Apache Software Foundation. All Rights Reserved</p>
</div>
</body>
</html>
위와 같은 출력이 보여지면 Tomcat 페이지가 정상적으로 동작하고 있는 것 입니다!😎
접속이 안될 경우
기본적으로 Public IP를 부여하거나 VPN 연결이 된 상황이 아니라면 외부에서 http://INSTANCE_IP:8080/ 으로 접속이 되지는 않을 것입니다. 접속이 되어야 하는 상황임에도 페이지가 나오지 않는다면 Security Group에서 8080 포트를 열어주었는지 확인해봅시다.
혹은 netstat 명령어를 통해 8080 포트가 열려있는 상태인지 확인해봅시다.
'운영체제 > Linux' 카테고리의 다른 글
[Ubuntu] apt install 중 E: Sub-process /usr/bin/dpkg returned an error code (1) 에러 해결 사례 (1) | 2023.06.06 |
---|---|
[Amazon Linux] Authbind 설치하여 Tomcat 80포트 사용하는 방법 (0) | 2023.04.26 |
[Ubuntu] Node.js 및 npm 간단한 설치 (0) | 2023.04.23 |
[Ubuntu] zsh 및 oh-my-zsh 플러그인 설치와 테마 적용 (0) | 2023.04.21 |
소중한 공감 감사합니다