Ubuntu 22.04 + Nginx + PHP 8.2 서버 구축 + Mariadb - KeyTech | Hosting & WordPress

Ubuntu 22.04 + Nginx + PHP 8.2 서버 구축 + Mariadb

Ubuntu 22.04 + Nginx + PHP 8.2 서버 구축 + Mariadb

Ubuntu 22.04 + Nginx + PHP 8.2 서버 구축 + Mariadb로 웹 서버를 구축하는 방법을 단계별로 설명해드리겠습니다. 참고로 이 글은 제 워드프레스 첫 글입니다.

우리가 뭘 하더라도 일단 서버 업데이트는 되도록 해주세요.

sudo apt update && sudo apt upgrade -y

Introduction

웹 서버를 선택할 때 대표적인 두 가지 옵션으로 Apache2Nginx가 있어요. 둘 다 강력하지만, 특징과 사용 목적이 조금 달라서 상황에 따라 선택하면 됩니다.

간단 비교:

  • Apache2: 설정 쉬움, 유연성 높음, 소규모 사이트에 적합.
  • Nginx: 속도 빠름, 리소스 효율적, 대규모 트래픽에 강함.

📊 Apache2 vs Nginx 성능 비교

🔍 분석 결과

1️⃣ 초당 요청 처리 수 (Requests/sec)

💡 Nginx는 초당 1500개의 요청을 처리할 수 있지만, Apache2는 300개만 처리 가능. 즉, Nginx가 약 5배 빠른 성능을 보여줌.

2️⃣ 메모리 사용량 (Memory Usage)

💡 Apache2는 700MB의 메모리를 사용하지만, Nginx는 250MB만 사용. 따라서 리소스가 제한된 서버에서는 Nginx가 더 적합.

3️⃣ CPU 사용량 (CPU Usage)

💡 Apache2는 CPU 사용량이 80%로 높지만, Nginx는 40% 정도만 사용. 고부하 환경에서는 Nginx가 더 안정적.

✅ 결론

  • 트래픽이 많은 웹사이트는 Nginx가 더 적합
  • 리소스가 충분하고 .htaccess 등의 기능이 필요하면 Apache2도 고려
  • CPU 부하와 메모리 사용량이 중요한 경우 Nginx가 우세

목차

  1. 서버 환경 설정 및 패키지 업데이트
  2. Nginx 웹 서버 설치
  3. PHP 8.2 설치 및 설정
  4. MariaDB 데이터베이스 설치 및 설정
  5. 스왑 메모리 설정 (RAM 부족 시)
  6. Nginx + PHP + MariaDB 연동 및 테스트

🚀 1. 서버 환경 설정 및 패키지 업데이트

먼저 서버를 최신 상태로 유지하고 필요한 패키지를 업데이트합니다.

sudo apt update && sudo apt upgrade -y

기본적으로 필요한 유틸리티도 설치합니다.

sudo apt install -y curl unzip software-properties-common

⏰ 서버 시간(Timezone) 설정

서버의 기본 시간대는 UTC로 설정되어 있습니다. 한국 또는 원하는 지역의 시간대로 변경하려면 다음 명령어를 실행하세요.

현재 서버 시간을 확인합니다.

timedatectl

시간대를 변경하려면 다음 명령어를 실행합니다. (예: 한국 시간)

sudo timedatectl set-timezone Asia/Seoul

변경이 적용되었는지 확인합니다.

timedatectl

출력에서 Asia/Seoul (KST, +0900)이 표시되면 정상적으로 설정된 것입니다. 🎉

다음은 Nginx 웹 서버를 설치하는 과정입니다!

🌐 2. Nginx 웹 서버 설치

Ubuntu 22.04에서 최신 Nginx를 설치하려면 다음 명령어를 사용하세요.

sudo apt install -y nginx

Nginx 서비스를 실행하고, 부팅 시 자동 실행되도록 설정합니다.

sudo systemctl start nginx
sudo systemctl enable nginx

방화벽을 설정하여 웹 트래픽을 허용합니다.

sudo ufw allow 'Nginx Full'

이제 서버 IP를 웹 브라우저에서 입력하면 Nginx 기본 페이지가 보입니다. 🎉

🐘 3. PHP 8.2 설치 및 설정

PHP 8.2를 설치하기 위해 먼저 PPA 저장소를 추가합니다.

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

PHP 8.2 및 필수 확장 모듈을 설치합니다.

sudo apt install -y php8.2 php8.2-fpm php8.2-mysql php8.2-cli php8.2-curl php8.2-mbstring php8.2-xml php8.2-zip php8.2-gd php8.2-bcmath

설치 완료 후 PHP 버전을 확인하세요.

php -v

🗄 4. MariaDB 데이터베이스 설치 및 보안 설정

MariaDB를 설치하려면 다음 명령어를 사용하세요.

sudo apt install -y mariadb-server mariadb-client

MariaDB 서비스를 실행하고, 부팅 시 자동 시작되도록 설정합니다.

sudo systemctl start mariadb
sudo systemctl enable mariadb

보안 강화를 위해 설정 마법사를 실행합니다.

sudo mysql_secure_installation

새로운 데이터베이스와 유저를 생성하는 방법:

sudo mysql -u root -p
CREATE DATABASE mydb;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

💾 5. RAM 부족 시 스왑(Swap) 메모리 설정

RAM이 부족할 경우, 스왑 메모리를 추가하여 서버 성능을 개선할 수 있습니다. 스왑 메모리는 RAM이 부족할 때 디스크를 임시 메모리처럼 활용하는 기능입니다.

아래 명령어를 실행하여 자동으로 스왑 파일을 추가합니다.

wget -q https://raw.githubusercontent.com/laelbe/linux-simple-scripts/main/_server_tools/add_swapfile -O /root/add_swapfile
bash /root/add_swapfile 1

설정이 완료된 후 스왑 메모리 상태를 확인합니다.

free -m

📌 RAM 크기에 따른 스왑 메모리 설정

일반적으로 RAM 크기의 1.5배 ~ 2배 크기로 스왑을 설정하는 것이 권장됩니다. 하지만 RAM이 8GB 이상이라면, 스왑을 RAM 크기와 동일하게 설정하는 것이 일반적입니다.

RAM 크기 추천 스왑 크기 설정 명령어
1GB 2GB bash /root/add_swapfile 2
2GB 4GB bash /root/add_swapfile 4
4GB 6GB ~ 8GB bash /root/add_swapfile 6 또는 bash /root/add_swapfile 8
8GB 이상 8GB ~ 16GB bash /root/add_swapfile 8 또는 bash /root/add_swapfile 16

🧐 내 RAM 크기에 맞는 스왑 메모리 설정하기

현재 사용 중인 RAM 크기를 확인하려면 다음 명령어를 실행하세요.

free -m | grep Mem | awk '{print $2 "MB"}'

출력된 값이 RAM의 크기입니다. 예를 들어 “2048MB”가 출력되면, 2GB RAM이 장착된 것입니다. 해당 크기에 맞는 스왑 메모리를 위 표를 참고하여 설정하세요.

이제 적절한 크기의 스왑 파일을 생성하여 서버 성능을 최적화하세요! 🚀

🔄 6. Nginx + PHP 연동 및 테스트

이제 Nginx 설정을 수정하여 PHP와 연동합니다.

sudo nano /etc/nginx/sites-available/default

아래 내용을 찾아 수정하세요.

server {
    listen 80;
    server_name your_domain_or_ip;
    root /var/www/html;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

변경 후 Nginx를 다시 시작하세요.

sudo systemctl restart nginx

PHP 테스트 페이지를 생성합니다.

sudo nano /var/www/html/info.php
<?php
phpinfo();
?>

웹 브라우저에서 http://서버IP/info.php로 접속하여 PHP 정보가 나오면 정상 작동합니다. 🎉

테스트가 끝나면 보안을 위해 해당 파일을 삭제하세요.

sudo rm /var/www/html/info.php

🎯 마무리

이제 Ubuntu 22.04에서 Nginx + PHP 8.2 + MariaDB 서버가 완벽하게 구축되었습니다! 🚀

다음에는 Mysql, php, nginx 최적화에 대해서 작성하도록 하곘습니다. 작성 완료  후 아래에 링크를 걸어놓을께요. 


서버 최적화 방법 보러가기

Leave a Comment