본문 바로가기

Start

[리눅스 서버]Apache web, Tomcat was

반응형

웹서버에 아파치 설치하기!!! 처음해봅니다!!


리눅스...잘쓰지도 않고 명령어도 몇개 모르는데;;

톰캣 로그보고 strat, stop 할때나 가끔썻지;;;





제일 먼저 리눅스도 리눅스 인데 정확히 어떤건지 알아야하니깐!


[리눅스 종류 설명작성]


* 리눅스 버전 확인 명령어


# cat /etc/redhat-release


결과 : CentOS Linux release 7.5/1804 (Core)


혹시 모를 확인들

* 하드 용량 확인

# df -h


*메모리 용량 확인

# free -m


확인을 하고 아파치 설치!



먼저 아파치 설치가 이미 되어 있을수도 있으니 확인!

*아파치 설치 확인

# yum list installed | grep httpd


(여기서 grep 명령어는 많이 사용된다. ex)# ps -ef | grep java, ls -al | grep tomcat)


설치가 되어 있지 않다면


*아파치 설치

# yum install -y httpd


[yum 설명작성]

리눅스 yum을 통해 왠만한 것들은 모두 다운로드, 설치가 가능하다. 직접 소스를 컴파일하는 방법도 있지만 버그나 취약점도 있어 yum을 통해 설치를 권장하고 있다.


설치가 다 되었다면 /etc/httpd 폴더가 생성되어 있을 것이다.


폴더 안에는 설정파일이 들어있는 conf, 로그파일이 들어있는 logs, 아파치 모듈관련 modules가 있다.


설치완료 후 방화벽을 설정해준다.



*방화벽 설정

#firewall-cmd --permanent --add-service=http

#firewall-cmd --permanent --add-service=https

#firewall-cmd --reload


*부팅시 실행

#systemctl enable httpd


*아파치 시작

#systemctl start httpd



http://당신의아이피 로 접근해서 test페이지가 뜨면 설치완료!!!


시작말고도 아파치 중지와 재시작 하는 법도 알고 있어야겠죠!

*아파치 중지

#systemctl stop httpd


*아파치 재시작

#systemctl restart httpd









아파치와 톰캣 연동!


위에 설치한 apache와 다른 서버에 다른사람이 설치해놓은 tomcat을 연동시키는 과정을 작성했다.



[mod_jk설치]


Selinux의 보안관련 설정은 대부분 Selinux을 안쓰고 있기에 패스!



mod_jk설치후 아파치 설정



httpd.conf파일을 열고 


LoadModule jk_module /etc/httpd/modules/mod_jk.so

<Virtualhost *:80>

JkMount /* tomcat

</Virtualhost>


추가해 준다.


*아파치 httpd.conf 수정


# vi /etc/httpd/conf/httpd.conf

/ 누르고 (vi에서 /은 검색) LoadModule 입력하고 엔터치면 검색된다

해당되는 곳에 커서를 이동하고 i를 누르면 수정 가능

입력이 끝나면 Ctrl+c 를 누르면 입력모드를 빠져나오게 되고 :을 누르고 

종료는 q

저장은 w

저장 후 종료는 wq

강제 종료는 q!


이렇게 httpd.conf를 수정해주고


다음은 mod_jk.conf를 작성하여 생성해야한다.




/etc/httpd/conf.modules.d에


<IfModule mod_jk.c>

JkWorkersFile conf/workers.properties

JkShmFile run/mod_jk.shm

JkLogFile logs/mod_jk.log

JkLogLevel info

JkLogStampFormat "[%y %m %d %H:%M:%S] "

</IfModule>


내용의 mod_jk.conf를 생성


#vi /etc/httpd/conf.modules.d


i를 누르고 작성 후 저장하면 파일이 생성된다.


이제 연결할 톰캣의 서버 정보를 입력하면 된다.


#vi /etc/httpd/conf/workers.properties


worker.list=tomcat

worker.tomcat.port=8009

worker.tomcat.host=localhost

worker.tomcat.type=ajp13

worker.tomcat.lbfactor=1



위에 8009는 연결할 tomcat의 server.xml에 보면 protocol 이 AJP인 부분이 있다. 그 태그안에 port번호를 사용하면 된다.


*tomcat의 server.xml 내용중 

<Connector port="8009" protocol="AJP/1.3" redirectPort="8209">


위에 worker.tomcat.host=localhost 이부분의 localhost는 다른 서버의 tomat을 연결할시 해당서버의 ip를 써주면 된다. 

예) worker.tomcat.host=111.222.100.111


마지막으로 아파치와 톰캣의 Document위치를 동일시 하면된다.

아파치의 httpd.conf에서 DocumentRoot를 톰캣의 server.xml 에 docBase경로 + /webapps/ROOT 한것을 넣어준다.


<Directory "docBase경로 + /webapps/ROOT">

AllowOverride none

Require all granted

</Directory>


그리고 위 내용을 아파치 httpd.conf에 추가해주면 된다.







*톰캣 소스 설정


tomcat의 server.xml 수정


<Host name="localhost" appBase="/apps//webapps" unpackWARs="true" autoDeploy="true">

<Context path="" docBase="war파일" reloadable="true"/>

</Host>



*톰캣 인스턴스 분리해서 사용하기


같은 서버에 톰캣을 설치 후 프로젝트 두개를 사용해야 할때 사용하기 위해 진행해 보았다.



처음에는 하나의 엔진으로 start, stop 을 사용하여 프로젝트 두개가 동시에 죽었다 살았다 하도록 설정을 하였다.


tomcat의 server.xml 에서 <Server> 안에 <Service>를 두개 만들어서 port와 <Host>를 추가해서 사용하였다.


<Service name="Catalina">

<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8043"/>

<Connector port="8010" protocol="AJP/1.3" redirectPort="8043"/>

<Engine name="Catalina" defaultHost="testService">

<Host name="testService" appBase="webapps" unpackWARs="true" autoDeploy="true">

<Context Path="" docBase="/app/testApp/webapps" reloadable="true"/>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="local_host_access_log" suffix=".txt" />

</Host>

</Engine>

</Service>


이부분을 <Server> 안에 넣어서 사용하였다.


하지만 로그도 그렇고 소스 수정 후 재시작도 그렇고 해서 완전 분리를 시도하기로 했다.



일단 새로 폴더를 재구성 하여야 한다.


원하는 경로에 폴더를 하나 생성하고 기존 tomcat 안에 엔진에 해당되는 bin, lib 폴더를 복사 해주고 설정관련인 conf,temp 폴더를 복사해준다.


새로만든 폴더가 /app/testApp 이라는 경로의 폴더라고 한다면

#cp -r /app/tomcat/bin /app/testApp

#cp -r /app/tomcat/lib /app/testApp

#cp -r /app/tomcat/conf /app/testApp

#cp -r /app/tomcat/temp /app/testApp


그리고 logs와 webapps,work는 폴더를 생성해준다.

#mkdir logs

#mkdir webapps

#mkdir work


이렇게 하면 일단 디렉토리 구성은 끝이다.


구성이 끝났다면 기존쓰고있던 port와 프로젝트 경로등을 새로 생성된 /app/testApp/conf/server.xml 에 수정을 해준다.


그리고 war파일을 /app/testApp/webapps 에 넣어준다


그럼 일단 준비는 끝!


하지만 제일 중요한게 남았다.


보통 start, stop을 할때 

# systemctl start tomcat


이런식으로 해서 해당 /app/testApp/bin/start.sh를 실행한다.


그럼 새로만든 인스턴스를 실행하고 싶을때 /app/testApp/bin/start.sh 이것을 연결해줄 만한 것을 찾아야 될거 같다고 생각이 들었다.



찾아본 결과 systemd라는 것을 등록해 줘야한다고 한다.

/etc/systemd/system 안에 *.system 이라는 파일을 생성해야한다.


하지만 /etc/systemd/system 안에 여러폴더로 나누어져 관리되는 경우도 있으니 열어보길 바람.


나같은 경우 /etc/systemd/system/multi-user.target.wants 경로에 *.service 파일들이 많이 있다.


하지만 이 경로에서 ls -al 명령어를 쳐보면 심볼릭링크 파일이라는 것을 알 수 있고 진짜 파일의 경로를 알수 있다.


진짜 파일의 경로가 보인다는건 /etc/systemd/system/multi-user.target.wants 에 추가가 아닌 진짜파일로 보이는 

/usr/lib/systemd/system에 생성을 해주고 똑같이 심볼릭링크 파일을 생성해 주는게 맞다고 생각이 들었다.


그러므로 여기에 생성

#vi /usr/lib/systemd/system/testApp.service 으로 만들고 


작성!

------------------------------------------------------------------------------------------------------

# Systemd unit file for tomcat

[Unit]

Description=Apache Tomcat Web Application Container

After=syslog.target network.target


[Service]

Type=forking


Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64

Environment=CATALINA_PID=/app/testApp/temp/tomcat.pid

Environment=CATALINA_HOME=/app/testApp

Environment=CATALINA_BASE=/app/testApp

Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'

Environment=JAVA_OPTS=-Djava.security.egd=file:///dev/urandom


ExecStart=/app/testApp/bin/startup.sh

ExecStop=/app/testApp/bin/shutdown.sh


User=tomcat_testApp

Group=tomcat_testApp

UMask=0007

RestartSec=10

Restart=always


[Install]

WantedBy=multi-user.target

------------------------------------------------------------------------------------------------------


이렇게 작성해주고 처음갔던 경로에 심볼릭링크파일 생성


# ln -s /usr/lib/systemd/system/testApp.service /etc/systemd/system/multi-user.target.wants/tomcat_testApp.service


그럼 끝!!!!


로그를 하나 띄우고 이제 start 해보자!


#systemctl start tomcat_testApp











--------------------------------------------------------------------------------------------------------

톰캣 404에러시 정보 노출 제거


톰캣이 설치된 곳에 ServerInfo.properties 를 수정해주는 방법이 많이 있다.


하지만 보안상 여러파일을 지우다보면 해당 파일이 지워져 있을수가 있다.


이럴땐 catalina.jar를 다시 풀어서 수정하고 리팩토링 해야하는데... 꼭 이방법으로 해야되는게 아니라면


톰캣에 server.xml을 수정하는 방법이 나을 거 같다.


<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false"/>


윗줄 Valve태그를 Host태그안에 넣어주도록 하자!






반응형