Ubuntu에서 Apache 소스를 설치해보도록 하자.
💡 APM(Apache, PHP, Mysql) ?
APM은 Apache, MySQL, PHP 세 가지가 연동되어 운영되도록 만든 환경이며,
Apache, MySQL, PHP는 각각 독립된 프로젝트지만 서로간 호환성이 좋아 주로 세 프로그램을 묶어 서버 개발에 사용한다고 한다.
💡 Apache
Apache는 Apache 재단에서 개발하고 오픈소스로 배포한 웹서버엔진으로,
정확한 표현은 "Apache HTTP 서버"이다.
우선 웹 서버는 웹 브라우저와 같은 클라이언트들로 부터 HTTP요청을 받아들이고, HTML 문서와 같은 웹페이지를 반환하는 일종의 컴퓨터 프로그램이다. 웹 서버에 주된 기능으로는 웹 페이지를 클라이언트로 부터 전달해주는 역할을 하는 것인데 대표적인 웹서버는 Apache, Nginx 등이 이에 속합니다.
웹 서버에는 정적인 방식과 동적인 방식 두가지가 있는데, 정적인 웹 서버는 단순히 HTML 문서만을 사용자에게 제공하기 때문에 아파치 웹 서버 하나면 된다. 반면 동적인 웹 페이지 사용자의 요구에 따라서 다양한 웹 페이지를 제공해주고, 이를 구성하기 위해 php와 mySQL 데이터 베이스를 연계해 사용하는데, 우리는 이를 APM이라 한다!
💡 소스 설치
이제 APM에 대해서 알았으니, APM 소스 설치에 대해서 알아보자!
APM을 설치할 때 패키지 관리자를 사용하여 패키지들을 쉽게 설치할 수 있지만
직접 웹에서 압축파일을 받고 압축파일을 풀어 소스를 컴파일하여 설치하는 방법도 있다.
하지만 그냥 패키지 관리자를 통해서 설치하면 안되나??? 하고 의문이 들었다.
그래서 찾아보니, 우분투(Ubuntu)를 예로 들면 apt라는 리눅스 계열의 패키지 관리 명령어 도구가 있다. 하지만 개인적인 목적이 아닌 회사에서 업무적인 목적이나 공공이 사용하는 경우 필요에 따라 패키지 설치를 막을 수 있어서 소스설치를 한다고 하였다!
하지만 초보자인 나의 입장에서는 리눅스 환경에 더 빠르게 적응할 수 있다는 점이 가장 큰 장점이었다!
💡 가상머신
가상머신 윈도우/맥에서 다른 운영체제를 사용하기 위한 도구이다.
한마디로 "난 맥북을 쓰고 있는데, 윈도우랑 리눅스도 쓰고 싶어!"로 설명할 수 있겠다
가상머신 종류는 Virtual Box, VMWare, Parallels 등이 있다. 본인의 경우 M1을 사용하고 있어 Parallels을 설치하였다.
리눅스 기반 OS는 대표적으로 Ubuntu(우분투), CentOS(센트OS), RedHat 등이 있으며, 이제 본격적으로 Apache 소스 설치를 해볼 것이다!
1. Parallels 설치
본인은 맥북 M1을 사용하고 있기에 vmware, virtual box 대신에 Parallels 체험판을 설치하였다.
M1의 경우 UTM과 Parallels 둘 중 하나를 선택하면 되는데, Parallels가 레퍼런스가 좀 더 많았다.
Parallels 체험판은 아래의 링크에서 설치할 수 있다.
2. Unbuntu 18.04 설치 → 20.04
이제 우분투를 설치해보겠다! 나 같은 경우 아래의 사이트에서 ubuntu-18.04.ios 파일을 다운받아주었고,
Ubuntu 18.04.6 LTS (Bionic Beaver)
[Parallels Desktop] - [파일] - [새로 만들기...]를 클릭하여 아래와 같은 창을 띄웠다.
이때 Parallels가 컴퓨터에 있는 이미지 파일들을 자동으로 찾아서 조회하여 우분투를 인식한다.
하지만 하지만 갑자기 마주쳐버린 당황스러운 문구.. (?)
"Mac에 Intel 기반 운영 체제를 지원하지 않는 Apple M1 칩이 장착되어 있기 때문에 지정된 이미지를 사용할 수 없습니다."
찾아보니까 M1 칩은 지원하지 않기 떄문에 AMD가 아닌 ARM으로 설치해주어야 된다고 하였다.
내가 깔아준 버전은 AMD64였기에 ARM 버전을 깔아주자..!
그래서 우분투 18.04 ARM을 찾는데 20.04밖에 보이지 않았다…
어떤 외국인도 m1에서 우분투 18.04 설치할 수 없냐는 글을 올리긴 했는데 ..
→ (parallels ubuntu 18.04 intallation으로 서치하였음)
하지만 18.04를 설치할 수 없는 것 같았다 ..
How to install Ubuntu 18.04 on MacBook m1?
그래서 대안은 20.04 ,,,, 일단 깔아보자!
20.04 ARM을 설치하고 선택해주었더니 다음과 같은 창으로 무사히 이동하였다.
이름과 비밀번호를 설정해주었고, 드디어 우분투 창을 만나게 되었다. 👋👋👋
이후에 아까 설정해두었던 이름과 비밀번호를 입력하여 로그인해주었고, 로그인을 마치 면 아래와 같은 창을 만나게 된다.
이후 터미널을 켜서 lsb_release -a 명령어를 입력해주었고, 다음처럼 20.04 버전이 설치된 것을 확인할 수 있었다.
jeon-yejin@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
3. Apache 설치
3-1 ) 필수 패키지 설치
$ sudo su
$ apt-get install gcc
$ apt-get install --reinstall make
$ apt-get install libexpat1-dev
$ apt-get install g++
3-2 ) apache 폴더 생성
경로 : /usr/local
$ sudo su
$ cd /usr/local # 처음에 cd usr/local을 해주었더니 없는 디렉토리라고 나왔다.. /을 꼭 붙여주자
$ mkdir apache # 해당 디렉토리에 apache 폴더를 생성
3-3) apr 과 apr-util 을 다운 및 압축 해제
경로 : /usr/local
[ Issue 1 🔥 ]
아래와 같은 코드를 입력했는데, wget: unable to resolve host address ftp.pcre.org.. 라는 에러가 발생하였다.
$ wget http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz
그래서 구글링을 하였을 때 nameserver 8.8.8.8 로 설정해주면 된다고 하였는데, 나의 경우 해결되지 않았다.
$ sudo vi /etc/resolv.conf
$ nameserver 8.8.8.8 #추가 후 저장 :wq 하고 나오기!
많은 포스팅을 보던 와중 /etc/hosts 에 hostname 이 잘못 기록되었을 때 발생하는 것을 알게 되었다.
그래서 /etc/hosts를 살펴보았더니,
$ vi /etc/hosts
나의 호스트네임이 unbuntu임에도 불구하고, 이렇게 127.0.0.1(localhost) 이 localhost 라는 hostname을 가르키고 있었다
127.0.0.1 localhost
127.0.1.1 ubuntu
그래서 다음과 같이 변경해준 후 다시 설치를 해주었더니 정상 작동하였다!ㅎㅎ
여기까지하면 apr, apr-util 까지 설치하고 압축해제까지 완료된다.
$ wget http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz
$ wget http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz
$ tar xvfz apr-1.7.0.tar.gz
$ tar xvfz apr-util-1.6.1.tar.gz
3-4) pcre 설치
다음으로 prec 설치를 하면된다.
[ Issue 2 🔥 ]
구글링을 하면 여러 블로그에서 다운로드 경로를 ftp:// ~~~로 설정하였었다. 그래서 그대로 설치를 해주었는데 아까와 같은 wget: unable to resolve host address ftp.pcre.org 에러가 발생하였다..
$ wget ftp://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
그래서 nameserver, hostname 두개 다 설정해주었는데 왜 똑같은 오류가 날까? 라고 고민하다가..
구글링을 하던 와중 어떤 분이 왜 wget 명령어로 ftp: //~이런식으로 접근하냐! 라는 댓글을 보게 되었다.
그래서 직접 https:// ~~ 다운로드 경로를 지정해주고 다운로드를 받고 압축을 해제해주었다.
$ wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz
$ tar xvfz pcre-8.44.gar.gz # 압축 풀기
$ cd usr/local/pcre-8.44 # 해당 폴더로 이동
3-5 ) Apache 2.4.54 설치
경로 : /usr/local
이제 진짜 아파치를 설치해보자…
아래 사이트에서 Stable Release - Latest Version 에서 최신버전을 확인할 수 있다.
https://httpd.apache.org/download.cgi
/usr/local 에 apache 최신 버전을 다운로드 받고, 압축을 풀어주면 된다
$ wget https://downloads.apache.org//httpd/httpd-2.4.54.tar.gz
$ tar xvfz httpd-2.4.54.tar.gz
$ cd 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/bin/pcre-config \
--enable-mods-shared=all
$ make
$ make install
[ 삽질 1 🔥 ]
위의 매우 긴 명령어를 치는데 자꾸 apr-util 부분에서 자꾸 에러가 나서 다 설치해줬는데 왜 ???엉??? 이러고 있었는데
--with-apr-util=/usr/lcoal/apr-util \ 이렇게 오타 냈던 것임.. 나부터 의심하자! ^^ 오타를 잘 확인하자 ^^
[ Issue 3 🔥 ]
error : Did not find pcre-config script at /usr/local
아파치 설정파일을 설정하는 중 pcre 부분에서 자꾸 config가 없다고 어쩌구 하면서 make 명령어가 안먹었다.
찾아보니 pcre 부분을 찾은 다음 pcre-config 파일이 있는 경로를 직접 지정해주면 된다고 하였다.
그래서 /usr/local/pcre 경로를 /usr/local/pcre/bin/pcre-config로 변경해주었다!
그 후 make -> make install을 해주면 된다!
--with-pcre=/usr/local/pcre \ → --with-pcre=/usr/local/pcre/bin/pcre-config \
여기서 잠깐 👋
configure, make, make install은 뭘까?
1) configure
configure는 소스파일에 대한 환경설정을 해주는 명령어다.
소스를 사용할 컴퓨터와 사용자의 환경에 맞게 내 컴퓨터는 어떤 기종이고,
컴파일에 필요한 시스템 파일들은 어디에 위치해 있으며, 어떤 곳에 설치하겠다! 라고 지정하는 것
2) make
make는 소스를 컴파일 하는 것이다.
컴파일이란 것은 소스파일을 사용자가 실행 가능한 파일로 만들어 주는 과정을 말한다.
make 과정이 끝나고 나면 설치파일(Setup 파일 같은 것)이 생성된 상태라고 볼 수 있다.
3) make install
make install은 make를 통해 만들어진 설치파일(setup)을 설치를 하는 과정이다.
한마디로 build된 프로그램을 실행 할 수 있게 파일들을 알맞은 위치에다가 복사를 한다.
configure, make, make install 에 대해서 잘 설명해주신 블로그이다 : )
https://itdexter.tistory.com/325
3-6 ) Apache 실행
이제 아파치를 실행하자!
sudo /usr/local/apache2.4/bin/httpd -k start
하지만 명령어를 입력하였더니 에러가 발생하였다.
[ Issue 4 🔥 ]
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
살펴보니 ServerName을 정하라고 뜨는데 에러는 아니였다. 그래도 ServerName을 지정해보자!
다음과 같은 명령어로 편집기를 열고 서버네임을 지정해주면 된다.
$ vi /usr/local/apache2.4/conf/http.conf
ServerName localhost
이후 다음과 같이 진행하면 된다.
$ ps -ef | grep httpd | grep -v grep
$ netstat -anp | grep httpd
#netstat 이 없을시 아래의 명령어로 설치
$ apt-get install net-tools
$ curl http://127.0.0.1
# curl 이 없을시 아래의 명령어로 설치
$ apt-get install curl
curl 명령어를 입력해주었더니 다음과 같이 html 정보를 출력해주었다.
curl http://127.0.0.1 를 실행해 보면 ... It Works!가 뜨면 성공이다! 후후
참고자료
https://koras02.tistory.com/226
https://itdexter.tistory.com/325
'Server' 카테고리의 다른 글
[Server] AWS 서버 구축하기 Linux + Nginx PHP MySQL (0) | 2022.08.16 |
---|---|
[Server] 포트포워딩을 통해 외부에서 phpinfo 접속하기 (0) | 2022.08.08 |
[Server] Bitnami 설치 후 APM 실행하기 (0) | 2022.08.08 |
[Server] Ubuntu에서 PHP 소스 설치하기/컴파일 설치/수동설치 (0) | 2022.08.02 |
[Server] Ubuntu에서 MySQL 소스 설치하기/컴파일 설치/수동설치 (0) | 2022.07.31 |
댓글