728x90
우분투(Ubuntu 22.04)에 Apache2를 컴파일하여 설치하는 방법
1. 의존성 설치
- 빌드 도구와 Apache2가 필요로 하는 의존성을 설치합니다.
sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install -y zlib1g-dev libssl-dev libpcre3-dev
sudo apt-get install libnghttp2-dev
2. Apache 소스 다운로드
- 공식 Apache 웹사이트에서 Apache2 소스코드를 다운로드합니다.
cd /usr/local/src
wget -q https://dlcdn.apache.org/httpd/httpd-2.4.59.tar.gz
3. APR, APR-util 소스 다운로드
wget -q --no-check-certificate https://dlcdn.apache.org/apr/apr-1.7.4.tar.gz
wget -q --no-check-certificate https://dlcdn.apache.org/apr/apr-util-1.6.3.tar.gz
4. httpd(Apache) 압축 해제
- 다운로드한 아카이브를 압축 해제합니다.
tar -xzf httpd-2.4.59.tar.gz
5. APR, APR-util 디렉토리 생성
mkdir httpd-2.4.59/srclib/{apr,apr-util}
6. APR, APR-util 압축 해제
tar xfz apr-1.7.4.tar.gz -C httpd-2.4.59/srclib/apr --strip-components=1
tar xfz apr-util-1.6.3.tar.gz -C httpd-2.4.59/srclib/apr-util --strip-components=1
7. 소스 디렉토리로 이동
- 압축 해제된 디렉토리로 이동합니다.
cd httpd-2.4.59
728x90
8. 설정 및 컴파일
- configure 스크립트를 실행하여 컴파일을 위한 설정을 합니다.
./configure \
--prefix=/usr/local/apache2 \
--bindir=/usr/local/apache2/bin \
--sbindir=/usr/local/apache2/sbin \
--sysconfdir=/usr/local/apache2/conf \
--enable-http2 \
--enable-so \
--enable-rewrite \
--enable-mods-shared=all \
--enable-ssl \
--with-included-apr \
--with-mpms-shared=all \
--with-mpm=worker
9. 빌드 및 설치
- make 명령어로 빌드를 진행하고 make install 명령어로 설치합니다.
make -j $(( $(nproc) / 2 ))
sudo make install
10. Apache 버전 및 디렉토리 구조 확인
/usr/local/apache2/sbin/apachectl -v
$ /usr/local/apache2/sbin/apachectl -v
Server version: Apache/2.4.59 (Unix)
Server built: May 10 2024 08:33:40
/usr/local/apache2/sbin/apachectl -V
$ /usr/local/apache2/sbin/apachectl -V
Server version: Apache/2.4.59 (Unix)
Server built: May 10 2024 08:33:40
Server's Module Magic Number: 20120211:131
Server loaded: APR 1.7.4, APR-UTIL 1.6.3, PCRE 8.39 2016-06-14
Compiled using: APR 1.7.4, APR-UTIL 1.6.3, PCRE 8.39 2016-06-14
Architecture: 64-bit
Server MPM: worker
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_PROC_PTHREAD_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/usr/local/apache2"
-D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
tree -L 1 /usr/local/apache2
$ tree -L 1 /usr/local/apache2
/usr/local/apache2
├── bin
├── build
├── cgi-bin
├── conf
├── error
├── htdocs
├── icons
├── include
├── lib
├── logs
├── man
├── manual
├── modules
└── sbin
14 directories, 0 files
11. Apache 설정 수정
- 설정 파일 백업
sudo cp /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/httpd.conf_$(date +"%Y%m%d"-%H%M%S)
sudo cp /usr/local/apache2/conf/extra/httpd-vhosts.conf /usr/local/apache2/conf/extra/httpd-vhosts.conf_$(date +"%Y%m%d"-%H%M%S)
sudo cp /usr/local/apache2/conf/extra/httpd-ssl.conf /usr/local/apache2/conf/extra/httpd-ssl.conf_$(date +"%Y%m%d"-%H%M%S)
- ServerName 편집
sudo sed -i 's/^#ServerName.*/ServerName localhost/' /usr/local/apache2/conf/httpd.conf
- ssl, socache_shmcb, rewrite, http2 모듈 활성화
sed -i 's/^#\(LoadModule ssl_module modules\/mod_ssl.so\)/\1/' /usr/local/apache2/conf/httpd.conf
sed -i 's/^#\(LoadModule socache_shmcb_module modules\/mod_socache_shmcb.so\)/\1/' /usr/local/apache2/conf/httpd.conf
sed -i 's/^#\(LoadModule rewrite_module modules\/mod_rewrite.so\)/\1/' /usr/local/apache2/conf/httpd.conf
sed -i 's/^#\(LoadModule http2_module modules\/mod_http2.so\)/\1/' /usr/local/apache2/conf/httpd.conf
- 가상호스트(VirtualHosts) 설정
sudo mkdir -p /usr/local/apache2/htdocs/site1
echo "<html><body><h1>welcome to the website</h1></body></html>" > /usr/local/apache2/htdocs/site1/index.html
- httpd-vhosts.conf 설정
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
- httpd-ssl.conf 설정
vim /usr/local/apache2/conf/extra/httpd-ssl.conf
12. Apache 실행
- Apache 구성 파일의 구문을 체크합니다.
/usr/local/apache2/sbin/apachectl -t
$ /usr/local/apache2/sbin/apachectl -t
Syntax OK
- Apache를 실행합니다.
sudo /usr/local/apache2/bin/apachectl start
13. 방화벽 설정
- 방화벽에서 포트 80(HTTP)과 443(HTTPS)를 열어주어야 합니다.
14. 브라우저에서 테스트
- 브라우저를 열고 http://localhost 또는 서버의 IP 주소를 입력하여 Apache2가 정상적으로 작동하는지 확인합니다.
15. Apache 모듈 확인
/usr/local/apache2/sbin/apachectl -M
$ /usr/local/apache2/sbin/apachectl -M
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
mpm_worker_module (static)
authn_file_module (shared)
authn_core_module (shared)
authz_host_module (shared)
authz_groupfile_module (shared)
authz_user_module (shared)
authz_core_module (shared)
access_compat_module (shared)
auth_basic_module (shared)
reqtimeout_module (shared)
filter_module (shared)
mime_module (shared)
log_config_module (shared)
env_module (shared)
headers_module (shared)
setenvif_module (shared)
version_module (shared)
ssl_module (shared)
http2_module (shared)
unixd_module (shared)
status_module (shared)
autoindex_module (shared)
dir_module (shared)
alias_module (shared)
rewrite_module (shared)
컴파일을 통해 Apache2를 설치하는 것은 패키지 관리자를 통해 설치하는 것보다 더 많은 관리 부담이 따릅니다. 시스템에 새로운 버전을 설치하거나 업데이트할 때 의존성 문제가 발생할 수 있습니다.
참고URL
- Apache : HTTP Server Project
- Apache : Portable Runtime (APR) Project
728x90
'리눅스' 카테고리의 다른 글
[draft] 우분투에 BIND를 컴파일하고 설치하는 방법 (0) | 2024.05.13 |
---|---|
[draft] 리눅스에 Slack CLI를 설치 및 제거하는 방법 (0) | 2024.05.10 |
[draft] Nginx에서 Gzip 압축을 설정하는 방법 (0) | 2024.05.03 |
[draft] 우분투에 Nginx를 설치하고 Certbot을 사용하여 SSL 인증서를 설정하는 방법 (0) | 2024.05.03 |
[draft] 샘플 데이터베이스와 테이블을 생성하는 방법 (0) | 2024.04.29 |