Linux 계열 OS인 Ubuntu 에 APM(Apache+PhP+MySQL) 소스 설치(= 컴파일 설치, 수동 설치) 하기 1탄(아파치만,,)

Jayden JaeMin Jeong·2021년 5월 31일
1

Rising programmer 3

목록 보기
1/12
post-custom-banner

1주차 과제로 GCP(Google Cloud Platform)에 Ubuntu OS 바탕으로 AP를 소스 설치를 받았다. 모든 과제를 끝내고 다시 복습하는 차원에서 처음부터 다시 하면서 블로그를 쓰려고 한다. 그래서 지금까지 과제를 하면서 거쳐왔던 내 생각의 흐름들을 기록하겠다.

  • 왜 리눅스 OS에 설치를 하는가?(참고자료 포함)
    http://blog.naver.com/PostView.nhn?blogId=phh0606c&logNo=10172023826
    이 블로그 포스트를 읽어보면 리눅스를 이용해서 하는 이유를 알 수 있다. 대략 오픈소스라서 커뮤니티도 활발하고 서버 구축에 가장 안정적인 OS라고 한다.

(펭귄쉑 뭔가 띠꺼움)

자 그래서 대충 납득하고 APM을 설치하려고 한다. 근데 여기서 설치할 때 내 컴퓨터에다가 설치하는게 아닌 GCP라는 아주 좋은 서비스를 이용한다. GCP에서 VM Instance를 만들어준다.

  • GCP Instance란?
    대충 내가 하면서 받은 느낌은 그냥 컴퓨터 하나를 소프트웨어 느낌으로 빌리는 것이다

[이름 입력 후 이 정도 스펙으로 하면 됨. 근데 혼자 프로젝트 할 때 다른 걸로 과금 먹은 안 좋은 기억이 있어서 잘 알아보고 해야 함. 공짜로 컴터 빌려준다 생각하고 신나서 GPU 추가하고 슈퍼슈퍼 어쩌고 저쩌고 하다가 빚쟁이 될 수도 있으니 조심)
[Ubuntu 16.04를 해준다. 이유는 없다. 높은 버전하면 과금 먹을까봐 낮은 버전으로 하는 거임 ㅋ]

[저기 SSH를 눌러서 브라우저를 통한 셸 접속을 해보자]

[접속 성공 ㅋ]

자 이제 대망의 AP 설치를 해보자. (아 참고로 MySQL은 GCP VM이라 설치를 하지 않는다고 한다. 이유는 모름. 하라는 대로 하자)

사실 이번 1주차 과제를 하면서 현재 ios-server 멘토로 들어와 있는 콜트 velog를 거의 다 치팅했다 ㅋ(콜트 블로그- https://velog.io/@banjjoknim/about)

이번 과제를 받았을 때 apt를 쓰지 말라고 했는데 이건 멘토가 좀 모호하게 말한 것 같다.

$ apt install apache2 php

이런 거 하지말라고 해야하는데 apt 자체를 쓰지 말라는 줄 알고 apt가 패키지 매니저로만 알고 있는 나는 살짝 당황했다. 왜냐면 소스 설치를 할 때 필수 라이브러리를 설치해야 하는데 필수 라이브러리는 apt로 설치하기 때문 ㅋㅋㅋㅋ 우짜노~우짜노~ 하다가 그냥 apt로 저질러 봤는데 돌아보니 이게 맞는 길이더라ㅋㅋㅋㅋ 쨌든 다시 시작해보자

일단 전체적으로 먼저 Apache 설치 후, MySQL 설치, PHP 순서로 설치해야한다고 한다. 우리는 MySQL이 없으니 그냥 APache 설치, 확인, PHP 설치, 확인 순으로 가면 될 듯

사실 설치과정은 이 글을 참고하면 된다.(참고: https://bluexmas.tistory.com/1127?category=571009)

다만 주의할 점은 저 사람 터미널을 봤을 때 디렉토리가 우리랑 다르다는 것이다. 그래서 명령어를 입력할 때 조심해서 해야 한다.
[필수 라이브러리 설치 완료]

그 다음 PCRE 설치를 한다. 이게 뭐냐고? 묻지마라. 그냥 하라는 대로 하고 나중에 알아보면 된다ㅋ

[PCRE 설치 완료]

그 다음 이 파일을 압축 해제 해줘야 한다. 거기서 쓰이는 명령어가 tar이다.

[압축해제 완료 한 모습]

그 다음 압축 해제한 그 폴더로 가서 설정을 해야 한다.

"시발"

에러가 떴다. 초보자라면 이걸 보고 에러인지 아닌 지도 모를 수 있다. 왜냐면 내가 그랬다. 무작정 앞으로만 직진! 명령어 ctrl+c // ctrl+v 만 하다보니 이게 에러인지도 몰랐다. 하지만 나는 이제 고수다. 이건 C ompiler가 없다는 소리다. 에러를 복사하고 해결책을 찾아본다.

https://itknowledge.tistory.com/12 ---> 여기를 보니

sudo apt-get install build-essential

이 커맨드를 입력하면 해결된다고 한다. 시도해본다.

"시발"(2트)

에러를 살펴보니 apt-get update를 해야한다고 한다. 뭔지 몰라도 그냥 해본다.

"시발"(3트)


(웬만해선 sudo를 붙여주는게 좋다. 대충 root 사용자 이름표를 붙이는 거 같음. 수펄파워를 얻는 것과 같음)

[sudo apt-get install build-essential 성공]

간혹 에러에 에러를 만나면 내가 뭐하고 있는 지 까먹을 때가 있는데 조심하면서 잘 찾아서 해야 한다. 간혹 가다가 이론 공부하는 자신을 만날 수도 있다.

[우리으 목표 pcre configure 완료]

그 다음

$ make

입력 후,

[leaving directory 뜬 거면 성공]

그리고 마지막으로

sudo make install

입력 후,

[이렇게 뜨면 PCRE 설치는 마무리 된 거다]

벌써 힘들지 않나? 아무것도 몰랐을 때 이것만 몇시만 삽질하니까 머굴빡 깨지는 줄 알았다. 좀만 더 힘내자!

이제는 아파치를 설치해볼 것이다. 아파치가 무엇이냐? 웹 서버이다(끝). 바로 설치하러 가자.

루트 디렉토리(~)로 가서

$ wget https://downloads.apache.org//httpd/httpd-2.4.46.tar.gz

이거 입력한다. 아 참고로 $ 이건 빼는 거다. 다들 알고 있지?
(사진 입력하기 귀찮으므로 필수적인 것만 사진을 넣겠다 이제부터)

$ tar xvfz httpd-2.4.46.tar.gz

이걸로 압축 해제 해준다.

$ cd httpd-2.4.46/

해제한 디렉토리로 이동

$ cd srclib

srclib 디렉토리로 이동해서 여기다가

$ wget https://archive.apache.org/dist/apr/apr-1.7.0.tar.gz

또 설치를 해준다. 그 다음 뭔지 알지?

$ tar xvfz apr-1.7.0.tar.gz

바로 압축해제.

그 다음

mv apr-1.7.0 apr

이걸로 압축 해제된 apr-1.7.0 디렉토리를 apr이라는 이름으로 바꿔준다.
[이름 바꿔준 모습]

그 다음

$ wget https://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz
$ tar xvfz apr-util-1.6.1.tar.gz

이렇게 apr-util-1.6.1 파일 다운로드 후 압축 해제 해주자. 그리고 그 해제된 디렉토리를

$ mv apr-util-1.6.1 apr-util

이걸로 이름 바꿔주자.

[이름 바꿔준 모습]

그 다음 과정에서 앞서 참고한 블루산타 성님의 글은 pcre를 srclib에다가 다시 설치해서 그걸 다시 pcre로 이름을 바꿨는데 그럴 필요 없이 루트 디렉토리로 가서

$ mv pcre-8.44 httpd-2.4.46/srclib/pcre

이렇게 srclib로 옮겨주면 된다.(아마 mv는 잘라내기 같은 명령어인듯)

그 다음 httpd-2.4.46으로 이동한 다음에,

./configure --prefix=/apps/apache24 --with-pcre=/usr/local/pcre-8.44 --enable-cgi --enable-info --enable-deflate --enable-ssl --enable-proxy --enable-proxy-connect --enable-proxy-http --enable-proxy-ftp --enable-expires --enable-headers --enable-rewrite --enable-so --with-included-apr --with-included-apr-util --with-included-pcre

이 명령어로 하는데 조심해라. 서로 디렉토리가 틀리기 때문에 아마 저 명령어가 표준이지 않을가 싶다.

[개그튼 에러 발생]

걱정마라. 나의 "검" saint colt의 블로그를 참고해보면 zlib location이 없어서 생긴 에러이고

$ apt-get install libssl-dev

로 다시 라이브러리를 설치하면 된다고 한다. 그래서 설치 후,

다시 ./configure~~~ 명령어 입력ㅋ

[./configure 성공한 모습]

그 다음

$ make
$ sudo make install

입력을 해주는 데 나는

[이런 에러가 떴다(제발 그만해줘)]

찾아보니 libexpat1-dev 를 설치해야 한다고 한다.

$ sudo apt install libexpat1-dev

이걸로 해결 1차시도 해본다. 설치 후 다시 make 커맨드를 입력하니

"시이발"

분명 그 전에 했을 땐 이런 에러 못 봤는데 정신이 어질어질하다 지금. 그래서 에러메시지를 서칭해본다.

서칭해본 결과 apr-util 에서 뭔가 문제가 발생했다고 사람들이 추측했다. 그래서

$ rm -rf apr-util

을 통해 삭제 후 다시 apr-util-1.6.1 을 압축 해제 후 또 다시 이름 바꿔준 다음 ./configure~~~ 명령어 입력 해줬다. 그 다음 $ make 를 하니

[성공한 남자의 터미널 모습.]

성공잼 ㅋ

그 다음

$ sudo make install

로 마지막 설치를 해준다.

그리고 마지막으로

$ cd /apps/apache24/conf
$ sudo vi httpd.conf

로 httpd.conf 파일을 편집해준다.(여기서 디렉토리 구조가 헷갈릴 수 있는데 지금까지 잘 따라왔다면 상관없다)

vi 편집기로 열어서

ServerName localhost

딱! 이대로만 적으면 된다.(위치는 상관 없음. 근데 아마 찾아보면 ServerName 적는 곳 있을 거임)
그 다음

$ cd /apps/apache24/bin/

이동 후에,

$ sudo vi apache2.service

apache2.service 파일을 편집해준다.

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=https://httpd.apache.org/docs/2.4/

[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
ExecStart=/apps/apache24/bin/apachectl start
ExecStop=/apps/apache24/bin/apachectl stop
ExecReload=/apps/apache24/bin/apachectl graceful
PrivateTmp=true
Restart=on-abort

[Install]
WantedBy=multi-user.target

(그대로 따라왔으면 디렉토리 딱 이렇게만 하면 됨.)

그 다음

$ chmod +x apache2.service

이걸 입력하니 나는 이런
[하하 이젠 좀 정겹구나]

에러가 뜬다. 그래서 sudo 로 해결 ㅋ. 그 다음엔

$ sudo cp apache2.service /etc/systemd/system

실행. 그리고 난 후 apache 서비스를 등록해야 한다.

$ sudo systemctl enable apache2

등록 완료.

Apache 서비스 실행을 해준다.

$ sudo systemctl start apache2

실행완료

Apache 서비스 상태 확인해보자

$ sudo systemctl status apache2

active 하다는 것을 볼 수 있다잉

$ curl localhost 

이'curl' 명령어로 터미널에서 html 파일을 확인 할 수 있다. 이거 말고 구~지구지 브라우저에서 봐야한다 싶으면 자신의 vm 외부 ip 주소를 복사해서 http:// or https:// 붙이지 않고 url 창에다가 검색해보면 It works! 라고 뜰 것이다.

하하 정말 쉽죠? 그럼 아파치까지만 설치하고 그 다음 php에서 뵙겠습니다,,, 글이 너무 기네요. 다들 파이팅 🥲

profile
천방지축 CEO & CTO
post-custom-banner

0개의 댓글