}

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 시스템 해킹 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate using chrome ↓↓↓===***===>

2021년 10월 29일 금요일

리눅스 아파치 설치 매우 자세히!!

 안녕하세요! 마무입니다. 드디어!!! 모든 서버에서 가장 많이 사용하고, 어떻게 보면 제일 중요한 "리눅스 웹 서버 프로그램 설치", 그 중 가장 많이 사용되는 웹 서버 프로그램인 '아파치 설치"에 대해서 포스트해보려 합니다.

당연하지만... 이제부턴 1급 범위이므로 제가 '리눅스 독학 페이지'에 써놓은 2급 범위 내용들을 전부 아신다고 생각하고 포스트할 것입니다.

그러므로 2급 범위 내용은 자세히 설명 안하고 그냥 넘어갈 것입니다. 그러므로 꼭 2급 범위를 다 읽고 오시길 바랍니다.


-----목차-----

1. 서버 프로그램을 직접 컴파일 하는 이유

2. 기존 깔려있는 아파치 삭제

3. 아파치에 설치에 필요한 다른 프로그램들

i) gcc, gcc-c++ 설치

ii) XML parser(expat)설치

iii) apr란 apr-util 설치

iv) pcre 설치

4. 아파치 다운 및 컴파일

5. 아파치 설치시 생기는 오류 모음들

---------------

리눅스 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_13.html

네트워크 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_15.html

에서 찾아보세요!




1. 서버 프로그램을 직접 컴파일 하는 이유


저희는 이제 웹서버를 구축하기 위한 서버 프로그램을 설치해야 합니다만, 서버란 그 무엇보다 안전성이 중요하기에 서버프로그램은 주로 공인 사이트에서 코드를 다운받고 해시값을 비교한다음 직접 컴파일을 합니다.

직접 컴파일을 하지 않는 이유는 예를 들어 yum으로 서버 프로그램을 다운하는 것도 가능하지만, 만약 yum 저장소가 감염이 된 경우 감염된 서버 프로그램을 다운 받을 수도 있기 때문입니다. 

단순히 공부용이 아닌, 실제 상황에서 가장 많이 사람들이 이용하는 웹서버가 감염이 돼 있다면... 그 피해는 상상을 초월하겠죠...

또 이런 보안적 부분외에도 직접 컴파일을 해야 컴파일 옵션으로 더 세부적인 서버 구축웹프로그램을 원하는 디렉토리에 설치를 할 수 있습니다.

그렇기에 서버에서 가장 많이 사용하는 필수 서버프로그램은 직접 컴파일을 하는 겁니다.(웹서버프로그램, 데이터베이스 등등)




2. 기존 깔려있는 아파치 삭제


저희가 사용중인 센토스(레드햇)은 웹서버 프로그램이 이미 설치가 돼 있습니다

우리는 공식 사이트에서 소스코드를 다운 받아 원하는 입맛대로 직접 컴파일 후 원하는 디렉토리에 설치 할 것이기에 기존에 설치 돼 있는 httpd(아파치)는 제거해주겠습니다.



"rpm - qa | grep httpd"를 통해 검색을 해보면, httpd(http를 사용하는 데몬 -> 웹서버프로그램 '하마치')와 관련된 프로그램 3개가 보입니다. 

rpm -e --nodeps 옵션을 이용해 모두 제거해줍니다. 




만약 rpm에 대해서 모르시면 

리눅스 rpm의 모든 것

에서 보고 오세요!




3. 아파치에 설치에 필요한 다른 프로그램들


기존에 설치 돼 있던 httpd 관련 프로그램들을 모두 제거하고 난 후, 이제 소스코드를 다운 받아 설치하면 될 것 같지만.. 아쉽게도 그전에 미리 갖고 있어야하는 프로그램들이 있습니다.


i) gcc, gcc-c++ 설치 


우리가 사용할 웹 서버 프로그램 '아파치(Apache)' C언어와 C++언어로 만들어졌기에, 당연히 C, C++ 소스코드를 컴파일할 때 C와 C++ 컴파일러가 필요합니다.

컴파일러 중에서 우리는 리눅스에서 가장 많이 애용하는 'gcc'를 설치하려고 합니다.

서버프로그램이 아니니, gcc와 gcc-c++은 "yum install gcc gcc-c++" 명령어를 통해 간단히 설치해줍니다. 

참고로 gcc는 c언어 컴파일러, gcc-c++은 c++ 컴파일러입니다.





ii) XML parser(expat)설치 


XML(eXtensible Markup Language)은 이름대로 "확장 가능한 마크업 언어"입니다. 

"XML"은 주로 인터넷상에서 데이터를 저장 및 전달을 위해 사용하는 언어입니다. 이 XML은 ML(Markup Language)라는 부분이 'HTML'의 ML(Markup Language)똑같은 것처럼 실제 구조도 "< > /"와 같은 기호를 사용하며, HTML과 상당히 흡사하게 생겼습니다.

그리고 'parser'문법을 분석해주는 녀석이란 뜻입니다.

그럼 이 두단어를 합친 XML parser은 당연히 XML 문법을 분석해주는 프로그램이라는 것이죠!

당연히 웹 서버 프로그램의 주역할이 서버와 클라이어트 사이 데이터를 송수신관리이므로 XML을 많이 사용하기에 XML parser 프로그램이 필요한겁니다. 

또 "백엔드 개발자"들에게 예상이 가능하고 일관된 인터페이스를 만들 수 있게 도와주는 "APR(Apache Portable Runtime)"이란 모듈도 이 뒤에 설치할 것인데 당연히 APR 모듈에 이 XML parser가 필요합니다.

우리는 이러한 XML parser 프로그램 중 C언어 라이브러리로 만들어진 'expat'이란 프로그램을 설치할 겁니다.

"yum install expat expat-devel expat-static"이란 명령어로 expat과 관련된 프로그램들을 한번에 설치해줍니다.

참고로 "expat-devel"이란 expat 프로그램에 사용되는 라이브러리며, 주로 "[프로그램]-devel" 또는 "프로그램-dev" 이렇게 이름이 붙은 프로그램들을 전부 앞에 이름 프로그램에서 사용하는 라이브러리 패키지라고 생각하시면 됩니다.

제 생각에는 이 dev, devel은 development(개발)의 약어가 아닐까 생각이 드네요.

"expat-static"이란 static(정적)이란 말대로, 정적 라이브러리가 들어있는 패키지입니다.




제 위 사진처럼 expat같은 경우 이미 설치가 돼 있을수도 있습니다만 "expat-devel"이나 "expat-static"은 설치가 될거라 봅니다.


iii) apr란 apr-util 설치 


위에서 잠깐 설명한 백앤드 개발자를 위한 모듈인 "APR(Apache Portable Runtime)"이란 것도 설치를 해야합니다만, 이것은 위 프로그램들과 다르게 yum이 아닌 소스코드가 필요합니다.

왜냐면 'apr'과 'apr-util'인 경우 웹 서버 프로그램인 'Apache'를 컴파일 할 때 옵션으로서 같이 컴파일할 것이기 때문이죠.

그래서 공식 사이트에서 이 apr과 apr-util 코드를 다운 받겠습니다.

센토스인 경우 기본 브라우저가 파이어폭스이니, 파이어폭스를 들어가

Welcome! - The Apache Portable Runtime Project  (http://apr.apache.org/)

위 url를 이용해 다운로드 사이트로 들어갑니다.

그리고 apr, apr-util을 다운 받으면 됩니다만, 그전에 우리는 브라우저 파일 기본 저장 위치를 리눅스에서 소스코드들을 저장할 때 쓰라고 만들어놓은 디렉토리인 "/usr/local/src/"로 바꾸려고 합니다.

물론 당연히 "/usr/local/src"가 아닌 자기가 원하는 디렉토리에 설치해도 되지만 실무에선 이 디렉토리를 많이 사용한다 하니 /usr/local/src/를 사용하겠습니다.

참고로 디렉토리 위치를 변경하지 않고 그냥 다운할시, "/home/[로그인 한 유저]/download" 에 저장이 될 겁니다. 물론 root면 "/root/donwload(다운로드)"겠지만요.




이렇게 파이어폭스에서 오른쪽 상단 세줄모양클릭후, 톱니바퀴 모양Preferences(환경 설정)를 눌러줍니다.

그리고 



나오는 화면에서 좀 밑으로 내리면, 위처럼 파일 저장위치가 나옵니다. 'Browse..."를 누르고  

디렉토리 위치를 보여주는 화면에서




상단에 '◀'를 누르면



이렇게 디스크모양의 그림이 나오는데, 이 디스크 모양을 누르면 바로 최상단 디렉토리로 이동이 됩니다.

그리고



이렇게 최상단 디렉토리로 이동후, 'usr' -> 'local' -> 'src'로 순으로 디렉토리를 클릭해 이동후 



이곳 "/usr/local/src"에서 이제 오른쪽 상단 파란색 "Open"을 눌러주시면 우리가 원하는 디렉토리로 다운 장소가 정해집니다.




이렇게 말이죠!

이후 




아까 올려놓은 URL 페이지에서

공식 사이트에서 추천하는, 위 주황색으로 표시한 유닉스(리눅스)의 "apr-1.7.0.tar.bz2""apr-utill-1.6.1.tar.bz2"를 눌러서 다운 받습니다.

이후


이렇게 터미널에서 "/usr/local/src/"로 이동후 잘 다운이 됐나 확인해줍니다

이걸 이제 tar을 이용해 한번에 압축 해제를 해줘야합니다만, 그전에 필요한 "pcre"라는 프로그램 다운 후 같이 한번에 압축 해제하도록 하겠습니다!


iv) pcre 설치 


"pcre(Perl-Compatible Regular Expression)"이란 '정규표현식'과 똑같은 맥락과 문법을 'perl 5'에서 사용할 수 있게 해주는 'perl' 라이브러리입니다.

'pcre'아파치 2.4이상을 설치하려면 필요한 패키지이기에 다운 받습니다.

https://www.pcre.org/

위 사이트로 들어가신다음



밑에 큰 글씨인 'Download'밑에 있는 PCRE2가 아닌 1을 다운 받을 수 있는 포지넷으로 들어갑니다.

그리고 



최신 버전인 'pcre-8.45.tar.bz2'를 다운 받아줍니다.


이후 다시 아까의 "/usr/local/src"를 확인해보면



똑같이 다운 받은 pcre 압축 파일이 보일 겁니다.

이제 이것을 apr, apr-util들과 같이 한번에 압축 해제를 해줍니다.



저 같은 경우에는 tar에 {}를 쓸 경우 자동 완성이 안돼서, 그냥 위 사진처럼

"tar jxvf apr-1.7.0.tar.bz2 ; tar jxvf apr-util-1.6.1.tar.bz2 ; tar jxvf pcre-8.45.tar.bz2"이렇게 한번에 했습니다.

저처럼 해도 되고, 그냥 각각 tar로 풀어주셔도 되고, 이름을 복사해서 하셔도 됩니다. 그냥 각자의 방법대로 푸시면 되겠습니다.

그리고 이렇게 위 3개의 아카이브를 한번에 해제하고나면 각각에 맞는 디렉토리가



이렇게 생길 겁니다.

여기서 "apr"와 "apr-util" 디렉토리는 아파치를 컴파일 할 때 같이 사용할 것이니 일단 놔둡니다

이제 'pcre'를 설치하기 위해, 현재 디렉토리에서 "cd pcre-8.45"를 통해 디렉토리 내부로 이동합니다.



내부를 보면 이렇게 많은 파일들이 보입니다. 

여기서 우리는 pcre를 "/usr/local/pcre"이란 위치에 설치할 것이기에, "configure --prefix=/usr/local/pcre" 이렇게 prefix옵션을 주어서 설치 위치를 설정해줍니다.




이후 

"make" 명령어를 쳐서



컴파일을 해줍니다. 이후 컴파일이 끝난 뒤 바로

"make install"을 쳐서



컴파일된 프로그램을 설치해줍니다.

아까 우리가 configure 단계에서 저장 위치를 "--prefix=/usr/local/pcre"로 정했기에, 분명 /usr/local/pcre란 디렉토리가 생성됐을 겁니다.

한번 가서 확인해보시면


 

이렇게 생성된 것을 알 수 있습니다!




4. 아파치 다운 및 컴파일


드디어~~~ 아파치에 필요한 패키지들은 설치가 끝났으니, 드디어 본격적으로 아파치를 설치해보겠습니다.

http://httpd.apache.org/download.cgi#apache24

이 사이트에 들어가



이렇게 주황색으로 표시한 소스코드를 다운을 해줍니다.

그리고 다른 패키지처럼, /usr/local/src로 들어가 확인해보면



이렇게 잘 다운이 된걸 알 수 있습니다.

참고로 해시값 비교는 다른 포스트에서 다루도록 하겠습니다.

다운이 됐으니 아까 다른 프로그램처럼 똑같이 "tar -jxvf httpd-2.4.51.tar.bz2"를 통해 아카이브와 압축을 동시에 해제해줍니다.

그리고 나면



이렇게 "httpd-2.4.51"이라는 소스코드들이 들어있는 디렉토리가 생깁니다. 

cd로 httpd-2.4.51로 들어가줍니다.




디렉토리 내부로 들어오시면, 주황색으로 제가 표시한 것처럼 "srclib(source library)"란 디렉토리가 보일텐데요, 이름대로 아파치 설치할 때 같이 사용할 소스 라이브러리를 넣어두라고 있는 디렉토리입니다. 

그러므로 우리가 아까 전에 압축해제 했었던 'apr'과 'apr-util' 소스코드가 들어있는 디렉토리를 이 디렉토리 내부에 복사해서 넣어줄겁니다.

다시 패키지 디렉토리들이 있는 "/usr/local/src"로 이동해주시고

문제가 생기지 않게 원본의 모든 걸 똑같이 복사하는 '-a'옵션을 함께주어 복사해줍니다.

"cp -a apr-1.7.0 httpd-2.4.51/srclib/apr"

"cp -a apr-util-1.6.1 httpd-2.4.51/srclib/apr-util" 이렇게 복사한뒤




"ls httpd-2.4.51/srclib/"잘 복사가 됐나 확인해줍니다.

이 때 버전이 안 붙어있는 'apr'과 'apr-util' 이름으로 복사해야합니다. 

자 이제 당연히 컴파일을 해줘야 하니, 'httpd-2.4.51' 디렉토리 내부로 이동해줍니다.

이제 컴파일 하기전에 하는 configure 작업에서, 우리는 설치했던 여러 패키지들(apr, pcre)을 같이 연동하기 위해서 configure에서 여러가지 많은 옵션을 줘야합니다.

일단 국민 옵션인 "--prefix=/usr/local/apache"라는 옵션을 통해, 우린 아파치를 "/usr/local/apache"에 설치할 것이며

요즘은 거의 대부분 동적 모듈을 사용하기에, 동적 모듈을 허용하겠다"--enable-so"도 추가해줘야 합니다. 참고로 '.so'리눅스에서 '동적공유모듈'에 붙이는 확장자입니다.

앞에 --enable-so라는 옵션을 통해 동적 모듈을 사용하겠다고 했으니 구체적으로 어떤 모듈을 동적 모듈로 할 것이냐라는 옵션을 줘야합니다.

그러나 요즘은 거의 동적 모듈로 사용하기에 우리는 "--enable-mods-shared=all"이란 옵션을 통해 all(모든 모듈)을 동적 모듈로 하겠다고 해줍니다.

그리고 컴파일 할 때 "apr"을 포함 할 것이기에 "--with-included-apr"옵션을 줄 것입니다.  (특정 플랫폼에선 'apr', 'apr-util', 'pcre'를 apache와 함께 빌드할 때 각 패키지마다 '-dev'나 '-devel'로 끝나는 패키지가 필요하다는 글이 뜰 수도 있습니다) 

그리고 당연히 'pcre'도 포함할 것이기에 "--with-pcre=/usr/local/pcre"이란 옵션으로 아까 우리가 설치한 pcre의 절대위치를 알려줍니다.

그래서 이렇게 많은 옵션들을 추가한

"./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=all --with-included-apr --with-pcre=/usr/local/pcre" 이라고 터미널에 쳐줍니다. 


그리고 나서 'configure'의 과정인 많은 줄들이 올라간 다음




이렇게 뜨시면 잘 configure가 된 겁니다.

만약 여기서 에러가 뜨거나 이후 컴파일에서 오류가 생길 경우 

밑에 '5. 아파치 설치 오류 모음들'에 써놓은 오류들을 정리한 포스트에 가셔서 확인해보세요!

그리고 이후 'make'를 해서 끝났을 때


이렇게 'error'가 들어가 있지 않은 상태로 끝나면 잘 된 겁니다.

 'make install'도 마찬가지로 


이렇게 error가 없이 끝나면 잘 설치가 끝난겁니다.





5. 아파치 오류 모음들


사실... 웹 서버 프로그램은 언제든 정~~말 많은 에러들이 발생할 수 있습니다.

그래서 설치 때 일어나는 오류 뿐만 아니라 그냥 아파치에 관련된 모든 오류들을 따로 포스트하려고 합니다.

그래서 아파치 설치 때 일어난 오류들도 그 포스트에 적어놓았으니 보고 오시면 좋을 것 같습니다!

https://mamu2830.blogspot.com/2021/10/apache-error.html







자 여기까지 아파치 설치에 대해서 알아보았습니다!

이제 본격적으로 서버 프로그램들을 다루는 리눅스마스터 1급 범위를 다루게 됩니다!

리눅스를 공부하시는 분들이라면 정말 가슴이 뛰고 어떻게 보면 서버를 다루는 과정을 배우므로 2급 공부보다 훨씬 재밌고 흥미진진하게 배울 수 있을거라 생각합니다!(저도 그랬었거든요!)

물론 저도 개인적으로 매우 바쁘고, 꼼꼼한 성격상 포스트 쓰는 속도가 느리지만, 꾸준히 따뜻한 댓글을 달아주시는 분들과 팔로우 해주는 분들이 있기에 끝까지 포스트를 해보려고합니다.

다음에는 필수 서버 프로그램인 데이터베이스 프로그램과 php를 설치하여 아파치와 연동해보는 과정을 해보려고 합니다.

그럼 오늘도 포스트 읽느라 고생하셨으며!! 따뜻한 댓글 및 팔로우 클릭은 저에게 아주 큰 힘이 됩니다!

다음에 더 좋은 포스트로 찾아뵙겠습니다! 



댓글 없음:

댓글 쓰기

#1 여러분들이 소중한 시간을 투자해 달아주시는 따뜻한 댓글들은 저에게 정말 큰 힘이 됩니다!

#2 저의 각 포스트들은 엄청난 노력과 시간 투자를 통해 만들어진 포스트들로, 무단 복제나 모방하는 것을 금지합니다.

#3 저의 포스트에도 틀린 정보가 있을 수도 있습니다. 그럴 경우 친절한 말투로 근거와 함께 댓글로 달아주시면 정말 감사하겠습니다!