Apache와 PHP를 연동하는 방법은 크게 두 가지가 있음
# 다운로드 (버전은 달라질 수 있음)
wget http://archive.apache.org/dist/httpd/httpd-2.2.34.tar.bz2
wget http://apache.mirror.cdnetworks.com//apr/apr-1.6.5.tar.bz2
wget http://apache.mirror.cdnetworks.com//apr/apr-util-1.6.1.tar.bz2
wget -O php-7.3.3.tar.bz2 http://php.net/get/php-7.3.3.tar.bz2/from/this/mirror
tar xvfj httpd-2.2.34.tar.bz2
tar xvfj apr-1.6.5.tar.bz2
tar xvfj apr-util-1.6.1.tar.bz2
tar xvfj php-7.3.3.tar.bz2
cd apr-버전/
./configure && make all install
cd ../apr-util-버전/
./configure --with-apr=../apr-버전 && make install
# 빌드 시에 expat 관련 에러가 발생하면 apt install libexpat1-dev로 라이브러리와 헤더 설치하고 다시 빌드
cd ../httpd-버전/
./configure --with-apr=../apr-버전 --with-apr-util=../apr-util-버전 --enable-so && make all install
cd ~/php-버전/
./configure --with-iconv --with-pear --with-apxs2=/usr/local/apache2/bin/apxs --with-gettext=shared && make all install
# 빌드 시에 libxml2 관련 에러가 발생하면 apt install libxml2-dev로 라이브러리와 헤더 설치하고 다시 빌드
# Apache httpd의 초기 설정 필요함 (ServerName 항목 작성)
vi /usr/local/apache2/conf/httpd.conf
# php 소스코드 형태로 제공되지 않고 해석되도록 하려면 mime type 정의를 변경해야 함
echo "application/x-httpd-php php" >> /usr/local/apache2/conf/mime.types
# 서비스 구동
/usr/local/apache2/bin/apachectl start
# 서비스 프로세스 확인
ps aux | grep httpd
# php phpinfo(); ?라는 내용을 포함하고 있는 test.php 파일 생성
vi /usr/local/apache2/htdocs/test.php
# curl이나 w3m으로 확인
curl http://localhost/test.php
# 설치
apt install apache2 libapache2-mod-php
# Apache httpd의 초기 설정 필요함 (ServerName 항목 작성)
vi /etc/apache2/sites-enabled/000-default.conf
# 서비스 구동
service apache2 start
# 서비스 프로세스 확인
ps aux | grep apache2
# php phpinfo(); ?라는 내용을 포함하고 있는 test.php 파일 생성
vi /var/www/html/test.php
# curl이나 w3m으로 확인
curl http://localhost/test.php
# PHP 빌드 시에 --enable-fpm 옵션 추가
cd ~/php-버전/
./configure --with-iconv --with-pear --with-apxs2=/usr/local/apache2/bin/apxs --with-gettext=shared --enable-fpm && make all install
# 빌드 시에 libxml2 관련 에러가 발생하면 apt install libxml2-dev로 라이브러리와 헤더 설치하고 다시 빌드
/usr/local/apache2/conf/httpd.conf 설정 변경
ServerName www.example.com
User nobody
Group nobody
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
#LoadModule php7_module modules/libphp7.so
Require all granted
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /run/php/php-fpm.sock -pass-header Authorization
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
SetHandler "proxy:unix:/run/php/php-fpm.sock|fcgi://localhost"
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
# Deny access to files without filename (e.g. '.php')
Require all denied
# 기본 설정 파일을 실제 사용할 설정 파일로 이름 변경
mv /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
mv php-fpm.d/www.conf.default php-fpm.d/www.conf
php-fpm.conf의 include 설정 항목을 다음과 같이 변경
include=/usr/local/etc/php-fpm.d/*.conf
php-fpm.d/www.conf의 listen 설정 항목을 다음과 같이 변경 (/run/php 디렉토리를 생성할 필요가 있음)
listen = /run/php/php-fpm.sock
# Apache httpd 서비스 구동
/usr/local/apache2/bin/apachectl start
# Apache httpd 서비스 프로세스 확인
ps aux | grep httpd
# php-fpm 서비스 구동
/usr/local/sbin/php-fpm
# nobody user나 group이 없다는 에러 메시지나 발생하면 useradd nobody 또는 groupadd nobody로 추가해줄 것
# php-fpm 서비스 프로세스 확인
ps aux | grep fpm
# php phpinfo(); ?라는 내용을 포함하고 있는 test.php 파일 생성
vi /var/www/html/test.php
# curl이나 w3m으로 확인
curl http://localhost/test.php
# 설치
apt install apache2 php-fpm
sites.enabled/000-default.conf 파일을 편집기로 열어서 다음과 같이 설정을 <VirtualHost> 내부에 추가함
Require all granted
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /run/php/php7.0-fpm.sock -pass-header Authorization
mods-enabled/proxy.load 파일 작성
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
mods-enabled/proxy_cfgi.load 파일 작성
# Depends: proxy
LoadModule proxy_fcgi_module /usr/lib/apache2/modules/mod_proxy_fcgi.so
# Apache httpd의 초기 설정 필요함 (ServerName 항목 작성)
vi /etc/apache2/sites-enabled/000-default.conf
# Apache httpd 서비스 구동
a2enmod proxy proxy_fcgi
service apache2 start
# 서비스 프로세스 확인
ps aux | grep apache2
# php-fpm 서비스 이름 확인
service --status-all | grep fpm
# php-fpm 서비스 구동
service php7.2-fpm start
# php-fpm 서비스 프로세스 확인
ps aux | grep fpm
# php phpinfo(); ?라는 내용을 포함하고 있는 test.php 파일 생성
vi /var/www/html/test.php
# curl이나 w3m으로 확인
curl http://localhost/test.php