Last Updated on 1월 4, 2021 by 태랑(정현호)
* 해당 포스팅은 Source Compile 로 설치하는 APM(Apache+PHP-FPM+Mysql) 연재글 입니다.
* Apache -> Mysql -> PHP-FPM 순으로 보시면 되며 하단에 연결 링크가 있습니다.
* 업데이트 : 2020/11/05
* APM 과 TLS1.3을 위해 OpenSSL 모두 Sour 소스 컴파일(Source Compile)으로 설치 하였습니다.
* 환경은 Centos 7.8 / Apache 2.4.46 / OpenSSL 1.1.1h 입니다.
YUM(RPM) 으로 APM 설치글은 아래 링크 포스트를 보시면 됩니다.
리눅스에 APM (Apache + PHP + Mysql) 설치 및 연동
OpenSSL 설치
HTTPS 에서 사용되는 네트워크 통신 보안을 제공하기 위해 설계된 암호 규약 이며 SSL 3.0 을 기반으로 개발되었습니다.
SSL 1.0 -> 2.0 -> 3.0 (2015년에 금지) -> TLS 1.0 -> TLS 1.1 -> TLS 1.2 -> TLS 1.3
TLS 1.3 을 사용하기 위해서는 openssl 와 웹 서버의 특정 버전 이상이 필요 합니다.
OpenSSL 1.1.1 이상이 필요하고 apache 2.4.37 이상 이 필요 합니다.
참고로 nginx 는 1.13.0 이상이 필요 합니다.
OS의 패키지(yum)에는 openssl 1.0.2 만 포함되어 있으므로 TLS1.3 을 사용할 수 없어서
사용하려면 OpenSSL을 소스 컴파일로 진행 하려고 합니다.
파일 다운 및 설치
os repository 에서 가능한 최신 버전까지 일단 업데이트를 하고 진행 하겠습니다.
[root]# yum -y install openssl-devel.x86_64 openssl.x86_64
openssl-1.1.1 Source 다운로드
[root]# wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz
컴파일 설치
[root]# tar zxvf openssl-1.1.1h.tar.gz
[root]# cd openssl-1.1.1h
[root]# ./config --prefix=/usr/local/openssl-1.1.1h
[root]# make;make install
# /etc/ld.so.conf 에 아래 내용 추가
[root]# vi /etc/ld.so.conf
/usr/local/openssl-1.1.1h/lib
[root]# ldconfig
<-- 내용 추가 후 ldconfig 명령어 실행
버전 확인
[root]# /usr/local/openssl-1.1.1h/bin/openssl version
OpenSSL 1.1.1h 22 Sep 2020
openssl 경로 변경
[root]# mv /bin/openssl /bin/openssl.1.0.2k-fips
<-- 기존 버전 rename 하여 백업을 해둡니다.
[root]# ln -s /usr/local/openssl-1.1.1h/bin/openssl /bin/openssl
<-- 심볼링크 생성
Apache 유저 생성
Apache 설치를 위해 유저를 별도로 생성 합니다.
groupadd apache
추가 패키지 설치
EPEL을 활성화
[root]$ yum install -y epel-release
사전 필요 패키지 설치
[root]# yum -y install gcc.x86_64 expat-devel libcurl.x86_64 \
lua-devel.x86_64 libxml2-devel.x86_64 libnghttp2 libnghttp2-devel \
ncurses-devel.x86_64 zlib-devel.x86_64 libjpeg-devel.x86_64 \
libpng-devel.x86_64 gd-devel.x86_64 glibc.x86_64 \
php-mbstring.x86_64 libexif-devel.x86_64 libtool.x86_64 \
libnghttp2 libnghttp2-devel
# httpd-2.4.X 버전부터는 apr과 apr-util, pcre 를 별도로 설치하여야 합니다
뒤에서 설치할 Mod_security 에도 필요 합니다.
apr설치
https://apr.apache.org/download.cgi
tar zxvf apr-1.7.0.tar.gz
아래와 같이 파일 복사 후 다시 configure 를 합니다
apr-util 설치
cd ..
wget http://apache.tt.co.kr//apr/apr-util-1.6.1.tar.gz
tar -xvzf apr-util-1.6.1.tar.gz
PCRE 설치
httpd server 설치
[root]# wget https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.gz
저는 PHP-FPM 사용을 고려하여 event-MPM 과 http2 옵션 추가로 설치하였습니다.
[root]# export CPPFLAGS="-I/usr/local/openssl-1.1.1h"
=> configure 전에 위에서 설치한 openssl 1.1.1 버전의 적용을 위해 CPPFLAGS 변수를 설정 해줍니다.
--enable-mods-shared=all --enable-http2 \
--enable-ext-filter --enable-ssl --with-ssl=/usr/local/openssl-1.1.1h \
--enable-so --enable-cache --enable-proxy \
--enable-deflate --enable-suexec --enable-file-cache \
--with-mpm=event --with-apr=/usr/local/apr-1.7.0 \
--with-apr-util=/usr/local/apr-util-1.6.1 \
--with-pcre=/usr/local/pcre-8.44/bin/pcre-config \
--enable-modules=all --enable-module=shared
=> configure 시에도 --with-ssl=/usr/local/openssl-1.1.1h 에 경로를 지정해줍니다.
[root]# make ; make install
디렉토리 심볼릭 링크 생성
[root]# ln -s /usr/local/apache2.4.46 /usr/local/apache2.4
-> 필수는 아님, 저는 향후 버전등의 변경에 따른 경로 일관화를 위해서 사용하고 있습니다.
[참고사항] mod_php 방식 PHP을 사용 할 경우 apache는 preform 방식을 사용 해야 합니다.
아래는 prefork 방식의 configure 입니다.
=======================================
[root]# ./configure --prefix=/usr/local/apache2.4.46 \
--enable-mods-shared=all \
--with-mpm=prefork \
--enable-ext-filter --enable-ssl -with-ssl --enable-so \
--enable-cache --enable-proxy --enable-deflate --enable-ssl \
--enable-suexec --enable-file-cache \
--with-apr=/usr/local/apr-1.7.0 \
--with-apr-util=/usr/local/apr-util-1.6.1 \
--with-pcre=/usr/local/pcre-8.44/bin/pcre-config \
--enable-modules=all
[root]# make ; make install
=======================================
httpd.conf 2개 module 추가
LoadFile /usr/lib64/libxml2.so
/etc/ld.so.conf 에 내용 추가
[root]# ldconfig
<-- 명령어 실행
apache service 등록 및 시작
서비스 생성 및 등록
vi /usr/lib/systemd/system/httpd.service
# 중지
systemctl stop httpd
# 재시작
systemctl restart httpd
# httpd.conf 만 재적용(graceful)
systemctl reload httpd
설치 결과 확인
[root]# curl -I localhost (혹은 ip나 도메인 주소)
HTTP/1.1 301 Moved Permanently
Date: Sat, 24 Oct 2020 22:21:43 GMT
Server: Apache/2.4.46 (Unix) OpenSSL/1.1.1h mod_jk/1.2.48
Mysql 소스컴파일 설치 및 PHP 소스컴파일 설치 후 연동은 아래 글을 이어서 참조 하시면 됩니다.
이어지는 글
Mysql 5.7 설치 (Cmake 소스 컴파일 및 Binary 설치)

PHP-FPM 설치 및 Apache 연동

Apache 압축전송

Senior DBA(Mysql, Oracle) - 현재 위메프에서 많은 새로움을 경험중입니다
At WeMakePrice / Previous - Oracle Korea ACS Support / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io
핑백: Apache 와 PHP-FPM 연동 | | 작은 공간,하지만 꿈이있는