Ubuntu 24.04 기반 고성능 웹서버(LEMP) 구축 가이드
느린 웹사이트는 방문자와 구글 검색 순위 모두를 잃게 만듭니다. 본 가이드는 단순한 설치를 넘어 실무에서 사용하는 최적화 설정을 그대로 반영했습니다. 불필요한 설명은 배제하고, 터미널에 바로 붙여넣어 10분 만에 전문가급 서버를 구축하는 과정을 정리합니다.시스템 준비 및 기본 설정
본격적인 스택 설치 전, 서버의 작업 환경을 구축하는 단계입니다. 시간대 설정과 메모리 확보를 통해 안정성을 높입니다.1.1 터미널 가독성 설정 (선택사항)
사용자명과 경로를 색상으로 구분하여 명령어 입력 시 가독성을 높입니다.1.2 시스템 업데이트 및 업그레이드
최신 보안 패치를 적용하여 서버 패키지 상태를 최신화합니다.1.3 한국 시간대(KST) 설정
서버 시스템 시간과 로그 기록 시간을 한국 표준시로 일치시킵니다.1.4 SWAP 메모리 설정 (2GB 권장)
메모리 부족 시 발생할 수 있는 서버 멈춤 현상을 방지하기 위해 가상 메모리를 할당합니다.1.5 시스템 사양 최종 점검
OS 버전, CPU, 메모리 상태를 마지막으로 확인합니다.Nginx 웹서버 설치 및 구성
Nginx는 가볍고 빠른 처리가 가능한 엔진으로, 최신 Ubuntu 24.04 저장소의 패키지를 사용하여 설치를 진행합니다.
2.1 Nginx 설치 및 실행
패키지를 설치하고 서버 부팅 시 자동으로 실행되도록 설정합니다.
sudo systemctl enable nginx
sudo systemctl start nginx
2.2 보안 및 성능 최적화 (nginx.conf)
보안을 위해 Nginx 버전을 숨기고, 전송 속도 향상을 위해 Gzip 압축을 활성화합니다.
sudo nano /etc/nginx/nginx.conf
파일 내부에서 다음 항목을 찾아 주석(#)을 제거하거나 수정하십시오.
gzip on; # 데이터 압축 전송 활성화
gzip_comp_level 5; # 압축 효율 설정 (1~9)
gzip_types text/plain text/css application/json application/javascript text/xml;
2.3 설정값 검사 및 적용
수정한 설정 파일에 문법적 오류가 없는지 확인한 뒤 서버에 적용합니다.
sudo systemctl reload nginx
PHP 8.3 설치 및 최적화
워드프레스와 같은 동적 웹사이트 구동을 위해 PHP 8.3을 설치합니다. 최신 엔진과 더불어 실행 속도를 획기적으로 높여주는 OPcache 설정을 포함합니다.3.1 PHP 8.3 및 필수 확장 모듈 설치
Nginx와 통신하기 위한 FPM 모듈 및 워드프레스 운영에 꼭 필요한 이미지 처리, 문자열, DB 연결 모듈을 함께 설치합니다.3.2 PHP-FPM 실행 및 자동 시작 설정
설치된 PHP 서비스가 정상적으로 동작하도록 실행 상태를 점검합니다.3.3 성능 최적화: OPcache 및 업로드 용량 설정
컴파일된 PHP 코드를 메모리에 캐싱하여 속도를 높이고, 워드프레스 테마나 이미지 업로드 시 용량 제한에 걸리지 않도록 설정값을 수정합니다.3.4 PHP 서비스 재시작
변경된 설정값을 시스템에 적용합니다.3.5 웹 디렉토리 권한 설정
PHP가 파일을 쓰고 수정할 수 있도록 웹 루트 폴더의 소유권을 변경합니다.
sudo chmod -R 755 /var/www/html
MariaDB 데이터베이스 서버 구축
웹사이트의 모든 데이터가 저장되는 엔진입니다. MySQL의 강력한 대안이자 고성능 오픈소스인 MariaDB를 설치하고 보안을 강화합니다.
4.1 MariaDB 설치 및 실행
Ubuntu 24.04 공식 저장소를 통해 MariaDB를 설치하고 서버 부팅 시 자동으로 실행되도록 설정합니다.
sudo systemctl enable mariadb
sudo systemctl start mariadb
4.2 MariaDB 보안 스크립트 실행
설치 직후 외부 침입을 방지하고 불필요한 테스트 데이터를 제거하기 위해 보안 설정을 진행합니다.
실행 시 나타나는 질문에 다음과 같이 답변하십시오.
2. Change the root password? : y (루트 비밀번호 설정)
3. Remove anonymous users? : y
4. Disallow root login remotely? : y
5. Remove test database and access to it? : y
6. Reload privilege tables now? : y
4.3 워드프레스용 데이터베이스 및 전용 계정 생성
보안을 위해 관리자(root) 계정 대신 특정 데이터베이스만 제어할 수 있는 전용 사용자 계정을 만듭니다.
sudo mariadb -u root -p
접속 후 아래 쿼리를 한 줄씩 입력하십시오. (your_password 부분은 본인만의 비밀번호로 수정)
CREATE USER ‘my_user’@’localhost’ IDENTIFIED BY ‘your_password’;
GRANT ALL PRIVILEGES ON my_website_db.* TO ‘my_user’@’localhost’;
FLUSH PRIVILEGES;
EXIT;
서버 최적화 및 가상 호스트 설정
Nginx와 PHP-FPM을 유기적으로 연결하고, 대량의 접속에도 안정적으로 구동될 수 있도록 성능을 쥐어짜는 최종 설정 단계입니다.
6.1 웹 파일 소유권 및 권한 교정
워드프레스에서 플러그인 설치나 이미지 업로드 시 발생하는 권한 오류를 방지하기 위해 파일 소유권을 웹 서버 계정으로 변경합니다.
sudo chown -R www-data:www-data /var/www/html
# 폴더 및 파일 권한 일괄 설정
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
6.2 Nginx 가상 호스트 설정 (PHP 연동)
Nginx가 PHP 파일을 인식하고 고성능으로 처리할 수 있도록 기본 설정 파일을 수정합니다.
기존 내용을 모두 지우고 아래 최적화된 설정값을 복사하여 붙여넣으십시오.
listen 80;
server_name yourdomain.com; # 도메인 또는 IP 입력
root /var/www/html;
index index.php index.html;
# 워드프레스 고유주소(Permalink) 설정 지원
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP-FPM 연동 및 보안 강화
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 정적 파일 캐싱 (이미지, CSS, JS 속도 향상)
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}
6.3 전체 서비스 재시작 및 연동 확인
지금까지의 모든 설정을 검사하고 서비스를 재시작하여 최종적으로 시스템을 가동합니다.
sudo nginx -t
# 설정에 문제가 없다면 서비스 재시작
sudo systemctl restart nginx
sudo systemctl restart php8.3-fpm
# PHP 연동 테스트 파일 생성
echo “<?php phpinfo(); ?>” | sudo tee /var/www/html/info.php
서버 최적화 및 가상 호스트 설정
Nginx와 PHP-FPM을 연결하고, 대량의 접속에도 안정적으로 구동될 수 있도록 성능을 극대화하는 최종 설정 단계입니다.
6.1 웹 파일 소유권 및 권한 교정
워드프레스에서 플러그인 설치나 이미지 업로드 시 발생하는 권한 오류를 원천 차단하기 위해 소유권을 변경합니다.
sudo chown -R www-data:www-data /var/www/html
# 폴더 및 파일 권한 일괄 설정
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
6.2 Nginx 가상 호스트 설정 (PHP 8.3 연동)
Nginx가 PHP 파일을 인식하고 고성능으로 처리할 수 있도록 기본 설정 파일을 수정합니다. 기존 내용은 모두 지우고 아래 최적화된 코드를 사용하세요.
listen 80;
server_name yourdomain.com; # 도메인 또는 서버 IP
root /var/www/html;
index index.php index.html;
# 워드프레스 고유주소(Permalink) 및 보안 설정
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP-FPM 8.3 소켓 연동
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 정적 파일 캐싱 (이미지, CSS, JS 속도 향상)
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}
6.3 통신 소켓 검증 및 최종 적용
Nginx와 PHP가 만나는 통로인 소켓 파일이 정확한 위치에 있는지 확인한 뒤 서비스를 재시작합니다.
ls -al /run/php/php8.3-fpm.sock
# Nginx 설정 문법 검사
sudo nginx -t
# 모든 서비스 재시작
sudo systemctl restart nginx
sudo systemctl restart php8.3-fpm
6.4 PHP 연동 최종 확인
브라우저를 통해 실제 서버가 PHP를 정상적으로 처리하는지 테스트합니다.
sudo rm /var/www/html/info.php
서버 구축 대장정이 완료되었습니다
기초 설정부터 보안 SSL 적용, 그리고 성능 최적화까지 모든 과정을 성공적으로 마치셨습니다.
이제 귀하의 서버는 수많은 방문자를 맞이할 준비가 된 고성능 상태입니다.
불필요한 리소스 낭비 없이, 오직 귀하의 콘텐츠에만 집중할 수 있는 환경이 마련되었습니다.
Keytechcore는 여러분의 성공적인 IT 운영을 응원합니다.