본문 바로가기

Back End/Server

[Server] Ubuntu 20.04 APM(Apache2,PhP,Mysql) 소스 설치 -1

-1- 

환경 구축 및 Apache 설치


소개

Virtual Box 와 Ubuntu 20.04를 통해 APM(Apache2, PhP, Mysql)을 Package Manager가 아닌, 수동으로 설치해본다

 

목적

Terminal 환경에 친숙해지고, 수동설치를 하며 발생하는 오류들을 찾아보며 Backend에 대해 더 알아가면서 기본적인 서버를 구축해본다

 

작업환경

Virtual Box, Ubuntu 20.04

 

목차

  1. APR 설치
  2. APR-UTIL 설치
  3. PCRE 설치
  4. Apache 설치
  5. Apache 실행
  6. 실행결과

 

설치과정

1. APR 설치

APR: APR(Apache Portable Runtime)는 아파치 웹 서버를 지원하기 위한 Library이다. 또한, O.S에 매핑되는 기본 API를 제공하여주며, O.S가 지원하지 않는 특정 기능은 에뮬레이션을 제공해주어, 프로그램을 플랫폼에 이식될 수 있도록 도와준다.

$ sudo su
$ /usr/local# mkdir apache

$ /usr/local# wget http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz
$ /usr/local# wget http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz
$ /usr/local# tar xvfz apr-1.7.0.tar.gz
$ /usr/local# tar xvfz apr-util-1.6.1.tar.gz
$ /usr/local# wget https://www.apache.org/dist/apr/apr-1.7.0.tar.gz.sha256
$ /usr/local# sha256sum --check apr-1.7.0.tar.gz.sha256

 > wget 명령어를 통해 압축파일을 받아와, tar xvfz 명령어를 통해 압축을 해제 하여준다. 그 후 유효성 검사를 위한 sha256 압축파일을 받아 유효성검사를 할 수 있도록 해준다.

 

 > 위의 tar 파일들과, 해당 파일들의 압축이 풀린 파일들이 저장됨을 확인 할 수 있다.

 

$ /usr/local/apr-1.7.0# sudo apt-get install build-essential
$ /usr/local/apr-1.7.0# ./configure --prefix=/usr/local/apr
$ /usr/local/apr-1.7.0# make
$ /usr/local/apr-1.7.0# make install

 > APR 설치를 위해 그 전에 필수적인 compiler를 설치하여준다.

 

$ /usr/local/apr-1.7.0# cp -arp libtool libtoolT

 > 버전이 바뀌면서 libtoolT가 libtool로 바뀌어, 해당 libtoolT를 복사하여 litbool을 만들어준다. 

 

$ /usr/local/apr-1.7.0# ./configure --prefix=/usr/local/apr

APR 설치

 > 그 후 위의 명령어를 통해 APR을 설치하여준다.

 

2. APR-UTIL 설치

$ /usr/local/apr-util-1.6.1# apt-get install libexpat1-dev

 > APR-util 설치를 위해 사용되는 라이브러리에 포함된 header를 사용해주기 위해 먼저, libexpat1-dev 를 설치한다.

 

$ /usr/local/apr-util-1.6.1# ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-util

 > configure를 통해 여러 header 파일 및 makefile들이 만들어졌음을 확인 할 수 있다.

 

$ /usr/local/apr-util-1.6.1# make
$ /usr/local/apr-util-1.6.1# make install

make install 완료 후

> 그 후 위의 명령어를 통해 APR-util을 설치하여준다.

 

3. PCRE 설치

PCRE(Perl Compatible Regular Expressions): 펄 프로그래밍 언어의 정규 표현식 기능에 착안하여 만든, 정규 표현식 C 라이브러리로서, 정규식 패턴 일치를 구현하기 위한 함수의 집합이라고 할 수 있다.

$ /usr/local# wget ftp://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
$ /usr/local# tar xvfz pcre-8.43.tar.gz

wget 및 tar xvfz를 통해 파일을 가져온다

 

$ /usr/local/pcre-8.43# ./configure --prefix=/usr/local/pcre
$ /usr/local/pcre-8.43# make
$ /usr/local/pcre-8.43# make install

./configure 를 통해 여러 파일들이 만들어짐ㅇ르 알 수 있다.
make install 시 버전차이로 인해 발생한 warning

 >PCRE가 성공적으로 설치되었다.

 

4. Apache 설치

$ /usr/local# wget http://apache.tt.co.kr//httpd/httpd-2.4.46.tar.gz
$ /usr/local# tar xvfz httpd-2.4.46.tar.gz

wget 및 tar xvfz가 성공적으로 이루어졌음을 알 수 있다.

 

$ /usr/local/httpd-2.4.46# ./configure --prefix=/usr/local/apache2.4 \
> --enable-module=so --enable-rewrite --enable-so \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util \
> --with-pcre=/usr/local/pcre \
> --enable-mods-shared=all

 > ./configure는 소스파일에 대한 환경설정을 해주는 명령어로, 소스파일을 /usr/local/apache2.4에 설치하겠다는 명령어를 의미한다. 해당 명령어를 통해 여러 파일들이 만들어짐을 알 수 있다.

--enable rewrite: mod_rewrite가 제공하는 규칙기반 URL 조작 기능을 사용한다.

--enable so: mod_so가 제공하는 DSO 기능을 사용한다

--with-apr: 이미 설치된 APU을 대신 사용하고 싶다면 configure에게 apu-config 스크립트의 경로를 알려주어야 한다. 

--enable-mods-shared: 동적공유모듈로 컴파일할 모듈 목록을 지정한다. 즉, 이 모듈들은 LoadModule 지시어를 사용하여 동적으로 읽어들여야 한다.

 

$ /usr/local# wget http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.gz
$ /usr/local# tar xvfz m4-1.4.18.tar.gz
$ /usr/local/m4-1.4.18# ./configure

 > make를 하기 전, 몇가지 GNU 도구들을 설치하여준다.

 

$ /usr/local/m4-1.4.18/lib# vi fflush.c
$ /usr/local/m4-1.4.18/lib# vi fpurge.c
$ /usr/local/m4-1.4.18/lib# vi freadahead.c
$ /usr/local/m4-1.4.18/lib# vi freading.c
$ /usr/local/m4-1.4.18/lib# vi fseeko.c

 > 이 때 버전이 달라지면서, _IO_ftrylockfile 옵션이 GN7부터 삭제되어, 위의 파일들의 해당 옵션들을 _IO_EOF_SEEN 으로 변경해주어야 한다.

 

$ /usr/local/m4-1.4.18/lib# vi stdio-impl.h

$ /usr/local/m4-1.4.18# ./configure
$ /usr/local/m4-1.4.18# make

 > 위의 stdio-impl.h 파일 또한, 버전이 바뀌면서 _IO_IN_BACKUP에 대한 정의가 빠져있어, 정의 또한 추가해준다.

 > make 명령어를 통해 여러 파일들이 test 되고 make 됨을 알 수 있다.

 

$ /usr/local/httpd-2.4.46# make
$ /usr/local/httpd-2.4.46# make install

 > 그 후 httpd-2.4.46 디렉토리로 돌아가 make 명령어를 실행하여준다.

 

5. Apache 실행

$ /usr/local/# apt-get install net-tools
$ /usr/local/# apt-get install curl

 > Apache 실행을 위해 위의 package들을 먼저 다운받아준다.

 

$ /usr/local/# apache2.4/bin/httpd -k start

 > 위의 명령어를 통해 Apache를 실행시켜준다. 이 때 발생하는 경고는 Servername을 입력해주지 않아 발생한다.

 

$ /usr/local/# ps -ef | grep httpd | grep -v grep
$ /usr/local/# netstat -anp|grep httpd
$ /usr/local/# curl http://127.0.0.1

ps를 통해 process의 상태를 보여준다
netstat을 통해 network의 상태를 보여준다
curl을 통해 html의 정보를 보여준다.

 > ps, netstat 명령어들을 통해 현재 존재하는 Process및 network들을 확인하여 준다.

  -ef: e: 모든 프로세스 출력, f: full format으로 출력

  -anp: a: 모든 네트워크 출력, n: domain 주소 출력, p: PID와 사용중은 프로그램 출력

 

 > curl은 command line 기반 웹 요청 도구로, 해당 주소의 html 정보를 볼 수 있게 하여준다.

 

$ /usr/local/apache2.4/bin/# cp apachectl /etc/init.d/httpd 
$ /usr/local/# update-rc.d httpd defaults

 > 위의 명령어를 통해 Apache Service를 등록하여 자동실행해도록 해준다. 

 > apachectl 파일을 복사한 뒤 등록하여준다.

 

6. 실행 결과

 

참고링크

1. https://velog.io/@oyeon/Ubuntu-20.04-Apache-2.4.46-%EC%86%8C%EC%8A%A4-%EC%84%A4%EC%B9%98%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EC%84%A4%EC%B9%98-%EC%88%98%EB%8F%99-%EC%84%A4%EC%B9%98

2. https://httpd.apache.org/docs/2.2/ko/programs/configure.html