Ubuntu 26.04에 LEMP 스택 설치

발행: (2026년 5월 14일 AM 06:43 GMT+9)
4 분 소요
원문: Dev.to

Ubuntu 26.04는 PHP 8.5를 기본으로 제공하여 최신 기반을 제공합니다. 이 가이드는 프로덕션 수준의 LEMP 스택을 설치하고, Let’s Encrypt 인증서로 보안 설정을 하며, MySQL에서 데이터를 읽어오는 PHP 페이지로 전체 설정을 검증합니다. 끝까지 따라하면 웹 애플리케이션을 호스팅할 수 있는 완전한 LEMP 서버가 준비됩니다.

Nginx 설치

  1. APT 패키지 인덱스 업데이트

    sudo apt update
  2. Nginx 설치

    sudo apt install nginx -y
  3. 서비스 활성화 및 시작

    sudo systemctl enable nginx
    sudo systemctl start nginx

MySQL 설치

  1. MySQL 서버 패키지 설치

    sudo apt install mysql-server -y
  2. 서비스 활성화 및 시작

    sudo systemctl enable mysql
    sudo systemctl start mysql
  3. 보안 스크립트 실행

    sudo mysql_secure_installation
  4. MySQL 쉘에서 root 비밀번호 설정

    sudo mysql
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';
    FLUSH PRIVILEGES;
    EXIT;

PHP 및 PHP‑FPM 설치

PHP‑FPM은 FastCGI 프로세스 풀을 통해 PHP 실행을 처리하며, mod_php보다 더 나은 격리와 성능을 제공합니다.

  1. PHP와 필요한 확장 모듈 설치

    sudo apt install php php-fpm php-mysql php-cli -y

    설치된 항목

    • php – 핵심 PHP 인터프리터
    • php-fpm – Nginx용 FastCGI Process Manager
    • php-mysql – PHP에서 MySQL 연결을 위한 드라이버
    • php-cli – 명령줄용 PHP 인터프리터
  2. PHP‑FPM 활성화 및 시작

    sudo systemctl enable php8.5-fpm
    sudo systemctl start php8.5-fpm
  3. 설치된 버전 확인

    php --version

방화벽 규칙 설정

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

가상 호스트 설정

  1. 웹 루트 디렉터리 생성

    sudo mkdir -p /var/www/app.example.com
    sudo chown -R www-data:www-data /var/www/app.example.com
  2. 테스트 HTML 페이지 생성

    echo "
    ## Hello from LEMP on Ubuntu 26.04
    " | sudo tee /var/www/app.example.com/index.html
  3. 가상 호스트 설정 파일 생성

    sudo nano /etc/nginx/sites-available/app.example.com.conf
    server {
        listen 80;
        server_name app.example.com;
        root /var/www/app.example.com;
        index index.php index.html;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.5-fpm.sock;
        }
    
        access_log /var/log/nginx/app.example.com-access.log;
        error_log  /var/log/nginx/app.example.com-error.log;
    }
  4. 사이트 활성화, 설정 테스트 및 Nginx 재로드

    sudo ln -s /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx

Let’s Encrypt SSL로 보안 설정

  1. Nginx 플러그인이 포함된 Certbot 설치

    sudo apt install certbot python3-certbot-nginx -y
  2. 인증서 생성 및 설치

    sudo certbot --nginx -d app.example.com --agree-tos

    Certbot은 가상 호스트를 자동으로 수정해 HTTP를 HTTPS로 리다이렉트합니다.

  3. 자동 갱신 타이머 테스트

    sudo certbot renew --dry-run

LEMP 스택 테스트

  1. 테스트 데이터베이스 생성

    mysql -u root -p
    CREATE DATABASE lemp_test;
    CREATE USER 'lemp_user'@'localhost' IDENTIFIED BY 'secure_password';
    GRANT ALL PRIVILEGES ON lemp_test.* TO 'lemp_user'@'localhost';
    USE lemp_test;
    CREATE TABLE greetings (
        id INT AUTO_INCREMENT PRIMARY KEY,
        message VARCHAR(255)
    );
    INSERT INTO greetings (message) VALUES ('LEMP stack is working!');
    FLUSH PRIVILEGES;
    EXIT;
  2. PHP 테스트 페이지 생성

    sudo nano /var/www/app.example.com/test.php
    connect_error) {
        die('Connection failed: ' . $conn->connect_error);
    }
    $result = $conn->query('SELECT message FROM greetings');
    while ($row = $result->fetch_assoc()) {
        echo $row['message'];
    }
    $conn->close();
    ?>
  3. 테스트 페이지 방문

    브라우저에서 https://app.example.com/test.php 를 엽니다.
    텍스트 **“LEMP stack is working!”

0 조회
Back to Blog

관련 글

더 보기 »

nginx에 zstd 지원 추가

!Cover image for Adding zstd support to nginxhttps://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-u...