Linux 에서 LNMP 배포

LinuxBeginner
지금 연습하기

소개

LNMP 는 네 가지 오픈 소스 소프트웨어 구성 요소, 즉 Linux, Nginx, MySQL 및 PHP 를 결합합니다. 이 스택은 동적 웹 애플리케이션 및 웹사이트를 구동하는 데 자주 사용됩니다. 각 구성 요소에 대한 간략한 개요는 다음과 같습니다.

  • Linux: 나머지 스택의 기반을 제공하는 운영 체제입니다.
  • Nginx: 상당한 트래픽을 처리하고 정적 콘텐츠를 효율적으로 제공할 수 있는 고성능 웹 서버 및 리버스 프록시 (reverse proxy) 입니다.
  • MySQL: 웹 애플리케이션을 위한 데이터를 저장하고 검색하는 신뢰할 수 있는 방법을 제공하는 인기 있는 관계형 데이터베이스 관리 시스템 (Relational Database Management System, RDBMS) 입니다.
  • PHP: 웹 개발에 널리 사용되는 스크립팅 언어로, 동적 HTML 콘텐츠를 생성하는 서버 측 코드를 작성할 수 있습니다.

이러한 구성 요소들은 함께 현대적인 웹 애플리케이션을 구축하고 배포하기 위한 강력하고 유연한 플랫폼을 형성합니다. LNMP 는 LAMP (Linux, Apache, MySQL, and PHP) 와 유사하지만 웹 서버로 Apache 대신 Nginx 를 사용합니다. Nginx 는 속도와 효율성으로 유명하며, 트래픽이 많은 사이트 및 애플리케이션에 대한 인기 있는 선택입니다.

Nginx 설치

다음은 Linux 시스템에 Nginx를 설치하는 구체적인 단계입니다.

  1. 패키지 목록 업데이트: 서버에서 패키지 목록을 업데이트하려면 다음 명령을 실행합니다.
sudo apt-get update
  1. 다음 명령을 사용하여 Nginx 를 설치합니다.
sudo apt-get install nginx
  1. Nginx가 성공적으로 설치되었는지 확인합니다.
nginx -v

다음 이미지는 Nginx가 성공적으로 설치되었으며 현재 설치된 버전이 1.18.0임을 나타냅니다.

nginx version: nginx/1.18.0

MySQL 설치

다음은 Linux 시스템에 MySQL 을 설치하는 구체적인 단계입니다.

  1. 다음 명령을 사용하여 MySQL 을 설치합니다.
sudo apt update
sudo apt-get install mysql-server
  1. MySQL 서버가 설치되었는지 확인합니다.
mysql --version

다음 그림은 MySQL 이 성공적으로 설치되었음을 나타냅니다.

mysql  Ver 8.0.35-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
  1. MySQL 이 시작되었는지 확인하고, 시작되지 않았다면 다음 명령으로 시작합니다.
sudo systemctl status mysql
sudo systemctl start mysql

PHP 설치

다음은 Linux 시스템에 PHP 를 설치하는 구체적인 단계입니다.

  1. PHP 및 관련 모듈 설치: 다음 명령을 사용하여 PHP 및 관련 모듈을 설치합니다.
sudo apt update
sudo apt-get install php8.1-fpm php-mysql

이렇게 하면 PHP FastCGI Process Manager (php-fpm) 과 PHP 용 MySQL 확장 (php-mysql) 이 설치됩니다.

  1. PHP 버전을 확인합니다.
sudo php -v

다음 그림은 PHP 가 성공적으로 설치되었음을 나타냅니다.

PHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)

Nginx 설정

Nginx 가 설치되면 다른 구성 요소와 함께 작동하도록 구성해야 합니다. 다음 단계에 따라 구성합니다.

  1. Nginx 구성 파일 /etc/nginx/sites-available/default를 편집합니다.
sudo vim /etc/nginx/sites-available/default
  1. 기존 내용을 다음 내용으로 바꿉니다.
server {
     listen 80 default_server;
     listen [::]:80 default_server;

     root /var/www/html;
     index index.php index.html index.htm index.nginx-debian.html;

     server_name _;

     location / {
            index index.php index.html index.htm;
        }

     location ~ \.php$ {
            fastcgi_pass unix:/run/php/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
}
  1. Nginx 구성이 올바른지 확인합니다.
sudo nginx -t
  1. Nginx 를 다시 로드합니다.
sudo nginx -s reload

MySQL 설정

  1. MySQL 에 접속하려면 다음 명령을 실행합니다.
sudo mysql
  1. root 사용자 비밀번호를 설정하려면 다음 명령을 실행합니다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql@1234'
  1. MySQL 데이터베이스를 종료하려면 다음 명령을 실행합니다.
exit

PHP 설정

  1. PHP 정보를 표시하기 위해 새로운 phpinfo.php 파일을 생성하고 편집합니다.
sudo vim /var/www/html/phpinfo.php

다음 내용을 작성합니다.

<?php echo phpinfo(); ?>

팁: /var/www/html은 사이트 루트 디렉토리이며, cat /etc/nginx/sites-enabled/default 명령을 실행하여 확인할 수 있습니다.

  1. PHP-FPM 시작: 설치가 완료되면 다음 명령을 사용하여 PHP-FPM 서비스를 시작합니다.
sudo systemctl start php8.1-fpm

팁: PHP-FPM 서비스의 정확한 이름은 Linux 배포판 및 PHP 버전에 따라 다를 수 있습니다.

  1. 부팅 시 PHP-FPM 을 활성화: 서버가 부팅될 때 PHP-FPM 이 자동으로 시작되도록 하려면 다음 명령을 실행합니다.
sudo systemctl enable php8.1-fpm

확인

브라우저의 주소창에 http://127.0.0.1/phpinfo.php를 입력하여 접속합니다.

접속 결과는 아래와 같으며, PHP 설정 정보 페이지가 성공적으로 표시되면 LNMP 환경이 성공적으로 배포된 것입니다.

PHP info page displayed

또는 curl 명령을 사용하여 확인할 수 있습니다.

curl http://127.0.0.1/phpinfo.php -I

요약

이 단계를 완료하면 LNMP 스택을 성공적으로 배포한 것입니다. 웹사이트 코드를 /var/www/html 디렉토리에 넣고 웹사이트에 접속하여 제대로 실행되는지 확인할 수 있습니다.