linux

Apache/ Tomcat/ Openssl 연동

noAb 2024. 6. 28. 12:10

아파치 수동설치

 

httpd설치

아래 사이트에서 최신 tar.gz압축 파일 설치

http://mirror.apache-kr.org//httpd/

wget명령어로 설치

wget http://mirror.apache-kr.org//httpd/httpd-2.4.59.tar.gz 

압축해제

tar xvfz httpd-2.4.59.tar.gz 

 

apr설치

아래 사이트에서 최신 tar.gz압축 파일 설치

http://mirror.apache-kr.org/apache/apr/

wget명령어로 설치

wget http://mirror.apache-kr.org/apr/apr-1.7.4.tar.gz

압축해제

tar xvfz apr-1.7.4.tar.gz

 

apr-util설치

아래 사이트에서 최신 tar.gz압축 파일 설치

http://apache.mirror.cdnetworks.com/apr/

wget명령어로 설치

wget http://apache.mirror.cdnetworks.com/apr/apr-util-1.6.3.tar.gz

압축해제

tar xvfz apr-util-1.6.3.tar.gz

 

pcre설치

아래 사이트에서 최신 tar.gz압축 파일 설치

https://sourceforge.net/projects/pcre/files/pcre

wget명령어로 설치

wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz

압축해제

tar xvfz pcre-8.45.tar.gz

 

중간 점검

4개 압축파일과 압축해제된 파일

 

apr 설정

apr설치된 폴더로 이동 후

./configure --prefix=/engine/apacheModules/apr-1.7.4
make
make install

(make가 안될시 yum으로 make설치)

 

apr-util 설정

apr-util 설치된 폴더로 이동 후

./configure --prefix=/engine/apacheModules/apr-util-1.6.3 --with-apr=/engine/apacheModules/apr-1.7.4
make
make install

( #include <expat.h> 문제일 경우 yum install expat-devel 설치 )

 

pcre 설정

pcre 설치된 폴더로 이동 후

./configure --prefix=/engine/apacheModules/apr-util-1.6.3 --with-apr=/engine/apacheModules/apr-1.7.4

 

httpd 설정

아파치 설정 폴더를 따로 두기 위해 새로운 폴더 생성 ( /engine/apacheModules/apache )

httpd  설치된 폴더로 이동 후

./configure --prefix=/engine/apacheModules/apache --enable-modules=most --enable-mods-shared=all --enable-so --with-apr=/engine/apacheModules/apr-1.7.4 --with-apr-util=/engine/apacheModules/apr-util-1.6.3

make
make install

 

http 실행

마지막에 생성한 /engine/apacheModules/apache폴더 안에 conf 폴더에 잇는 httpd.conf 파일에서 ServerName부분 주석해제하고 아래로 변경

ServerName localhost

설정을 끝내고 bin폴더에 잇는 apachectl로 실행

 engine/apacheModuels/apache/bin/apachectl start

 

80번 포트 열기

firewall-cmd --permanent --zone=public --add-port=80/tcp && firewall-cmd --reload && firewall-cmd --list-ports

자바 설치

자바1.8 설치

yum install -y java-1.8.0-openjdk-devel

 

설치된 경로 확인

which javac

 

자바환경 변수등록

readlink -f /bin/javac

나온 경로에서 맨 뒤 설치경로 빼고 복사

 

vim /etc/profile

해당 파일 맨 최하단에 추가 아래 코드추가

export JAVA_HOME={방금 복사한 내용}

 

변경한 파일적용

source /etc/profile

 

자바환경변수 확인

echo $JAVA_HOME

톰캣 설치

아래 사이트에서 최신 tar.gz압축 파일 설치

http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/

 

wget명령어로 설치

wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz

 

압축해제

tar zxvf apache-tomcat-8.5.9.tar.gz

 

8080포트 열기 (tomcat기본 포트)

firewall-cmd --zone=public --add-port=8080/tcp --permanent

 

방화벽 재시작

systemctl restart firewalld

 

방화벽 확인

firewall-cmd --zone=public --list-all

 

톰캣 실행해보기

설치한 폴더 안에 bin폴더로 이동후 

./startup.sh

아파치 톰캣 연동 - mod_jk.so

 

아래 사이트에서 최신 tar.gz압축 파일 설치

https://dlcdn.apache.org/tomcat/tomcat-connectors/jk

 

wget명령어로 설치

wget https://dlcdn.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.49-src.tar.gz

(설치가 안되면 sudo yum install -y ca-certificates 명령어 실행 )

 

압축해제

tar zxvf tomcat-connectors-1.2.49-src.tar.gz

 

tomcat-connect 설정

설치한 tomcat-connect 폴더 안에 native폴더로 이동 후

./configure --with-apxs=/engine/apacheModules/apache/bin/apxs
make && make install

 

mod_jk.so 설치 되어잇는지 확인

find / -name mod_jk.so

 

workers.properties 파일 생성

설치한 아파치 conf 폴더로 이동 후

vim ./workers.properties
...
worker.list=tomcat11
worker.tomcat_lb.type=lb
worker.tomcat_lb.balance_workers=tomcat01

worker.tomcat01.port=8009
worker.tomcat01.host=localhost
worker.tomcat01.type=ajp13

-- 아파치에 연동할 톰캣

 

httpd-vhost.properties 설정변경

conf폴더 하위에 extra폴더 안에 잇는 httpd-vhost.properties수정

vim ./extra/httpd-vhost.properties
...
<VirtualHost *:80>
    ServerName localhost
    JkMount /* tomcat11
</VirtualHost>

-- JkMount로 들어온 경로만 톰캣으로 연동

-- JkUnMount 추가시 톰캣연동 안할 경로 생성

 

httpd-conf 파일 수정

LoadModule 부분에 mod_jk.so추가 ( 경로는 위에서 확인 가능 )

LoadModule /engine/apacheModules/apache/modules/mod_jk.so

 

httpd-vhosts.conf 연동하는 부분 주석 제거

Include conf/extra/httpd-vhosts.conf

 

workers.properties 파일 연동

httpd.conf 파일 최하단에 아래 코드 추가

<IfModule jk_module>
    JkWorkersFile /engine/apacheModules/apache/conf/workers.properties
    JkMount /* tomcat11
</IfModule>

 

tomcat 설정파일 server.xml수정

<Connector port="8009" address="0.0.0.0" secretRequired="false" protocol="AJP/1.3" redirectPort="8443" />

주석 처리되어 있는 AJP/1.3 부분 주석해제

 

Tomcat에 war넣기

- 기본적으로 tomcat에 war로 감싼 프로젝트를 넣으려면 webapps안에 넣어주면 된다.

<Context path="/" docBase="ex001" reloadable="true"/>

넣은 war파일을 server.xml에서 인식할수 있게 Host태그 안에 주입


openssl 적용

 

openssl 설치

yum install openssl

 

openssl 버전 확인

openssl version

 

mod_ssl 설치

yum install mod_ssl

 

개인키 생성

openssl genrsa -des3 -out [개인키 이름].key 2048
(패스워드 입력)

 

CSR 생성

openssl req -new -key [개인키 이름].key -out [csr이름].csr
(개인키 비밀번호 입력 )

Country Name (2 letter code) [XX]:kr
State or Province Name (full name) []:seoul
Locality Name (eg, city) [Default City]:gasan
Organization Name (eg, company) [Default Company Ltd]:nara
Organizational Unit Name (eg, section) []:khs
Common Name (eg, your name or your server's hostname) []:khs
Email Address []: khs

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: (비밀번호 입력)
An optional company name []: (아무거나 입력)

 

crt 파일 생성

openssl x509 -req -days 365 -in [CRS파일이름].csr -signkey [개인키 이름].key -out [CRT 파일이름].crt
(개인키 비밀번호)

 

.keystore 생성

openssl pkcs12 -export -in [개인키 이름].crt -inkey test.key -out .keystore -name tomcat
(비밀번호) * 3

 

httpd.conf 파일 수정

 

- /etc/httpd/modules 아래에 mod_ssl.so 파일을 아파치 modules폴더 안에 복사

 

mod_ssl.so / mod_socache_shmcb.so 활설화

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

 

httpd-ssl.conf 활성화

Include conf/extra/httpd-ssl.conf

 

conf/extra/httpd-ssl.conf 파일 수정

- JkMount 설정

SSLEngine on
SSLCertificateFile [인증서 파일 경로]
SSLCertificateKeyFile [키파일 경로]
SSLCACertificateFile [중계인증서 파일경로] 

 

tomcat 하위 server.xml 수정

<connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxthreads="150" sslenabled="true" scheme="https" secure="true" clientauth="false" sslprotocol="TLS" keystorepass="[생성한 keystore 비밀번호]" keystorefile="[생성한 keystore경로]" />

 

실행은 아파치부터 

 

참고한 곳 : https://waspro.tistory.com/383