NginX + PHP 설치, 연동하는 방법 | Rocky Linux
개요
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] 버전을 기준으로 소개해보겠습니다.
패키지 업데이트
우선 패키지 관련한 보안-버그 수정 사항만 최소한으로 업데이트를 해보겠습니다.
dnf -y upgrade-minimal
dnf: Dandified YUM의 약자인dnf는 기존의 yum 패키지 관리자가 갖고 있던 여러 단점들을 수정, 업그레이드해서 Fedora 18 이후 버전에서 사용되고 있으며, Rocky Linux도 마찬가지로dnf를 기본 패키지 관리자로 사용하고 있습니다. 물론 호환성을 위해서 yum 명령어도 사용할 수 있습니다.
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
NginX 최신 버전 확인
NginX 공식 사이트에서 2024-07-29 기준 최신 버전 정보를 확인해보면 다음과 같습니다.
- [2024-04-23] nginx-
1.26.1
stable version - [2024-04-16] nginx-
1.27.0
mainline version
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
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
PHP 설치
버전 리스트
Ncloud Rocky Linux 8.10에서 지원하는 PHP 버전은 다음과 같이 확인해볼 수 있습니다.
리스트를 확인해보면 7.2버전이 기본이고, 8.2버전이 최신 버전인 것을 알 수 있습니다. 여기서는 최신 버전은 8.2버전을 설치해보겠습니다.
dnf module list php
PHP 8.2 활성화
dnf module reset php
dnf module enable php:8.2
PHP 8.2 설치
이제 PHP 8.2 버전을 설치하고 버전을 확인해보면 8.2.13 버전인 것을 알 수 있습니다.
dnf -y install php
php -v
디렉토리 설정
다음으로 홈으로 사용할 디렉토리를 생성하고, 해당 디렉토리의 소유권을 설정하겠습니다.
mkdir -p /ncloud/data/www/nginx-test/
chown -R nginx:nginx /ncloud/data/www/nginx-test
ls -al /ncloud/data/www/
환경 설정
설정 파일 위치
NginX 환경 설정 파일의 위치는 /etc/nginx/ 디렉토리입니다. tree 명령으로 해당 디렉토리에서 conf와 관련된 파일 리스트와 디렉토리 구조를 확인하면 다음과 같습니다. 이 중에서 참고해야 할 파일은 기본 설정 파일인 /etc/nginx/conf.d/default.conf 파일입니다.
tree -P *conf* /etc/nginx/
기본 설정 주석처리, IP 접속 차단
기본 설정 파일인 /etc/nginx/conf.d/default.conf 파일의 내용을 참고해서 서비스할 사이트 전용 환경 설정 파일을 만들고, 기본 설정 파일의 내용은 아래와 같이 수정해서 도메인 아닌 IP로 접속하는 경우를 차단하도록 설정합니다.
vim /etc/nginx/conf.d/default.conf
server {
listen 80 default_server;
server_name "";
return 444;
NginX 전용 상태코드
입니다.
환경 설정 파일 생성
테스트로 사용할 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;
}
}
환경 설정 오류 확인
NginX는 환경 설정 파일에 오류가 없는지 확인할 수 있는 방법이 있습니다. 아래 명령으로 확인을 해봅니다.
nginx -t
테스트 페이지 생성
웹사이트를 테스트할 페이지 index.php를 생성하고, 테스트용 PHP 코드를 입력해보겠습니다.
vim /ncloud/data/www/nginx-test/index.php
<?php
echo("<center><h1>NginX + PHP (server name: ".gethostname().")</h1></center>");
?>
NginX 실행
설정을 모두 마쳤으면 NginX를 실행하고 상태를 확인합니다.
systemctl enable nginx
systemctl start nginx
systemctl status nginx
hosts 파일 수정
지금과 같이 테스트용으로 임의 설정한 도메인(nginx-test.com)으로 접속하게 될 경우에는 hosts 파일을 수정해야 합니다.
실제 도메인을 사용할 경우에는 아래 과정이 필요 없기에
다음 단계로 바로 이동하시면 됩니다.
윈도우 10에서 hosts 파일은 C:\Windows\System32\drivers\etc 에 존재하는데 직접 수정할 수가 없으므로 다음과 같은 단계를 거쳐야 합니다.
- C:\Windows\System32\drivers\etc\hosts 파일을 임의의 작업 폴더 (예: D:\Work)로 복사합니다.
- 복사한 hosts 파일을 수정해서 123.456.789.123 nginx-test.com 처럼 접속할 IP 주소와 도메인을 추가합니다.
- 수정한 파일을 C:\Windows\System32\drivers\etc 위치로 덮어쓰기 합니다.
- 덮어쓰기 할 때 관리자 권한이 필요하다는 안내 메시지가 나타나면 [계속] 버튼을 클릭합니다.
사이트 접속
NginX와 PHP가 정상 작동하면 아래와 같이 사이트 접속 화면을 확인할 수 있습니다.
IP 접속 차단 확인
위에서 설정한 대로 도메인이 아닌 IP로 접속해보면 아래와 같이 접속이 차단되고 오류 메시지만 나타나는 것을 확인할 수 있습니다.
참고 URL
-
Rocky Linux 공식 가이드
https://docs.rockylinux.org/guides/ -
NginX 공식 사이트
https://nginx.org/ -
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 적용 |