Kwon's Study Blog !
[Linux] WSL2 Ubuntu 환경에서 아파치, 톰캣 설치 및 실행 본문

현재 저의 컴퓨터 OS는 window10입니다.
이전 Docker를 공부할 때 윈도우에서 리눅스 터미널을 사용할 수 있게 WSL2를 설치했었습니다.
이렇게 하면 Docker Toolbox없이 리눅스 유저가 도커를 설치하는 것과 동일하게 설치 할 수 있습니다.
(docker volume이나 몇몇 명령어들이 윈도우 cmd, powershell 에서 안먹혀서 ...)
윈도우 환경에서 리눅스 터미널을 사용할 수 있게 하는 WSL2을 설치하는 방법은
https://www.44bits.io/ko/post/wsl2-install-and-basic-usage
WSL2(Windows Subsystem for Linux 2) 설치 및 사용 방법
지난 5월 윈도우10의 대규모 업데이트가 있었습니다. 이번 업데이트에는 WSL2 정식 릴리스가 포함되어있습니다. WSL은 경략 가상화 기술을 통해 윈도우에서 리눅스 배포판을 사용할 수 있게 도와
www.44bits.io
여기에 자세히 나와 있습니다.
과정이 그리 어렵지 않기 때문에 천천히 따라하다 보면
대략 중반 까지 따라하면 우분투까지 설치하고 WSL2에서 우분투를 시작할 수 있습니다.
이미 WSL2 우분투 환경에서 아파치와 톰캣을 설치해서 실행한 경험이 있기에
우분투를 삭제하고 다시 해보겠습니다.
이 글을 쓰는 이유는 톰캣을 설치하는 과정에서 많은 문제들이 발생했기에
어떻게 해결했는지 그 과정을 위주로 작성해 보겠습니다.
물론 초보자이기 때문에 많은 길을 돌아갔던건지 몰릅니다.
음 그냥 vmware 깔아서 할껄 그랬나 싶기도 합니다.
일단 Microsoft store에서 우분투를 설치하고
window terminal 환경에서 열면

요로 코롬 나옵니다.
username 과 passwd를 설정해 주시고

위처럼 초기 우분투 환경이 셋팅이 됐습니다.
apt vs apt-get
같은 패키지라도 어디서는 apt로 설치하고 어디서는 apt-get 으로 설치합니다.
man apt
man apt-get
위 명령어로 메뉴얼을 확인할 수 있고
결국 apt 가 apt-get보다 더 상위 레벨의 CLI 패키지 관리 시스템이며
apt-get으로 사용할 수 있는 모든 명령어를 apt로 대체 가능하다는 것을 알 수 있습니다.
기존에 apt-cache, apt-get 이렇게 나누어 사용하던 것들을 apt 하나로 통합된 것으로 보면 될 것 같습니다.
솔직히 큰 차이는 잘 모르겠고 Ubuntu 에서 CLI 환경으로 작업을 할 때는 apt-get보다 apt를 사용하겠습니다.
apt update
새로운 버전의 패키지를 Ubuntu Repository로 부터 패키지 리스트를 업데이트 합니다.
update 하는 당시 이용할 수 있는 패키지들은 /etc/apt/sources.list로 patch 됩니다.
sudo apt update
apt dist-upgrade
apt upgrade와 다른 점은 좀 더 똑똑한 upgrade를 진행합니다.
현재 서버에서 참조하지 않거나 더이상 사용하지 않는 패키지들은 삭제해 줍니다.
sudo apt dist-upgrade
JAVA 설치
현재 우분투한테 자바 컴파일러 있는지 물어봅시다.
javac -version

현재 없다고 하고 있으며 설치할 수 있는 몇몇 버전들을 추천해줍니다.
저는 openjdk-11-jdk-headless 버전을 받아 보겠습니다.
headless 란 GUI(Graphic User Interface) 환경에 필요한 정보들을 제외한 버전을 말합니다.
저는 CUI(Character User Interface) 환경에서 사용할 것이기 때문에 좀 더 가벼운 이 버전을 다운받겠습니다.
sudo apt install openjdk-11-jdk-headless
자바를 설치하고 버전을 다시 확인해 보겠습니다.

JAVA_HOME 환경변수 설정
JAVA 설치가 완료됐다면, JAVA_HOME 설정을 해줍시다.
환경변수는 운영체제가 참조하는 변수로
이를 설정해주는 이유는 어디서든 해당 파일에 접근하기 위해서입니다.
일단 자바 컴파일러의 설치 위치를 확인합니다.
which javac
하면 아마 /usr/bin/javac 라고 나올 것 입니다.
하지만 실제로 링크가 걸려있는 곳을 타고가다 보면 실제 경로를 확인할 수 있습니다.
아래 그림처럼 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac

ll 명령어는 ls -al 와 같습니다. -a (숨김 파일도 찾아 보여줌) -l (파일에대한 자세한 정보 표시)
그럼 여기서 bin아래를 제외한 /usr/lib/jvm/java-11-openjdk-amd64 를 JAVA_HOME으로 설정해야 합니다.
sudo vi /etc/profile
/etc/profile 이 파일은 경로 환경변수(path), 사용자 환경변수(user), 로그인 사용자(username), 사용자 메일박스(mail), 호스트 이름(hostname), 히스토리(history) 등의 다양한 환경 변수를 정의합니다.
shift + g 로 파일 맨 아래로 내려간 후
esc 키를 누르고 i를 누른 후 입력모드로 들어갑니다. 그 후 맨아래에
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 를 추가작성하고

esc 키를 누르고 :wq 엔터키를 누르면 저장하고 나갑니다.
수정한 파일을 바로 적용해 줍니다.
source /etc/profile
source 명령어는 스크립트 파일을 수정한 후에 수정된 값을 바로 적용하기 위해 사용되는 명령어입니다.

echo 명령어로 JAVA_HOME 변수가 정상적으로 설정이 된 것을 확인할 수 있습니다.
일단 기본적인 준비는 끝난 것 같구 아파치를 설치해 보겠습니다. !
apache2 설치
// apache2 설치
sudo apt install apache2
// apache2 시작
sudo service apache2 start
// apache2 서비스 확인
service apache2 status
// apache2 재시작
sudo service apache2 restart
// apache2 종료
sudo service apache2 stop

http://[사용자IP]:80 or localhost:80 으로 들어가보면

위 페이지가 나오면 apache2가 정상적으로 실행되고 있는 것 입니다.

ip 확인은 ifconfig 명령어로 확인하면 됩니다.
이제 톰캣을 설치하고 실행해 보겠습니다.
tomcat9 설치
// tomcat9 설치
sudo apt install tomcat9
// tomcat9 시작
sudo service tomcat9 start
톰캣을 시작하면

위 사진처럼 unrecognized service라 합니다...
이는 WSL2 환경에서 apt로 톰캣을 다운받으면 이런 경우가 많다고 합니다.
https://stackoverflow.com/questions/63312469/installing-tomcat-9-on-wsl
위 사이트를 참고하면
tomcat9 패키지가 다운로드 중에 깨진 것 같다고
직접 apache-tomcat-9.0.62-windows-x64.zip 파일을 다운받고
실제 Ubuntu 폴더 \\wsl$\Ubuntu\usr\share\tomcat9\bin 로 들어가 넣어주라 하는데 음...
이 방법으로는 끝내 권한 문제 때문에 결국 해결을 하지 못했습니다.
그래서 다른 방법으로
https://linuxize.com/post/how-to-install-tomcat-9-on-ubuntu-20-04/#disqus_thread
위 사이트를 참고하여
차근차근 하나씩 해보겠습니다.
- 시스템 사용자 생성
루트 사용자로 Tomcat을 실행하는 것은 보안 위험이 될 수 있습니다.
Tomcat 서비스를 실행할 홈 디렉토리가 있는 새 시스템 사용자 및 그룹을 생성합니다.
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
useradd : 사용자 계정 생성
-m : 사용자를 생성할 때 홈 디렉터리를 생성해 주는 옵션
-d : 홈 디렉토리를 지정
-s : 사용자 생성 시 사용자가 사용할 셸을 지정한다
생성된 계정은 cat /etc/passwd 로 볼 수 있습니다.
- 톰캣 다운로드
Tomcat 바이너리 배포판은 Tomcat 다운로드 페이지 에서 다운로드할 수 있습니다 .
최신 버전을 확인하고 wget을 이용해서 다운로드 하겠습니다.
제가 확인한 최신버전은 9.0.62 입니다.
VERSION=9.0.62
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp


다운로드가 완료되면 /opt/tomcat 에 압축을 풉니다.
sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/
tar : tar , tar.gz 로 압축하거나 풀때 사용
-x : tar 압축을 품
-f : 파일 이름을 지정
-C : 대상 디렉토리 지정

Tomcat 은 보안 패치 및 새로운 기능으로 정기적으로 업데이트 됩니다.
버전과 업데이트를 더 잘 제어하기 위해 Tomcat 설치 디렉토리를 가리키는 심볼릭 링크를 만들어 봅시다.
sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest
ln : 단순히 원본파일을 가리키도록 링크만 시켜둔 것, 링크된 파일로 원본파일 실행이 가능(바로가기랑 같은 개념)
-s : 심볼릭 링크파일을 생성

이전에 생성된 시스템 사용자(tomcat)는 tomcat 설치 디렉토리에 엑세스할 수 있어야 합니다.
디렉토리의 소유권을 사용자 및 그룹 tomcat으로 변경합니다.
// /opt/tomcat 및 하위 디렉토리, 파일들의 소유권을 tomcat에게 변경
sudo chown -R tomcat: /opt/tomcat
chown : 파일 소유자 및 그룹을 변경
-R : 디렉토리 아래의 모든 파일 및 하위 디렉토리 소유권 변경
그리고 tomcat/bin 디렉토리 에 있는 쉘 스크립트는 실행 가능 해야 합니다.
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
이는 tomcat 인스턴스를 시작, 중지, 관리하는데 사용됩니다.
- systemD 단위 파일 생성
셀 스크립트를 사용하여 tomcat 서버를 시작 및 중지하는 대신 서비스로 실행되도록 설정합니다.
sudo nano /etc/systemd/system/tomcat.service
편집기에 다음 구성을 붙여넣습니다.
[Unit]
Description=Tomcat 9 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
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 + o 로 저장하고
ctrl + x 로 나갑니다.

tomcat.service가 생성된 것을 볼 수 있고
시스템에 새 단위 파일이 있음을 알립니다.
sudo systemctl daemon-reload
근데 아마 WSL2환경에서
systemctl 명령어 사용시
System has not been booted with systemd as init system (PID 1). Can't operate 라고 뜰겁니다.
이는 wsl에서 systemd를 지원하지 않기 때문에 이럴 땐 systemd를 enable 해줘야 합니다.
https://intrepidgeeks.com/tutorial/using-systemctl-in-wsl-2 여길 참고하여
sudo apt install git
// ksoon1985 : 사용자 계정
cd /home/ksoon1985
git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh
# wsl 재시작 후
systemctl
위 과정을 거치면 systemctl 이 활성화 됩니다.
그리고 tomcat 서비스를 활성화하고 시작합니다.
sudo systemctl enable --now tomcat

서비스 상태를 확인합니다.
sudo systemctl status tomcat

localhost:8080 으로 들어가보면

톰캣이 잘 구동되는 것을 확인할 수 있습니다.
아래처럼 tomcat을 시작, 중지, 재시작 할 수 있습니다.
sudo systemctl start tomcat
sudo systemctl stoptomcat
sudo systemctl restart tomcat
방화벽 구성
서버가 만약 방화벽으로 보호 돼있고 로컬 네트워크 외부에서 tomcat에 엑세스 하려면 포트를 열어야 합니다.
sudo ufw allow 8080/tcp
일반적으로 프로덕션 환경에선 tomcat을 실행할 땐 로드 밸런서 또는 역방향 프록시를 사용해야 합니다.
내부 네트워크에서만 8080 포트에 대한 엑세스를 허용하는 것이 가장 좋습니다. !
일단 이렇게 WSL2 Ubuntu 리눅스 환경에서
자바를 설치하고 환경 변수를 지정하고
아파치를 설치하고 실행하고
톰캣을 설치하고 실행해 봤습니다.
뭔가 많은 삽질을 한 것 같은데, 기록을 남기고 싶어서 이렇게 작성해 보았고
나중엔 vmware 위에서도 한번 위와 같은 과정을 해 볼 예정입니다.
다음 글엔 아파치와 톰캣을 연동하고 Mysql 도 연동할 수 있다면 연동해 보겠습니다.
참고로 제가 포스팅한 글은 올바른? 정보를 제공한다기 보단
제가 나중에 다시 볼려고 쓰는 글 임을 알려드리고...
물론 훈수는 환영입니다.
문제시 비공개로 전환하겠습니다.
reference
wsl2 에서 systemctl 사용하기
sudo apt install git cd /home/guswns git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git cd ubuntu-wsl2-systemd-script/ bash ubuntu-wsl2-systemd-script.sh systemctl wsl 시작할 때마다 systemctl 활성화 하기 cp /home/guswns/ubunt
intrepidgeeks.com
https://linuxize.com/post/how-to-install-tomcat-9-on-ubuntu-20-04/#disqus_thread
[Ubuntu] 우분투 리눅스 서버 구축하기(2/2)
Contents 1. JAVA 설치 2. JAVA 환경변수 설정 3. IP 방화벽 오픈 4. Apache2 설치 5. Tomcat 설치 6. Apache2 - Tomcat 연동 [Linux] 우분투 리눅스 서버 구축, 개발 환경 설정(1/2) 1편에 이어서 리..
goyunji.tistory.com
'Linux' 카테고리의 다른 글
[Linux] WSL2 Ubuntu 환경에서 아파치, 톰캣 연동 (0) | 2022.04.15 |
---|---|
[Linux] 기본 명령어 및 개념 (0) | 2022.04.12 |