개요

Ncloud (네이버 클라우드) Rocky Linux(록키 리눅스)에 NginX와 PHP를 설치하고 연동하는 방법을 정리해보겠습니다.

설치 환경

  • Rocky Linux: 8.10
  • NginX: 1.27.0
  • PHP: 8.2

서버 준비

Ncloud에서는 현재 Rocky Linux 8.6, 8.8, 8.10 버전을 VPC 환경에서 제공하고 있습니다. 여기서는 [8.10] 버전을 기준으로 소개해보겠습니다.

Ncloud(네이버 클라우드)에서 제공하기 시작한 록키 리눅스 소개

패키지 업데이트

우선 패키지 관련한 보안-버그 수정 사항만 최소한으로 업데이트를 해보겠습니다.

  dnf -y upgrade-minimal
  
Ncloud(네이버 클라우드)에서 제공하기 시작한 록키 리눅스 소개

NginX 설치 준비

NginX 버전 리스트

Ncloud Rocky Linux 8.10에서 지원하는 NginX 버전을 확인합니다.
리스트를 살펴보면 1.14가 기본 버전이고, 1.24버전까지 포함되어 있으며, 현재 활성화된 버전은 없는 것을 알 수 있습니다.

   dnf module list nginx
  
  • nginx 1.14 (default)
  • nginx 1.16
  • nginx 1.18
  • nginx 1.20
  • nginx 1.22
  • nginx 1.24
Ncloud(네이버 클라우드)에서 제공하기 시작한 록키 리눅스 소개

NginX 최신 버전 확인

NginX 공식 사이트에서 2024-07-29 기준 최신 버전 정보를 확인해보면 다음과 같습니다.

  • [2024-04-23] nginx-1.26.1 stable version
  • [2024-04-16] nginx-1.27.0 mainline version
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

Repository 설정

우선, NginX package를 다운 받아 설치하기 위한 Repository를 설정해야 합니다. Repository 디렉토리에 nginx.repo 파일을 만들고 아래와 같은 내용을 입력합니다.

   vim /etc/yum.repos.d/nginx.repo
  
  [nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/8/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/8/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

NginX 설치

여기서는 1.27.0 버전인 mainline 버전을 설치합니다.

  • [dnf config-manager] 기능을 사용해 stable 버전을 비활성화 합니다.
  • [dnf config-manager] 기능을 사용해 mainline 버전을 활성화 합니다.
   dnf config-manager --disable nginx-stable
 dnf config-manager --enable nginx-mainline
  
   dnf -y install nginx
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

PHP 설치

버전 리스트

Ncloud Rocky Linux 8.10에서 지원하는 PHP 버전은 다음과 같이 확인해볼 수 있습니다.
리스트를 확인해보면 7.2버전이 기본이고, 8.2버전이 최신 버전인 것을 알 수 있습니다. 여기서는 최신 버전은 8.2버전을 설치해보겠습니다.

  dnf module list php
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

PHP 8.2 활성화

  dnf module reset php
dnf module enable php:8.2
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

PHP 8.2 설치

이제 PHP 8.2 버전을 설치하고 버전을 확인해보면 8.2.13 버전인 것을 알 수 있습니다.

  dnf -y install php
php -v
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

디렉토리 설정

다음으로 홈으로 사용할 디렉토리를 생성하고, 해당 디렉토리의 소유권을 설정하겠습니다.

  mkdir -p /ncloud/data/www/nginx-test/
chown -R nginx:nginx /ncloud/data/www/nginx-test
ls -al /ncloud/data/www/
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

환경 설정

설정 파일 위치

NginX 환경 설정 파일의 위치는 /etc/nginx/ 디렉토리입니다. tree 명령으로 해당 디렉토리에서 conf와 관련된 파일 리스트와 디렉토리 구조를 확인하면 다음과 같습니다. 이 중에서 참고해야 할 파일은 기본 설정 파일인 /etc/nginx/conf.d/default.conf 파일입니다.

  tree -P *conf* /etc/nginx/
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

기본 설정 주석처리, IP 접속 차단

기본 설정 파일인 /etc/nginx/conf.d/default.conf 파일의 내용을 참고해서 서비스할 사이트 전용 환경 설정 파일을 만들고, 기본 설정 파일의 내용은 아래와 같이 수정해서 도메인 아닌 IP로 접속하는 경우를 차단하도록 설정합니다.

  vim /etc/nginx/conf.d/default.conf
  
  server {
    listen 80 default_server;
    server_name "";
    return 444;
  
위 설정에서 return 444에 적혀 있는 HTTP 상태코드 444는 일반적인 표준 상태코드는 아니고, 사전에 허용되지 않은 접근인 경우 연결을 차단하는 용도로 사용되는 NginX 전용 상태코드입니다.
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

환경 설정 파일 생성

테스트로 사용할 nginx-test.com 이라는 도메인의 사이트 설정을 nginx-test.conf 설정 파일을 생성해서 저장합니다.
여기서 핵심이 되는 부분은 아래쪽에 있는 location ~ \.php$ {로 시작되는 PHP 연동 설정 부분입니다.

  vim /etc/nginx/conf.d/nginx-test.conf
  
  server {
    listen    80;

    # 사이트 도메인 설정
    server_name    nginx-test.com www.nginx-test.com;

    # 홈 디렉토리, 기본 문서 설정
    root      /ncloud/data/www/nginx-test;
    index     index.php index.html;

    # 접속 로그 설정
    access_log  /var/log/nginx/nginx-test.com.access.log  main;

    # 404 error 페이지 설정
    error_page 404 /404.html;
      location = /404.html {
    }

    # 50x error 페이지 설정
    error_page 500 502 503 504 /50x.html;
      location = /50x.html {
      root    /ncloud/data/www/nginx-test;
    }
    
    # PHP 연동 설정
    location ~ \.php$ {    
        fastcgi_pass  unix:/run/php-fpm/www.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # .htaccess 파일 접근 금지 설정
    location ~ /\.ht {
      deny    all;
    }
}
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

환경 설정 오류 확인

NginX는 환경 설정 파일에 오류가 없는지 확인할 수 있는 방법이 있습니다. 아래 명령으로 확인을 해봅니다.

  nginx -t
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

테스트 페이지 생성

웹사이트를 테스트할 페이지 index.php를 생성하고, 테스트용 PHP 코드를 입력해보겠습니다.

  vim /ncloud/data/www/nginx-test/index.php
  
  <?php 
    echo("<center><h1>NginX + PHP (server name: ".gethostname().")</h1></center>"); 
?>
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

NginX 실행

설정을 모두 마쳤으면 NginX를 실행하고 상태를 확인합니다.

  systemctl enable nginx
systemctl start nginx
systemctl status nginx
  
Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

hosts 파일 수정

지금과 같이 테스트용으로 임의 설정한 도메인(nginx-test.com)으로 접속하게 될 경우에는 hosts 파일을 수정해야 합니다.
실제 도메인을 사용할 경우에는 아래 과정이 필요 없기에 다음 단계로 바로 이동하시면 됩니다.

윈도우 10에서 hosts 파일은 C:\Windows\System32\drivers\etc 에 존재하는데 직접 수정할 수가 없으므로 다음과 같은 단계를 거쳐야 합니다.

  1. C:\Windows\System32\drivers\etc\hosts 파일을 임의의 작업 폴더 (예: D:\Work)로 복사합니다.
  2. 복사한 hosts 파일을 수정해서 123.456.789.123 nginx-test.com 처럼 접속할 IP 주소와 도메인을 추가합니다.
  3. 수정한 파일을 C:\Windows\System32\drivers\etc 위치로 덮어쓰기 합니다.
  4. 덮어쓰기 할 때 관리자 권한이 필요하다는 안내 메시지가 나타나면 [계속] 버튼을 클릭합니다.
Ncloud Rocky Linux 서버에 NginX를 Package로 치하고 기본 설정을 하는 방법 Ncloud CentOS 서버에 NginX SSL 인증서를 설정하는 방법 Ncloud CentOS 서버에 NginX SSL 인증서를 설정하는 방법

사이트 접속

NginX와 PHP가 정상 작동하면 아래와 같이 사이트 접속 화면을 확인할 수 있습니다.

Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

IP 접속 차단 확인

위에서 설정한 대로 도메인이 아닌 IP로 접속해보면 아래와 같이 접속이 차단되고 오류 메시지만 나타나는 것을 확인할 수 있습니다.

Ncloud(네이버 클라우드)에서 제공하는 록키 리눅스 (Rocky Linux) 8.10버전에 NginX와 PHP를 설치, 연동하는 방법

참고 URL

  1. Rocky Linux 공식 가이드
    https://docs.rockylinux.org/guides/

  2. NginX 공식 사이트
    https://nginx.org/

  3. Rocky Linux PHP, PHP-FRM 설정
    https://docs.rockylinux.org/guides/web/php/

문서 업데이트 내역

날짜 내용
2024-06-17 문서 최초 생성
2024-07-29 Rocky Linxu 8.10, PHP 8.2 적용