웹사이트 검색

Debian 11에 LEMP 스택(Nginx, PHP 및 MariaDB) 설치


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 데비안 11(불스아이)
  • 데비안 7(Wheezy)

이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. Nginx 웹 서버 설치
  4. MariaDB 데이터베이스 서버 설치
  5. PHP 언어 설치
  6. Nginx용 가상 호스트 만들기\n
  7. Nginx에서 PHP 설치 확인\n
  8. 결론

LEMP 스택은 인터넷에서 웹 애플리케이션을 호스팅하는 데 사용되는 오픈 소스 소프트웨어 및 프레임워크 또는 라이브러리 세트입니다. 스택은 Linux 운영 체제, Nginx 웹 서버, MariaDB/MySQL 데이터베이스 서버 및 PHP 언어로 구성됩니다. LEMP는 훌륭한 커뮤니티 지원을 제공하며 전 세계의 많은 대규모 웹 애플리케이션에서 사용됩니다.

이 게시물에서는 Debian 11에 LEMP 스택을 설치하는 방법을 보여줍니다.

전제 조건

  • Debian 11을 실행하는 서버.\n
  • 서버 IP를 가리키는 유효한 도메인 이름입니다.\n
  • 루트 암호는 서버에서 구성됩니다.\n

시작하기

시작하기 전에 시스템 패키지를 최신 버전으로 업데이트하는 것이 좋습니다. 다음 명령을 사용하여 모든 패키지를 업데이트할 수 있습니다.

apt-get update -y

시스템이 업데이트되면 다음 단계를 진행할 수 있습니다.

Nginx 웹 서버 설치

Nginx는 이벤트 기반 아키텍처를 따르고 하나의 스레드 내에서 여러 요청을 처리할 수 있는 무료 오픈 소스 웹 서버입니다. 일반적으로 사용되는 응용 프로그램과 호환되며 정적 파일을 제공하는 데 사용됩니다.

기본적으로 Nginx 패키지는 Debian 11 기본 리포지토리에 포함되어 있습니다. 다음 명령을 사용하여 설치할 수 있습니다.

apt-get install nginx -y

Nginx가 설치되면 Nginx 서비스를 시작하고 시스템 재부팅 시 시작되도록 활성화합니다.

systemctl start nginx
systemctl enable nginx

다음 명령을 사용하여 설치된 Nginx 버전을 확인할 수도 있습니다.

nginx -v

다음 출력이 표시되어야 합니다.

nginx version: nginx/1.18.0

기본적으로 Nginx는 포트 80에서 실행됩니다. 다음 명령을 사용하여 확인할 수 있습니다.

ss -antpl | grep nginx

다음 출력이 표시되어야 합니다.

LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=44342,fd=8),("nginx",pid=44341,fd=8))
LISTEN 0      511             [::]:80           [::]:*    users:(("nginx",pid=44342,fd=9),("nginx",pid=44341,fd=9))

URL http://your-server-ip를 사용하여 Nginx 설치를 확인할 수도 있습니다. 다음 페이지에 Nginx 테스트 페이지가 표시되어야 합니다.

이 시점에서 Nginx 웹 서버가 설치됩니다. 이제 다음 단계를 진행할 수 있습니다.

MariaDB 데이터베이스 서버 설치

MariaDB는 웹 사이트의 데이터를 저장하고 관리하는 데 사용되는 오픈 소스 SQL 기반 데이터베이스입니다. 기본적으로 MariaDB 패키지는 Debian 11 기본 리포지토리에 포함되어 있습니다. 다음 명령을 사용하여 설치할 수 있습니다.

apt-get install mariadb-server -y

MariaDB 데이터베이스 서버가 설치되면 MariaDB 서비스를 시작하고 시스템 재부팅 시 시작되도록 활성화합니다.

systemctl start mariadb
systemctl enable mariadb

다음 명령을 사용하여 MariaDB 서비스의 상태를 확인할 수도 있습니다.

systemctl status mariadb

다음 출력이 표시되어야 합니다.

? mariadb.service - MariaDB 10.3.31 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-08-21 04:13:25 UTC; 1min 36s ago
       Docs: man:mysqld(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 1838 (mysqld)
     Status: "Taking your SQL requests now..."
      Tasks: 31 (limit: 2353)
     Memory: 66.1M
     CGroup: /system.slice/mariadb.service
             ??1838 /usr/sbin/mysqld

또한 MariaDB 설치를 보호하고 MariaDB 루트 암호를 설정하는 것이 좋습니다. mysql_secure_installation 스크립트를 실행하여 MariaDB 설치를 보호할 수 있습니다.

mysql_secure_installation

아래와 같이 MariaDB 루트 암호를 설정하고, 익명 사용자를 제거하고, 원격으로 루트 로그인을 허용하지 않고, 테스트 데이터베이스를 제거하라는 메시지가 표시됩니다.

Enter current password for root (enter for none): 
Change the root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

기본적으로 MariaDB는 포트 3306에서 실행됩니다. 다음 명령을 사용하여 확인할 수 있습니다.

ss -antpl | grep mariadb

다음 명령이 표시됩니다.

LISTEN 0      80         127.0.0.1:3306      0.0.0.0:*    users:(("mariadbd",pid=12181,fd=15))

MariaDB 셸을 연결하려면 다음 명령을 실행합니다.

mysql -u root -p

MariaDB 루트 암호를 제공하고 Enter 키를 눌러 MariaDB 셸에 연결합니다. 연결되면 다음 출력이 표시됩니다.

Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 64
Server version: 10.5.11-MariaDB-1 Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

이제 다음 명령을 실행하여 MariaDB 버전을 확인하십시오.

MariaDB [(none)]> SELECT VERSION();

다음 출력이 표시되어야 합니다.

+-------------------+
| VERSION()         |
+-------------------+
| 10.5.11-MariaDB-1 |
+-------------------+
1 row in set (0.001 sec)

이 시점에서 MariaDB 데이터베이스 서버가 설치되고 보호됩니다. 이제 다음 단계를 진행할 수 있습니다.

PHP 언어 설치

PHP는 Hypertext Preprocessor의 약자로 서버 측에서 사용되는 스크립팅 언어입니다. 오픈 소스이고 대규모 커뮤니티 지원을 제공하며 인터넷에서 PHP 애플리케이션을 호스팅하는 데 사용됩니다.

기본적으로 Debian 11에서 사용 가능한 PHP 버전은 PHP 7.4입니다. 다음 명령을 사용하여 일반적으로 사용되는 다른 확장과 함께 PHP를 설치할 수 있습니다.

apt-get install php php-fpm php-cli php-mysql php-zip php-curl php-xml -y

PHP가 설치되면 다음 명령을 사용하여 PHP 버전을 확인합니다.

php -v

다음 출력이 표시되어야 합니다.

PHP 7.4.21 (cli) (built: Jul  2 2021 03:59:48) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies

Nginx용 가상 호스트 생성

여기서는 PHP 페이지를 호스팅하기 위한 example.com 디렉토리를 생성합니다. 다음 명령으로 만들 수 있습니다.

mkdir /var/www/html/example.com

다음으로 example.com 디렉토리의 소유권을 www-data로 설정합니다.

chown -R www-data:www-data /var/www/html/example.com

다음으로 다음 명령을 사용하여 Nginx 가상 호스트 구성 파일을 만듭니다.

nano /etc/nginx/conf.d/example.conf

다음 줄을 추가합니다.

server {

  listen 80;
  server_name example.com;

  root /var/www/html/example.com;
  index index.php;
  access_log /var/log/nginx/example_access.log;
  error_log /var/log/nginx/example_error.log;

  client_max_body_size 100M;

  location / {
    try_files $uri $uri/ /index.php$is_args$args;
  }

  location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

}

파일을 저장하고 닫은 후 다음 명령을 사용하여 구성 오류가 있는지 Nginx를 확인합니다.

nginx -t

다음 출력이 표시되어야 합니다.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

그런 다음 Nginx 서비스를 다시 시작하여 구성 변경 사항을 적용합니다.

systemctl restart nginx

다음 명령을 사용하여 Nginx 서비스의 상태를 확인할 수도 있습니다.

systemctl status nginx

다음 출력이 표시되어야 합니다.

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-08-21 04:37:27 UTC; 5s ago
       Docs: man:nginx(8)
   Main PID: 4378 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 6.2M
     CGroup: /system.slice/nginx.service
             ??4378 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??4379 nginx: worker process

Aug 21 04:37:27 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 21 04:37:27 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Nginx에서 PHP 설치 확인

다음으로 Nginx 웹 서버를 통해 제공할 샘플 PHP 파일을 만들어야 합니다. example.com 디렉토리 안에 phpinfo.php 파일을 만들 수 있습니다.

nano /var/www/html/example.com/phpinfo.php

다음 줄을 추가합니다.

<?php phpinfo(); ?>

파일을 저장하고 닫은 다음 웹 브라우저를 열고 URL http://example.com/phpinfo.php를 사용하여 PHP 페이지에 액세스합니다. 다음 화면에 PHP 페이지가 표시되어야 합니다.

결론

위의 가이드에서 Debian 11에 LEMP 스택을 설치하는 방법을 설명했습니다. 이제 LEMP 스택을 사용하여 첫 번째 웹 사이트 호스팅을 시작할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.