Ubuntu 우분투에서 웹 서버 환경 구축하기: Nginx, PHP,
페이지 정보

본문
우분투에서 웹 서버 환경 구축하기: Nginx, PHP, MariaDB 설치 가이드
안녕하세요! 이 가이드에서는 우분투 서버에 Nginx 웹 서버, PHP, 그리고 MariaDB 데이터베이스를 설치하고 구성하는 방법을 단계별로 안내해 드리겠습니다. 이 조합은 흔히 LEMP 스택(Linux, Nginx, MySQL/MariaDB, PHP)이라고 불리며, 웹 애플리케이션을 호스팅하기 위한 강력한 환경을 제공합니다.
목차
- 우분투 시스템 업데이트
- Nginx 웹 서버 설치
- PHP 설치 및 구성
- MariaDB 설치 및 보안 설정
- PHP와 Nginx 연동
- 웹 사이트 테스트
- 추가 설정 및 팁
1. 우분투 시스템 업데이트
먼저 시스템의 패키지 목록을 업데이트하고 설치된 패키지를 최신 버전으로 업그레이드합니다.
[code=bash]
패키지 목록 업데이트
sudo apt update
설치된 패키지 업그레이드
sudo apt upgrade -y [/code]
2. Nginx 웹 서버 설치
Nginx는 가볍고 성능이 좋은 웹 서버로, 많은 동시 연결을 효율적으로 처리할 수 있습니다.
[code=bash]
Nginx 설치
sudo apt install nginx -y
Nginx 서비스 시작
sudo systemctl start nginx
시스템 부팅 시 자동 시작되도록 설정
sudo systemctl enable nginx
Nginx 상태 확인
sudo systemctl status nginx [/code]
Nginx가 성공적으로 설치되었는지 확인하려면 웹 브라우저에서 서버의 IP 주소를 방문해보세요. Nginx 기본 페이지가 표시되어야 합니다.
3. PHP 설치 및 구성
Nginx와 함께 작동하려면 PHP-FPM(FastCGI Process Manager)을 설치해야 합니다.
[code=bash]
PHP 및 필요한 모듈 설치
sudo apt install php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip -y
PHP 버전 확인
php -v [/code]
PHP 설치가 완료되면 PHP 구성 파일을 수정하여 보안을 강화합니다.
[code=bash]
PHP 구성 파일 열기 (버전에 따라 경로가 다를 수 있습니다)
sudo nano /etc/php/8.1/fpm/php.ini [/code]
파일에서 다음 설정을 찾아 수정하세요:
[code=ini] ; 최대 업로드 파일 크기 제한 upload_max_filesize = 20M
; POST 데이터 최대 크기 post_max_size = 20M
; 메모리 제한 memory_limit = 256M
; 커넥션 타임아웃 max_execution_time = 30
; PHP 에러 로깅 (개발 환경에서만 On으로 설정) display_errors = Off error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT error_log = /var/log/php_errors.log [/code]
변경 후 PHP-FPM 서비스를 재시작합니다:
[code=bash] sudo systemctl restart php8.1-fpm [/code]
4. MariaDB 설치 및 보안 설정
MariaDB는 MySQL의 포크로, 호환성이 높으면서도 추가 기능과 개선 사항을 제공합니다.
[code=bash]
MariaDB 설치
sudo apt install mariadb-server mariadb-client -y
MariaDB 서비스 시작
sudo systemctl start mariadb
시스템 부팅 시 자동 시작되도록 설정
sudo systemctl enable mariadb
MariaDB 상태 확인
sudo systemctl status mariadb [/code]
MariaDB 초기 보안 설정을 위해 다음 명령을 실행합니다:
[code=bash] sudo mysql_secure_installation [/code]
이 스크립트는 다음 설정을 묻습니다:
- root 비밀번호 설정
- 익명 사용자 제거
- 원격 root 로그인 비활성화
- 테스트 데이터베이스 제거
- 권한 테이블 다시 로드
보안을 위해 모든 질문에 'Y'(예)로 답하는 것이 좋습니다.
데이터베이스 및 사용자 생성
웹 애플리케이션을 위한 데이터베이스와 사용자를 생성합니다:
[code=bash]
MariaDB에 root로 로그인
sudo mysql -u root -p
MariaDB 프롬프트에서 다음 명령 실행
[/code]
[code=sql] -- 새 데이터베이스 생성 CREATE DATABASE mywebsite;
-- 새 사용자 생성 및 권한 부여 CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'your_secure_password'; GRANT ALL PRIVILEGES ON mywebsite.* TO 'myuser'@'localhost'; FLUSH PRIVILEGES;
-- 변경사항 확인 SHOW GRANTS FOR 'myuser'@'localhost';
-- 종료 EXIT; [/code]
5. PHP와 Nginx 연동
Nginx가 PHP 파일을 처리할 수 있도록 서버 블록을 구성해야 합니다.
[code=bash]
기본 Nginx 구성 파일 수정
sudo nano /etc/nginx/sites-available/default [/code]
다음 구성으로 파일 내용을 대체하세요:
[code=nginx] server { listen 80 default_server; listen [::]:80 default_server;
# 웹 사이트 루트 디렉토리
root /var/www/html;
# 기본 index 파일
index index.php index.html index.htm;
# 서버 이름 (도메인 또는 IP)
server_name _;
location / {
try_files $uri $uri/ =404;
}
# PHP 파일 처리 설정
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# .htaccess 파일 접근 거부
location ~ /\.ht {
deny all;
}
} [/code]
PHP 버전이 다른 경우 fastcgi_pass
경로를 적절히 수정해주세요 (예: php7.4-fpm.sock).
구성을 저장하고 Nginx를 재시작합니다:
[code=bash]
Nginx 구성 테스트
sudo nginx -t
구성이 유효하면 Nginx 재시작
sudo systemctl restart nginx [/code]
6. 웹 사이트 테스트
PHP가 제대로 동작하는지 확인하기 위해 간단한 PHP 정보 파일을 생성합니다:
[code=bash]
PHP 정보 파일 생성
sudo nano /var/www/html/info.php [/code]
다음 내용을 추가합니다:
<?php phpinfo(); ?>
웹 브라우저에서 http://your_server_ip/info.php
를 방문하여 PHP 정보 페이지가 표시되는지 확인합니다.
테스트 후에는 보안을 위해 이 파일을 제거하는 것이 좋습니다:
[code=bash] sudo rm /var/www/html/info.php [/code]
7. 추가 설정 및 팁
파일 권한 설정
웹 서버가 파일을 읽고 쓸 수 있도록 적절한 권한을 설정합니다:
[code=bash]
웹 디렉토리 소유권 변경
sudo chown -R www-data:www-data /var/www/html
기본 권한 설정
sudo chmod -R 755 /var/www/html [/code]
방화벽 설정
UFW(Uncomplicated Firewall)를 사용하여 필요한 포트만 열어둡니다:
[code=bash]
UFW 설치
sudo apt install ufw -y
SSH, HTTP, HTTPS 허용
sudo ufw allow ssh sudo ufw allow http sudo ufw allow https
방화벽 활성화
sudo ufw enable
방화벽 상태 확인
sudo ufw status [/code]
SSL/TLS 인증서 설치 (HTTPS)
Let's Encrypt를 사용하여 무료 SSL 인증서를 설치할 수 있습니다:
[code=bash]
Certbot 설치
sudo apt install certbot python3-certbot-nginx -y
인증서 발급 및 Nginx 구성 자동 업데이트
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
인증서 자동 갱신 테스트
sudo certbot renew --dry-run [/code]
결론
이제 우분투 서버에 Nginx, PHP, MariaDB를 성공적으로 설치하고 구성했습니다. 이 환경에서 WordPress, Drupal, Laravel, 또는 기타 PHP 기반 웹 애플리케이션을 호스팅할 수 있습니다.
추가 문의나 문제가 있으면 댓글로 알려주세요. 행복한 웹 개발 되세요!
- 이전글우분투 터미널 마스터하기: 알아두면 유용한 명령어 단축키 25.03.28
댓글목록
등록된 댓글이 없습니다.