이 가이드는 Debian 12에 LEMP 스택(Nginx, MariaDB 및 PHP8.2)을 설치하는 방법을 보여줍니다. 소프트웨어 스택은 함께 번들로 제공되는 소프트웨어 도구 모음입니다. LEMP는 Linux, Nginx(Engine-X), MariaDB/MySQL 및 PHP를 의미하며 모두 오픈 소스이며 무료로 사용할 수 있습니다. 동적 웹사이트와 웹 애플리케이션을 지원하는 가장 일반적인 소프트웨어 스택입니다. Linux는 운영 체제입니다. Nginx는 웹 서버입니다. MariaDB/MySQL은 데이터베이스 서버이고 PHP는 동적 웹 페이지 생성을 담당하는 서버 측 스크립팅 언어입니다. 이 가이드에서는 루트로 설치합니다. 일반 루트가 있으면 sudo 명령을 사용하세요.
|
가장 자주 묻는 질문:
-
우리는 모든 데이터가 우리와 함께 있기를 원합니다. 우리 장비에서 이 모든 설정을 할 수 있나요?
예, 링크.
사전 구성된 서버 구성은 주문 양식에서 확인할 수 있습니다.
1. 소프트웨어 패키지 업데이트
LEMP 스택을 설치하기 전에 저장소와 소프트웨어 패키지를 업데이트하는 것이 좋습니다. Debian 12 OS에서 다음 명령을 실행합니다.
apt update
apt upgrade
2. Nginx 웹 서버 설치
Nginx는 요즘 매우 인기가 높은 고성능 웹 서버입니다. 리버스 프록시 및 캐싱 서버로도 사용할 수 있습니다. Nginx 웹 서버를 설치하려면 다음 명령을 입력하십시오.
apt install nginx
설치 후 다음 명령을 실행하여 Nginx가 부팅 시 자동으로 시작되도록 설정할 수 있습니다.
systemctl enable nginx
그런 다음 다음 명령으로 Nginx를 시작하십시오:
systemctl start nginx
이제 상태를 확인해보세요.
systemctl status nginx
이제 브라우저의 주소 표시줄에 Debian 12 서버의 공개 IP 주소를 입력하세요. "Welcome to Nginx" 웹 페이지가 표시되어야 합니다. 이는 Nginx 웹 서버가 올바르게 작동하고 있음을 의미합니다. 로컬 Debian 12 컴퓨터에 LEMP를 설치하는 경우 브라우저의 주소 표시줄에 127.0.0.1 또는 localhost를 입력하세요.
연결이 거부되거나 설정될 수 없는 경우 방화벽이 TCP 포트 80에서 들어오는 요청을 차단하고 있을 수 있습니다. iptables 방화벽을 사용하는 경우 TCP 포트 80을 열려면 다음 명령을 실행해야 합니다.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
UFW 방화벽을 사용하는 경우 이 명령을 실행하여 TCP 포트 80을 엽니다.
ufw allow http
이제 www-data(Nginx 사용자)를 웹 디렉토리의 소유자로 만들어야 합니다. 기본적으로 루트 사용자가 소유합니다.
chown www-data:www-data /usr/share/nginx/html -R
3. MariaDB 데이터베이스 서버 설치
MariaDB는 MySQL을 대체합니다. 이는 Oracle이 MySQL을 폐쇄 소스 제품으로 전환할 수 있다는 점을 우려하는 MySQL 팀의 전 구성원에 의해 개발되었습니다. Debian 12에 MariaDB를 설치하려면 다음 명령을 입력하십시오.
apt install mariadb-server mariadb-client
설치 후 MariaDB 서버가 자동으로 시작됩니다. systemctl을 사용하여 상태를 확인하세요.
systemctl status mariadb
실행 중이 아닌 경우 다음 명령으로 시작합니다.
systemctl start mariadb
부팅 시 MariaDB가 자동으로 시작되도록 하려면 다음을 실행하세요
systemctl enable mariadb
이제 설치 후 보안 스크립트를 실행하십시오.
mysql_secure_installation
MariaDB 루트 비밀번호를 입력하라는 메시지가 표시되면 루트 비밀번호가 아직 설정되지 않았으므로 Enter 키를 누르십시오. 그런 다음 y를 입력하여 MariaDB 서버의 루트 비밀번호를 설정하십시오.
그런 다음 Enter 키를 눌러 나머지 질문에 답하면 익명 사용자가 제거되고 원격 루트 로그인이 비활성화되며 테스트 데이터베이스가 삭제됩니다. 이 단계는 MariaDB 데이터베이스를 보호하기 위한 주요 요구 사항입니다. (Y는 대문자이므로 이것이 기본 답변임을 의미합니다.)
기본적으로 Debian의 MaraiDB 패키지는 사용자 인증을 위해 unix_socket을 사용합니다. 이는 기본적으로 OS 사용자 이름과 비밀번호를 사용하여 MariaDB 콘솔에 로그인할 수 있음을 의미합니다. 따라서 MariaDB 루트 비밀번호를 제공하지 않고도 다음 명령을 실행하여 로그인할 수 있습니다.
mariadb -u root
종료하려면 실행하세요
exit;
4. PHP8.2 설치
PHP8.2는 Debian 12 저장소에 포함되어 있으며 PHP7.x에 비해 성능이 약간 향상되었습니다. PHP8.2 및 일부 일반 확장을 설치하려면 다음 명령을 입력하십시오.
apt install php php-fpm php-mysql php-common php-cli php-common php-json php-opcache php-readline php-mbstring php-xml php-gd php-curl
PHP 확장은 일반적으로 WordPress와 같은 콘텐츠 관리 시스템(CMS)에 필요합니다. 예를 들어 설치 시 php8.2-xml이 누락된 경우 WordPress 사이트의 일부 페이지가 비어 있을 수 있으며 Nginx 오류 로그에서 다음과 같은 오류를 발견할 수 있습니다.
PHP 메시지: PHP Fatal Error: Unhandled Error: Undefined function call xml_parser_create()
이러한 PHP 확장을 설치하면 CMS가 원활하게 실행됩니다. 이제 php8.2-fpm을 실행하세요.
systemctl start php8.2-fpm
부팅 중 자동 재생을 활성화합니다.
systemctl enable php8.2-fpm
상태 확인:
systemctl status php8.2-fpm
5. Nginx 서버 블록 생성
Nginx 서버 블록은 Apache의 가상 호스트와 유사합니다. 기본 서버 블록은 PHP 코드 실행에 적합하지 않고 변경하면 엉망이 되기 때문에 사용하지 않을 것입니다. 따라서 다음 명령을 실행하여 사이트 사용 디렉터리에서 기본 심볼릭 링크를 제거합니다. (여전히 /etc/nginx/sites-available/default로 사용 가능합니다.)
rm /etc/nginx/sites-enabled/default
그런 다음 Nano와 같은 명령줄 텍스트 편집기를 사용하여 /etc/nginx/conf.d/ 디렉터리에 새 서버 블록 파일을 만듭니다. 다음 텍스트를 파일에 붙여넣습니다. 다음 코드 조각은 Nginx가 서버의 고유 이름을 사용하여 IPv4 포트 80 및 IPv6 포트 80을 수신하도록 만듭니다.
nano /etc/nginx/conf.d/default.conf
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
파일을 저장하고 닫습니다. (Nano 텍스트 편집기에서 파일을 저장하려면 Ctrl+O를 누른 다음 Enter를 눌러 확인하세요. 종료하려면 Ctrl+X를 누르세요.)
그런 다음 Nginx 구성을 테스트합니다.
nginx -t
테스트가 성공하면 Nginx를 다시 시작하세요.
systemctl reload nginx
6. PHP 테스트
Nginx 웹 서버로 PHP-FPM을 테스트하려면 webroot 디렉토리에 info.php 파일을 생성해야 합니다.
nano /usr/share/nginx/html/info.php
파일을 저장하고 닫습니다. 이제 브라우저 주소 표시줄에 server-ip-address/info.php를 입력하세요. 서버 IP 주소를 실제 IP 주소로 바꾸십시오. 로컬 컴퓨터에서 이 가이드를 따르는 경우 127.0.0.1/info.php 또는 localhost/info.php를 입력하세요.
서버의 PHP 정보가 표시됩니다. 이는 PHP 스크립트가 Nginx 웹 서버에서 제대로 작동할 수 있음을 의미합니다.
7. Nginx 자동 재시작
어떤 이유로 Nginx 프로세스가 중지된 경우 다음 명령을 실행하여 다시 시작해야 합니다.
systemctl restart nginx
이 명령을 수동으로 입력하는 대신 nginx.service systemd 시스템 모듈을 편집하여 Nginx를 자동으로 다시 시작하도록 할 수 있습니다. 기본 시스템 서비스 구성을 재정의하기 위해 별도의 디렉터리를 만듭니다.
mkdir -p /etc/systemd/system/nginx.service.d/
그런 다음 해당 디렉터리에 파일을 만듭니다.
nano /etc/systemd/system/nginx.service.d/restart.conf
파일에 다음 줄을 추가하면 실패가 감지된 후 5초 후에 Nginx가 자동으로 다시 시작됩니다. 기본 RetartSec는 100ms로 너무 짧습니다. RestartSec가 충분히 크지 않은 경우 Nginx는 "시작 요청이 너무 빨리 재시도됩니다"라고 불평할 수 있습니다.
[Service]
Restart=always
RestartSec=5s
파일을 저장하고 닫습니다. 그런 다음 변경 사항을 적용하려면 systemd를 다시 로드하세요.
systemctl daemon-reload
이것이 작동하는지 테스트하려면 다음을 사용하여 Nginx를 종료하십시오:
pkill nginx
그런 다음 Nginx의 상태를 확인하십시오. Nginx가 자동으로 다시 시작되는 것을 확인할 수 있습니다.
systemctl status nginx
LEMP(Nginx, MariaDB 및 PHP8.2)가 Debian 12에 성공적으로 설치되었습니다. 이 모든 단계는 주문 양식의 VPS 서버용 Debian 12 사전 설치된 LEMP 구성에서 이미 수행되었습니다.