본문 바로가기
IT 학습 공간 ::)

Centos 7 리눅스 웹서버 구축 ( APM )

by 에스타롯사 2019. 5. 15.

안녕하세요 롯사입니다.

 

이번 시간엔 Centos 7 리눅스 환경에서 웹서버의 기능을 할 수 있는 서비스를 구축해서 

 

말 그래도 웹 서버 구축을 진행해보겠습니다.

 

구축에 앞서 웹 서버가 어떠한 역할을 하는 녀석인지 살펴보고 가겠습니다.

 

 

 

What is 웹서버?


웹 브라우저 ( Explorer, Chrome )와 같은 클라이언트로부터의 http 요청을 받아들여서 html 문서와 같은

웹페이지를 브라우저에 출력해주는 서비스 프로그램을 말합니다.

따라서 하드웨어적인 부분과 소프트웨어적인 부분을 결합하여 정확히 표현하자면 웹서버는 위와 같은 기능을

할 수 있는 하나의 서버 시스템이라고 표현할 수 있겠습니다.

 

 

 

본론으로 들어가서 구축을 진행해 봅시다.

 

 

 

 

 

Centos 7 웹서버 구축


1. 시스템 환경 확인.

 

* cat /etc/redhat-release ( centos 버전 확인 )

* cat /proc/version ( 커널 버전 / gcc 확인 )

 

저는 위와 같은 환경에서 웹서버 구축을 진행하겠습니다.

필수 항목은 아니니 그냥 확인하는 정도로 진행하시면 됩니다.

 

OS : CentOS Linux release 7.6.1810 (Core)

 

KERNEL : Linux version 3.10.0-957.el7.x86_64  (gcc version 4.8.5 20150623 (Red Hat 4.8.536) (GCC) 

 

 

 

2. 의존성 패키지 확인.

 

웹서버를 구축하기 위해선 다음과 같이 APM ( Apache / PHP / Maria DB ) 패키지가 필요합니다.

따라서 패키지가 설치되기 위해서 필수적으로 필요한 의존성 라이브러리 설치 여부를 확인합니다.

 

* rpm -qa libjpeg* libpng* freetype* gd-* gcc gcc-c++ gdbm-devel libtermcap-devel

 

무엇인가 많이 빠진 것 같죠? 

설치를 진행해 보겠습니다.

 

 

 

3. 의존성 패키지 설치.

 

설치를 진행할 때 소스 RPM 패키지를 사이트에서 수동으로 받아서 업로드 후 설치하셔도 무방하지만

의존성 문제가 발생합니다. 그래서 우리는 의존성 문제를 단방에 해결해 주는 YUM을 이용해서 설치를

진행하겠습니다.

YUM 이란 ( Yellowdog Updater Modified )의 약자로써 인터넷을 통해서 필요한 의존성 파일들을 자동

으로 검색해서 설치해줍니다. 따라서 외부와의 통신은 필수적으로 필요합니다.

 

* yum install libjpeg* libpng* freetype* gd-* gcc gcc-c++ gdbm-devel libtermcap-devel

 

관련된 항목을 모두 install / update 합니다.

y를 눌러서 설치를 진행합니다.

 

설치가 완료되면 다시 한번 설치 여부를 확인해 줍니다.

잘 설치가 되었습니다.

 

 

 

4. APM 설치 ( Apache / PHP / Marid DB )

 

설치 순서는 Apache --> Maria DB ---> PHP 순서로 설치를 합니다. ( 순서 주의 )

 

* yum install httpd ( Apache 설치 )

yum install mariadb mariadb-server ( Maria DB 설치 )

* yum install php php-mysql php-mbstring php-pdo php-gd ( PHP 설치 )

 

rpm -qa httpd mariadb php ( APM 설치 확인 )

 

Apache 설치 

 

Maria DB 설치

저는 이미 설치가 되어있네요. 

 

php 설치.

 

APM 설치 확인.

 

 

 

5. APM 서비스 실행 

 

* systemctl start httpd  ( Apache 서비스 실행 )

* systemctl enable httpd.service ( Apache 부팅 시 자동 실행 )

* systemctl status httpd ( Apache 서비스 상태 확인 )

* ps -ef | grep httpd ( Apache 프로세스 확인 )

 

* systemctl start mariadb ( Maria db 서비스 실행 )

* systemctl enable mariadb.service ( Maria db 부팅 시 자동 실행 )

* systemctl status mariadb ( Maria db 서비스 상태 확인 )

* ps -ef | grep mariadb ( Maria db 프로세스 확인 )

 

Apache 서비스 시작 / 재부팅 후 등록 / 서비스 상태 확인 / 프로세스 상태 확인

서비스 상태에서 active ( running ) 상태이면 정상적으로 동작하고 있는 상태입니다.

 

Maria db 서비스 시작 / 재부팅 후 등록 / 서비스 상태 확인 / 프로세스 상태 확인

active ( running ) 상태로 잘 동작하고 있습니다.

 

 

 

6. 방화벽, iptables 오픈 / selinux 해제

 

웹은 기본적으로 80번 포트를 사용합니다. Centos 7 이상부터는 firewalld와 iptables 가 동작하기 때문에

방화벽과 iptables에 양방향 80번 포트를 오픈해 줍시다.

그리고 보안 모듈 강화 selinux 부분을 해제합니다.

 

* firewall-cmd --zone=public --add-port=80/tcp --permanent ( 80번 포트 추가 )

* firewall-cmd --permanent --zone=public --add-port=80/tcp  ( 위와 동일 )

* firewall-cmd --reload ( 리로드 )

 

* iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT ( 80번 포트 추가 )

* iptables -vnL ( iptable 확인 )

 

*/etc/sysconfig/selinux ( selinux 수정 )

 enforcing --> disabled

 

방화벽 / iptables 80번 포트를 오픈합니다.

 

iptables에 추가된 80번 포트를 확인합니다.

 

vi /etc/sysconfig/selinux 편집기로 수정합니다.

enforcing --> disabled 변경

 

 

 

7. httpd 설정 파일 수정.

Apache 설정 파일 기본 경로는 vi /etc/httpd/conf/httpd.conf입니다.

 

/#ServerName으로 이 항목을 검색한 후에 주석을 해제하고 해당하는 웹서버의 IP를 넣어줍니다.

쉽게 말해서 웹서버의 역할을 할 서버의 IP를 넣어주시는 거라고 생각하시면 됩니다.

 

 

 

8. php 테스트 파일 작성.

http 호출을 받아 html 문서로 브라우저에 출력해줄 테스트 파일을 만드는 과정입니다.

html 업로드 기본 디렉터리는 /var/www/html입니다.

 

* echo "지금은 웹서버 테스트 중입니다" > /var/www/html/webtest.php

  (webtest.php 파일에 "지금은 웹서버 테스트 중입니다"라는 내용을 작성)

* systemctl restart httpd ( Apache 재시작 )

 

해당 경로에 webtest.php 파일이 생성되었습니다.

해당 경로는 Apache의 기본 업로드 경로이기 때문에 변경된 사항이 있으면 반드시 재시작을 해줍시다.

 

 

 

9. 웹서버 접속

해당 웹서버에 접속해서 테스트를 진행합니다.

 

* http://192.168.159.128/webtest.php

             [웹 서버 IP]      [작성한 파일]

 

설정한 php 파일 내용이 출력이 되면 정상적으로 동작하는 것입니다.

 


실제 개발을 하는 환경이라면 DB 와의 연동 등 Maria db 설정이 좀 더 필요하지만 이번 포스팅에선 웹서버가 어떻게 

동작을 하는지 기본 원리만 파악해 두시면 될 것 같습니다.

오늘 포스팅은 여기서 마치고 다음 시간에 좀 더 디테일하게 다뤄보겠습니다.

모두들 열일 열공하시기 바랍니다 ^^