Ubuntu 26.04에 LEMP 스택 설치
Ubuntu 26.04는 PHP 8.5를 기본으로 제공하여 최신 기반을 제공합니다. 이 가이드는 프로덕션 수준의 LEMP 스택을 설치하고, Let’s Encrypt 인증서로 보안 설정을 하며, MySQL에서 데이터를 읽어오는 PHP 페이지로 전체 설정을 검증합니다. 끝까지 따라하면 웹 애플리케이션을 호스팅할 수 있는 완전한 LEMP 서버가 준비됩니다.
Nginx 설치
-
APT 패키지 인덱스 업데이트
sudo apt update -
Nginx 설치
sudo apt install nginx -y -
서비스 활성화 및 시작
sudo systemctl enable nginx sudo systemctl start nginx
MySQL 설치
-
MySQL 서버 패키지 설치
sudo apt install mysql-server -y -
서비스 활성화 및 시작
sudo systemctl enable mysql sudo systemctl start mysql -
보안 스크립트 실행
sudo mysql_secure_installation -
MySQL 쉘에서 root 비밀번호 설정
sudo mysqlALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password'; FLUSH PRIVILEGES; EXIT;
PHP 및 PHP‑FPM 설치
PHP‑FPM은 FastCGI 프로세스 풀을 통해 PHP 실행을 처리하며, mod_php보다 더 나은 격리와 성능을 제공합니다.
-
PHP와 필요한 확장 모듈 설치
sudo apt install php php-fpm php-mysql php-cli -y설치된 항목
php– 핵심 PHP 인터프리터php-fpm– Nginx용 FastCGI Process Managerphp-mysql– PHP에서 MySQL 연결을 위한 드라이버php-cli– 명령줄용 PHP 인터프리터
-
PHP‑FPM 활성화 및 시작
sudo systemctl enable php8.5-fpm sudo systemctl start php8.5-fpm -
설치된 버전 확인
php --version
방화벽 규칙 설정
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
가상 호스트 설정
-
웹 루트 디렉터리 생성
sudo mkdir -p /var/www/app.example.com sudo chown -R www-data:www-data /var/www/app.example.com -
테스트 HTML 페이지 생성
echo " ## Hello from LEMP on Ubuntu 26.04 " | sudo tee /var/www/app.example.com/index.html -
가상 호스트 설정 파일 생성
sudo nano /etc/nginx/sites-available/app.example.com.confserver { 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; } -
사이트 활성화, 설정 테스트 및 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로 보안 설정
-
Nginx 플러그인이 포함된 Certbot 설치
sudo apt install certbot python3-certbot-nginx -y -
인증서 생성 및 설치
sudo certbot --nginx -d app.example.com --agree-tosCertbot은 가상 호스트를 자동으로 수정해 HTTP를 HTTPS로 리다이렉트합니다.
-
자동 갱신 타이머 테스트
sudo certbot renew --dry-run
LEMP 스택 테스트
-
테스트 데이터베이스 생성
mysql -u root -pCREATE 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; -
PHP 테스트 페이지 생성
sudo nano /var/www/app.example.com/test.phpconnect_error) { die('Connection failed: ' . $conn->connect_error); } $result = $conn->query('SELECT message FROM greetings'); while ($row = $result->fetch_assoc()) { echo $row['message']; } $conn->close(); ?> -
테스트 페이지 방문
브라우저에서
https://app.example.com/test.php를 엽니다.
텍스트 **“LEMP stack is working!”