Ubuntu에서 Nginx + PHP + MariaDB 설치.

2025. 3. 23. 13:19·Computer/Server

소개

Ubuntu 서버에 웹 개발 환경을 구축하는 것은 많은 개발자와 시스템 관리자에게 필수적인 작업입니다.

이 가이드에서는 Ubuntu의 모든 버전(16.04, 18.04, 20.04, 22.04 등)에서 작동하는 Nginx, PHP, MariaDB 설치 방법을 단계별로 알아보겠습니다.

특히 Ubuntu 코드네임을 자동으로 감지하여 적용하는 방법을 통해 어떤 버전에서도 쉽게 설치할 수 있습니다.

준비 사항

  • Ubuntu 서버 (16.04 이상)
  • root 또는 sudo 권한이 있는 사용자 계정
  • 인터넷 연결

1. APT 저장소 최적화하기

1.1 기존 APT 저장소 초기화

먼저 기존에 등록되어 있는 APT 저장소를 초기화합니다:

sudo cat /dev/null > /etc/apt/sources.list

1.2 카카오 미러 저장소 등록

한국에서 접속 속도가 빠른 카카오 미러 저장소를 사용합니다:

echo "deb http://mirror.kakao.com/ubuntu `lsb_release -cs` main restricted universe multiverse
deb http://mirror.kakao.com/ubuntu `lsb_release -cs`-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu `lsb_release -cs`-security main restricted universe multiverse" | sudo tee /etc/apt/sources.list

팁: lsb_release -cs 명령어는 현재 Ubuntu의 코드네임(예: bionic, focal, jammy 등)을 자동으로 가져옵니다. 이를 통해 Ubuntu 버전에 관계없이 적절한 저장소를 사용할 수 있습니다.

1.3 패키지 정보 업데이트

저장소 변경 후 패키지 정보를 업데이트합니다:

sudo apt update

1.4 APT 관리 도구 설치

추가 저장소 관리를 위한 도구를 설치합니다:

sudo apt install software-properties-common

2. Nginx 설치 및 설정

2.1 Nginx 저장소 인증키 등록

공식 Nginx 저장소의 인증키를 등록합니다:

sudo curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -

2.2 Nginx 저장소 추가

안정적인(stable) 버전의 Nginx 저장소를 추가합니다:

echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

3. MariaDB 설치 및 설정

3.1 MariaDB 저장소 인증키 등록

MariaDB 공식 저장소의 인증키를 등록합니다:

sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'

3.2 MariaDB 저장소 추가

MariaDB 10.5 버전(작성 시점 기준 안정 버전)을 추가합니다:

echo "deb [arch=amd64,arm64,ppc64el] https://mirror.yongbok.net/mariadb/repo/10.5/ubuntu `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/mariadb.list

참고: 다른 버전의 MariaDB를 설치하려면 URL의 10.5 부분을 원하는 버전(예: 10.6, 10.7 등)으로 변경하세요. MariaDB 저장소 설정 가이드에서 더 많은 정보를 확인할 수 있습니다.

4. PHP 설치 및 설정

4.1 PHP 저장소 추가

최신 PHP 버전을 제공하는 Ondřej Surý의 PPA를 추가합니다:

sudo add-apt-repository ppa:ondrej/php

4.2 저장소 패키지 정보 업데이트

모든 저장소를 추가한 후 패키지 정보를 업데이트합니다:

sudo apt update

5. 웹 서버 스택 설치하기

5.1 Nginx 설치

웹 서버로 Nginx를 설치합니다:

sudo apt install nginx

설치 후 Nginx 상태 확인:

sudo systemctl status nginx

5.2 MariaDB 설치

데이터베이스 서버로 MariaDB를 설치합니다:

sudo apt install mariadb-server

MariaDB 보안 설정 실행(권장):

sudo mysql_secure_installation

5.3 PHP-FPM 설치

PHP 8.0과 FPM을 설치합니다:

sudo apt install php8.0-fpm

팁: 다른 버전의 PHP를 설치하려면 php8.0-fpm을 원하는 버전(예: php7.4-fpm, php8.1-fpm 등)으로 변경하세요.

5.4 필수 PHP 확장 모듈 설치

웹 개발에 필요한 주요 PHP 확장 모듈을 설치합니다:

sudo apt install php8.0-mbstring php8.0-gd php8.0-curl php8.0-xml php8.0-mysql php8.0-xdebug php8.0-zip

6. 설정 및 연동

6.1 Nginx와 PHP-FPM 연동 설정

Nginx 설정 파일을 편집하여 PHP 처리를 활성화합니다:

sudo nano /etc/nginx/conf.d/default.conf

다음과 같이 PHP 처리 설정을 추가합니다:

server {
    listen 80;
    server_name localhost;
    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

6.2 설정 테스트 및 서비스 재시작

Nginx 설정을 테스트하고 서비스를 재시작합니다:

sudo nginx -t
sudo systemctl restart nginx
sudo systemctl restart php8.0-fpm

7. 설치 확인

PHP 정보 페이지를 생성하여 설치를 확인합니다:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

이제 웹 브라우저에서 http://서버 IP/info.php에 접속하여 PHP 정보를 확인할 수 있습니다.

문제 해결 및 자주 묻는 질문

Q: Nginx와 PHP-FPM 연결 시 오류가 발생합니다.

A: PHP-FPM 소켓 경로를 확인하세요. sudo find / -name "php\*.sock"으로 정확한 경로를 찾을 수 있습니다.

Q: MariaDB에 원격으로 접속할 수 없습니다.

A: MariaDB 설정 파일(/etc/mysql/mariadb.conf.d/50-server.cnf)에서 bind-address를 확인하고 필요에 따라 수정하세요.

결론

이 가이드를 통해 Ubuntu 서버에 Nginx, PHP, MariaDB를 성공적으로 설치했습니다.

각 구성 요소는 최신 버전으로 설치되었으며, Ubuntu 코드네임 자동 감지 기능을 통해 모든 Ubuntu 버전에서 동일하게 적용할 수 있습니다.

웹 서버 환경 구축에 대한 추가 질문이나 문제가 있으면 댓글로 알려주세요!

참고 자료

  • Nginx 공식 문서
  • MariaDB 공식 문서
  • PHP 공식 문서
'Computer/Server' 카테고리의 다른 글
  • NFS mount : reason given by server: Permission denied 발생시..
MC02
MC02
  • MC02
    IT개발자의 생활
    MC02
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 세상사는이야기
        • MyStory
        • My K200D
        • 시끄러운거
        • 이것저것
        • 자장구 타기!
      • Computer
        • JAVA
        • JavaScript
        • CSS
        • PHP
        • iReport/Jasper
        • Oracle
        • Server
        • MySQL
  • 블로그 메뉴

    • HOME
    • TAG
    • MEDIA LOG
    • LOCATION LOG
    • GUEST BOOK
    • ADMIN
    • WRITE
  • 링크

    • ▒ 하늘아래 땅위에서 ▒
    • zestor.blog
    • TEARS - 덤벼라 세상아
    • 수공예악세사리-앤스다이아
  • 공지사항

  • 인기 글

  • 태그

    선릉
    개인정보유출
    오빠...
    한글/로마자변환기 조으다
    전남e조은뉴스
    소라광장
    프리스틴밸리
    촛불문화재
    도싸
    샤방벙말고헬벙
    PHP
    의료보험 민영화
    자포
    nginx
    laravel
    광나루
    두루미
    미국산쇠고기
    토요초급
    mariaDB
    분원리
    정보누출
    진달래
    대장잉어
    이명박
    ReflectionException
    k200D
    아이디 판매
    RouteServiceProvider
    다락재
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
MC02
Ubuntu에서 Nginx + PHP + MariaDB 설치.
상단으로

티스토리툴바