-1-
환경 구축 및 Apache 설치
소개
Virtual Box 와 Ubuntu 20.04를 통해 APM(Apache2, PhP, Mysql)을 Package Manager가 아닌, 수동으로 설치해본다
목적
Terminal 환경에 친숙해지고, 수동설치를 하며 발생하는 오류들을 찾아보며 Backend에 대해 더 알아가면서 기본적인 서버를 구축해본다
작업환경
Virtual Box, Ubuntu 20.04
목차
설치과정
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을 설치하여준다.
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
> 그 후 위의 명령어를 통해 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
$ /usr/local/pcre-8.43# ./configure --prefix=/usr/local/pcre
$ /usr/local/pcre-8.43# make
$ /usr/local/pcre-8.43# make install
>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
$ /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, 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. 실행 결과
참고링크
2. https://httpd.apache.org/docs/2.2/ko/programs/configure.html
'Back End > Server' 카테고리의 다른 글
[Server] AWS Server 구축 (Nginx + PhP + MySQL) -1 (0) | 2021.07.08 |
---|---|
[Server] AWS를 통한 Server 대여 및 WinSCP 연결 (0) | 2021.07.08 |
[Server] Bitnami를 통한 Local 서버 구축 및 외부 연결 (0) | 2021.07.06 |
[Server] Ubuntu 20.04 APM(Apache2,PhP,Mysql) 소스 설치 -3 (0) | 2021.07.05 |
[Server] Ubuntu 20.04 APM(Apache2,PhP,Mysql) 소스 설치 -2 (0) | 2021.07.05 |