아파치(Apache)
아파치는 여러가지 프로젝트를 통해 오픈소스를 만들어내는 소프트웨어 단체 이름입니다. 따라서 아파치 서버란 이 단체에서 만든 http웹서버를 의미하는데요. 즉 아파치 서버는 http요청을 처리할 수 있습니다. 클라이언트가 GET, POST, DELETE 같은 메소드를 요청하면 그에 대한 결과값을 돌려줍니다.
톰캣(Tomcat)
톰캣은 WAS(Web Application Server)입니다. 얼핏생각하면 아파치 서버와 같다고 생각할 수도 있지만, 둘은 목적이 서로 다른데요. 아파치 웹 서버는 정적인 데이터를 처리하는 서버이고, WAS는 동적 데이터를 처리하는 서버입니다. 즉, WAS는 DB와 연결되어 데이터를 주고 받는 것입니다.. 웹사이트 주소를 보다보면 html이 아닌 http://~/asdf.jsp 라는 주소를 볼 때가 있는데 웹 애플리케이션 서버는 이 JSP(Java Server Page)를 처리하는 프로그램입니다. 즉 Java로 만들어진 프로그램을 웹서버에서 돌려서 결과값을 클라이언트로 돌려줍니다.
클라이언트 - 웹서버 - WAS - DB
따라서 아파치와 톰캣은 목적이 다르기 때문에 둘을 연동하면 더욱 효과적입니다.
엔진엑스(Nginx)
엔진엑스는 아파치와 같은 웹서버입니다. 엔진엑스는 아파치의 단점을 보완하기 위해 만든 프로그램인데요. 아파치는 C10K Problem이라고 해서 하나의 웹서버에 10,000개의 클라이언트 접속을 커버할 수 있는 문제를 해결하기 위해 가벼움과 높은 성능을 추구하며 만들어졌습니다. 아파치와의 차이점은 아파치는 쓰레드/프로세스 기반 구조이며, 각 요청당 쓰레드 하나가 처리합니다. 한명의 클라이언트 당 하나의 쓰레드가 할당 되므로 사용자가 많아지면 시스템 자원 낭비가 심해진다는 단점이 있습니다. 반면 엔진엑스는 비동기 기반 구조라 더 적은 리소스를 사용해서 요청을 처리할 수 있습니다.
출처 : https://losskatsu.github.io/it-infra/webserver/#%EC%B0%B8%EA%B3%A0%EB%A7%81%ED%81%AC
톰캣
아파치톰캣(Apache Tomcat)은 아파치 소프트웨어 재단에서 개발한서블릿컨테이너(또는 웹 컨테이너)만 있는 웹 애플리케이션 서버이다.톰캣은웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바서버 페이지(JSP)와 자바서블릿이실행할 수 있는 환경을 제공하고 있다.톰캣은관리툴을통해 설정을 변경할 수 있지만, XML 파일을 편집하여 설정할 수도 있다. 그리고,톰캣은HTTP 서버도 자체 내장하기도 한다.
우분투에 터미널을 이용하여 톰캣을 설치하는 방법.
- 버전
- 우분투 18.04
- 톰캣 9
전제 조건
Ubuntu 시스템에 패키지를 설치하려면 sudo 권한이있는 사용자로 로그인 해야 한다.
1 단계 : OpenJDK 설치
Tomcat을 사용하려면 Java를 설치 해야 한다. 우분투 18.04의 기본 Java 개발 및 런타임 인 OpenJDK를 설치한다.
sudo apt update
운영체제에서 사용 가능한 패키지들과 그 버전에 대한 정보를 업데이트하는 명령어다. 설치되어 있는 패키지를 최신으로 업데이트하는 것이 아닌 설치가능한 리스트를 업데이트하는 것이다.
apt-get install 명령을 이용해서 특정 패키지를 설치할 수 없는 경우 최신으로 패키지 리스트를 업데이트해야 할 필요가 있다.
다음 명령어를 통해 OpenJDK 패키지를 설치한다.
sudo apt install default-jdk
2 단계 : Tomcat 사용자 생성
보안을 위해 Tomcat을 루트 사용자로 실행해서는 안된다.(root 권한으로 서버를 실행하면, 각종 config 파일이나 log 파일들의 permission이 모두 root로 바뀌어 버리기 때문에, 일반 계정으로 다시 재 기동하려고 시도하면, config 파일이나 log file들의 permission 이 바뀌어서 파일을 읽거나 쓰는데 실패하게 되고 결국 서버 기동이 불가능한 경우가 있다.)
Tomcat 서비스를 실행할 홈 디렉토리 /opt/tomcat 을 사용하여 새 시스템 사용자 및 그룹을 작성한다.
sudo useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat
3 단계 : Tomcat 설치
Tomcat 9 다운로드 페이지 에서 Binary Distribution 아래에있는 Core
tar.gz 파일에 대한 링크를 복사한다. 여기서는 9.0.45 버전을 이용하였다.
wget 명령어 ('Web Get'의 약어로 웹 상의 파일을 다운로드 받을 때 사용하는 명령어 )을 사용하여 /tmp 디렉토리에 다운로드 한다.
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz -P /tmp
다운로드가 완료되면 Tomcat 아카이브를 추출하여 /opt/tomcat 디렉토리로 이동시킨다.
sudo tar xf /tmp/apache-tomcat-9*.tar.gz -C /opt/tomcat
Tomcat 버전 및 업데이트를 보다 강력하게 제어하려면 Tomcat 설치 디렉토리를 가리키는 latest 라는 기호 링크를 작성하자.
sudo ln -s /opt/tomcat/apache-tomcat-9.0.45 /opt/tomcat/latest
나중에 Tomcat 인스턴스를 업그레이드하려면 최신 버전의 포장을 풀고 심볼릭 링크(ln –s )를 최신 버전을 가리 키도록 변경.
위에서 언급했듯이 Tomcat은 tomcat 사용자로 실행된다. 이 사용자는 tomcat 설치 디렉토리에 액세스 할 수 있어야한다.
다음 명령은 디렉토리 소유권을 사용자 및 그룹 tomcat 으로 변경한다.
sudo chown -RH tomcat: /opt/tomcat/latest
bin 디렉토리 내의 스크립트에는 실행 가능 플래그가 있어야 한다.
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
4 단계 : 시스템 단위 파일 작성
Tomcat을 서비스로 실행하려면 새 단위 파일을 작성 해야 한다.
tomcat.service 라는 파일을 만들어 준다.
sudo nano /etc/systemd/system/tomcat.service
다음 구성을 작성한다.(Java 설치 경로가 다른 경우 JAVA_HOME 값을 수정하자.)
[Unit]
Description=Tomcat 9 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
Ctrl + x 를 누른후 y를 입력하여 저장후 나온다
파일을 저장하고 닫은 다음 새 단위 파일을 만들었음을 systemd에 알립니다.
sudo systemctl daemon-reload
다음 명령어를 통해 Tomcat 실행.
sudo systemctl start tomcat
다음 명령으로 서비스 상태를 확인.
sudo systemctl status tomcat
오류가 없으면 부팅시 Tomcat 서비스가 자동으로 시작 되도록 설정.
sudo systemctl enable tomcat
Ifconfig , 또는 ip addr 명령어를 통해 네트워크 확인
해당 네트워크 주소의 톰캣 포트인 8080포트에 접속
성공~
기타 팁 : 톰캣 소개 및 폴더구성, 톰캣 구조
'Server' 카테고리의 다른 글
[Linux] tmux (0) | 2021.11.02 |
---|---|
리눅스 명령어 (0) | 2021.09.14 |
AWS 서버 환경을 만들어보자 (3) | 2021.07.10 |
VM bridge 설정 (0) | 2021.06.20 |
가상머신 설치 및 우분투 설치 (0) | 2021.06.20 |
댓글