운영체제/Linux

아파치 웹서버에 대해서-2 (feat. 서비스 명령어, PHP)

ahgle 2023. 2. 28. 08:58
728x90
반응형

안녕하세요, 아글입니다.

 

오늘은 

아파치 서버 서비스 및 PHP 사용 에 대해서 알아보겠습니다.

 

아파치 서비스를 시작하는 명령어

#systemctl start httpd

[root@test www]# systemctl start httpd

 Apache 서버의 httpd 데몬을 실행시킵니다.

* 데몬의 개념은 아래 링크를 통해 확인이 가능합니다!

https://wowy0211.tistory.com/16

 

데몬(daemon)에 대해서

리눅스를 다루면서 프로세스, 데몬에 대해 제대로 알지 못했다. 데몬이 무엇인지, 데몬과 프로세스의 차이는 무엇인 지 이번 기회에 정리하며 숙지해보도록 하겠다. 데몬 데몬이란 리눅스 시스

wowy0211.tistory.com

 

아파치 서비스가 서버 부팅 시 항상 올라오도록(서비스가 시작되도록) 하는 명령어

#systemctl enable httpd

[root@test www]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

명령어 enable  을 이용하여 Apache 서비스가 부팅 이후 자동으로 시작하게 설정합니다.

multi-user.target.wants에 httpd 서비스 파일인 httpd.service에 심볼릭 링크가 생성됩니다. 참고로 이 때, multi-user.target 은  run level 3(텍스트 모드)로 서버를 사용할 때 설정되는 Systemd Target입니다.

이 말이 이해되지 않으시는 분들은 그냥 '부팅 이후 자동으로 Apache 서비스가 실행되도록 한다' 로만 이해하시면 됩니다.

 

Apache 서비스의 상태를 확인하는 명령어

#systemctl status httpd

[root@test www]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2023-02-17 12:10:46 KST; 1 weeks 3 days ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 12554 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─11187 /usr/sbin/httpd -DFOREGROUND
           ├─11188 /usr/sbin/httpd -DFOREGROUND
           ├─11189 /usr/sbin/httpd -DFOREGROUND
           ├─11190 /usr/sbin/httpd -DFOREGROUND
           ├─11191 /usr/sbin/httpd -DFOREGROUND
           └─12554 /usr/sbin/httpd -DFOREGROUND

 Active : active (running)이라는 문구를 봤을 때, Apache 웹 서버가 잘 실행된 것을 볼 수 있습니다.

우리는 우리 서버를 이용해 바깥 세상(크롬 등 웹 브라우저)과 우리 서버를 연결할 프로그램을 실행시킨 것입니다.

 

그럼 웹서버를 껐을 땐 status가 어떻게 나오는 지 볼까요?

 

아파치 서비스를 중단하는 명령어

#systemctl stop httpd

[root@test www]# systemctl stop httpd

 

중단 후 아파치 웹서버 상태 확인

#systemctl status httpd

[root@test www]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Tue 2023-02-28 08:28:20 KST; 2s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 13090 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 12554 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=0/SUCCESS)
 Main PID: 12554 (code=exited, status=0/SUCCESS)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

Feb 28 08:28:19 techcs7514.cafe24.com systemd[1]: Stopping The Apache HTTP Server...
Feb 28 08:28:20 techcs7514.cafe24.com systemd[1]: Stopped The Apache HTTP Server.

 Active : inactive (dead) 로 옆에 언제 웹서버가 죽었는 지(중단 됐는 지) 시간과 함께 상태가 출력되네요.

 

명령어 netstat을 활용한 httpd 데몬이 사용하는 포트와 프로토콜, PID를 확인

[root@test www]# netstat -natlp |grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      13284/httpd

httpd 데몬이 사용하는 포트와 프로토콜, PID 확인이 가능하네요.

tcp프로토콜을 이용하고 있고, 80번 포트, PID는 13284가 부여돼있습니다.

 

명령어 lsof를 이용한 명령어 - 서비스 확인

#lsof -i tcp:80

[root@test www]# lsof -i tcp:80
COMMAND   PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
httpd   13284   root    4u  IPv6 42143042      0t0  TCP *:http (LISTEN)
httpd   13285 apache    4u  IPv6 42143042      0t0  TCP *:http (LISTEN)
httpd   13286 apache    4u  IPv6 42143042      0t0  TCP *:http (LISTEN)
httpd   13287 apache    4u  IPv6 42143042      0t0  TCP *:http (LISTEN)
httpd   13288 apache    4u  IPv6 42143042      0t0  TCP *:http (LISTEN)
httpd   13289 apache    4u  IPv6 42143042      0t0  TCP *:http (LISTEN)

 lsof 명령어를 통해 포트 80번을 확인하면 httpd 명령어가 http 서비스를 제공하는 것을 확인 가능합니다.

 

이제는 아파치 웹서버와 함께 사용할 PHP를 설치해보겠습니다.

*PHP란 서버사이드 스크립트 언어 라고 하며, 일반적으로 "웹 서버는 정적인 페이지만 출력이 가능한 반면, PHP와 같은 서버사이드 스크립트 언어를 통해 동적 페이지를 표현이 가능하다" 라는 정도로 참고해주시기 바랍니다.

 

명령어 yum을 이용해 php패키지를 설치

#yum install php php-per -y

[root@test www]# yum install php php-pear -y

 

명령어 rpm 을 이용해 php 패키지 설치 여부 확인. 이 때 의존성 있는 패키지들도 같이 확인된다.

#rpm -qa |grep php 

[root@test www]# rpm -qa |grep php
php81-runtime-8.1-1.el7.remi.x86_64
php70w-cli-7.0.33-1.w7.x86_64
php81-php-cli-8.1.11-1.el7.remi.x86_64
php70w-common-7.0.33-1.w7.x86_64
php70w-mysqlnd-7.0.33-1.w7.x86_64
php81-8.1-1.el7.remi.x86_64
php70w-pdo-7.0.33-1.w7.x86_64
php70w-7.0.33-1.w7.x86_64
php81-php-common-8.1.11-1.el7.remi.x86_64

 

 php 설정 파일인 /etc/php.ini 에서 자신이 사용하는 시간 대를 설정

; http://php.net/date.timezone
date.timezone =Asia/Seoul

date.timezone 값이 비어있으면 실제 시간이 비정상적으로 출력될 수 있기 때문에 Aisa/Seoul을 반드시 넣어줍시다.

 date.timezone이 비어있을 때 어떻게 출력이 되는 지, 어떻게 설정하는 지 등은 아래 포스팅을 통해 확인 가능합니다!

https://wowy0211.tistory.com/24

 

 

php에 관련된 설정을 정의하는 파일

/etc/httpd/conf.d/php.conf

[root@test www]# ls /etc/httpd/conf.d/php.conf 
/etc/httpd/conf.d/php.conf

 이 파일은 php패키지를 설치하면 사용할 수 있습니다.

 

 

php를 Apache 서버에서 사용하기 위해 필요한 모듈을 정의한 파일

/etc/httpd/conf.modules.d/10-php.conf

[root@test www]# ls /etc/httpd/conf.modules.d/10-php.conf 
/etc/httpd/conf.modules.d/10-php.conf

이 파일도 php 패키지를 설치해야 사용 가능합니다.

 

 

PHP가 사용하는 모듈 이름

/etc/httpd/modules/libphp7.so

[root@test www]# ls -l /etc/httpd/modules/libphp7.so 
-rwxr-xr-x 1 root root 4584776 Dec  7  2018 /etc/httpd/modules/libphp7.so

저는 PHP7 버전을 설치했기 때문에 libphp7.so 라는 이름의 so파일 모듈이 생성되었습니다.

 

 

관련 설정을 적용시키려면 Apache 웹서버를 재시작해주어야 합니다. 

[root@test www]# systemctl enable httpd

 

 

오늘은 이렇게 아파치 웹서버 서비스를 다루는 명령어와 관련해서 자주 쓰이는 서버 사이드 스크립트 언어인 PHP를 설치하고 관련 위치, 파일에 대해서 알아보았습니다. 이어지는 포스팅은 Apache CGI와 UserDir 사용 방법에 대해서 알아보겠습니다.

 

이전 글이 궁금하신 경우 아래 링크를 통해 확인 가능합니다!

https://wowy0211.tistory.com/41

 

Apache 웹서버에 대해서(feat. httpd.conf)

안녕하세요, 아글입니다. 오늘은 아파치 웹 서버 에 대해서 알아보겠습니다. 아파치 웹서버(Apache Webserver) 아파치 소프트웨어 재단에서 제공하는 대표적인 오픈소스 HTTP 서버 자체적으로도 다양

wowy0211.tistory.com

 

728x90