su-tudy 님의 블로그
#5 웹 서버 구축 — Nginx 설치 & Virtual Hosting 본문
📌 실제 서비스처럼 웹 환경 구성하기
웹 서버는 클라이언트(웹 브라우저)가 HTTP 요청을 보내면 HTML 페이지나 파일을 응답해 주는 프로그램이다. 내 PC의 자원을 외부와 공유하는 것으로, 서버 운영의 핵심 역할을 담당한다.
하나의 서버에서 여러 서비스를 운영하려면 Virtual Hosting이 필요하다. 포트 번호나 도메인을 다르게 설정해 하나의 서버에서 여러 개의 독립된 웹사이트를 제공할 수 있다.
📌 미리 알아두면 좋은 개념들
❑ 패키지 설치 방법 비교
| 직접 빌드 | 패키지 매니저 (yum) → 실습에서 사용 |
| 소스코드를 직접 받아 컴파일하는 방식. 유연하지만 비개발자에게 어렵고 의존성 문제가 생기기 쉽다. | 미리 빌드된 실행 파일을 설치. 의존성 자동 해결, 버전 관리가 쉬워 가장 많이 쓰인다. rpm의 의존성 문제를 해결한 버전이다. |
❑ 주요 개념 정리
- yum repository : 수많은 패키지가 업로드된 거대 서버. 공식 repo 외에 사설 repo를 등록해서 더 많은 패키지를 설치할 수 있다.
- EPEL : Extra Pakages for Enterprise Linux. 기본 저장소에 없는 추가 패키지를 제공하는 repo. Nginx 최신 버전 설치에 활용된다.
- 웹루트 폴더 : 웹 서버의 시작 지점 디렉토리. 브라우저가 접속했을 때 보여줄 파일들이 위치하는 곳이다.
- Virtual Hosting : 하나의 서버에서 포트 번호 또는 도메인을 다르게 설정해 여러 개의 웹사이트를 동시에 운영하는 것.
📌 진행한 실습 과정 정리
❑ Nginx 최신 버전 설치
기본 yum 저장소는 최신 버전을 제공하지 않으므로 EPEL과 nginx 공식 repo를 추가한 후 설치한다.
# EPEL 저장소 추가
sudo yum install -y epel-release
# 설치된 패키지 업데이트
sudo yum update -y
# nginx 공식 repo 파일 생성 (최신 버전 설치를 위해)
sudo vim /etc/yum.repos.d/nginx.repo
# nginx.repo 파일에 아래 내용 추가
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0

# 저장 후 nginx 설치
sudo yum install -y nginx
# 버전 확인
nginx -v
# 상태 확인 (inactive(dead) = 설치만 된 상태)
sudo systemctl status nginx
# nginx 시작
sudo systemctl start nginx
# 부팅 시 자동 시작 설정
sudo systemctl enable nginx
# active(runnig) 확인
sudo systemctl status nginx
start는 지금 당장 켜는 것, enable은 재부팅 후에도 자동으로 켜지게 하는 것이다. 서버 운영 시 둘 다 설정해 두는 게 기본이다.


❑ nginx 프로세스 및 포트 확인
포트포워딩 설정 시 게스트 포트 번호를 입력해야 하므로, nginx가 실제로 어떤 포트에서 실행 중인지 먼저 확인한다.
# nginx 프로세스 번호(PID) 확인
sudo systemctl status nginx
# 관련 프로세스 정보 확인
sudo ps-ef | fgrep (프로세스_번호)
# 사용 중인 포트 확인
sudo netstat -nlp | fgrep nginx



❑ 포트포워딩으로 웹 접속 확인
- VirtualBox → 포트포워딩 → 규칙 추가 (호스트 포트 : 임의 설정 / 게스트 포트 : 80)
- 웹 브라우저에서
127.0.0.1:8080접속 Nginx 기본 페이지 확인


❑ 기본 웹루트 폴더 경로 변경
nginx 설정은 /etc/nginx/conf.d/ 아래에 .conf 파일로 관리한다. 기본 설정 파일인 default.conf를 수정해 웹루트 경로를 원하는 곳으로 바꿀 수 있다.
# nginx 설정 파일에서 include 경로 확인
sudo vim /etc/nginx/nginx.conf
:q 로 나가기
# 확인한 conf.d 디렉토리로 이동
cd /etc/nginx/conf.d
ls
# 기본 설정 파일 열기
sudo vim default.conf
# location 블록 안의 root 경로를 원하는 경로로 수정
location / {
root /web/site0/public; # 원하는 경로로 변경
index index.html index.htm;
}


❑ Virtual Hosting 설정 파일 생성
포트별로 다른 웹사이트를 제공하는 Virtual Hosting 설정 파일을 만든다.
# vhost 설정 파일 생성
sudo vim /etc/nginx/conf.d/vhost.conf
# 사이트별 포트와 경로 설정
server {
listen [포트번호];
server_name _;
location / {
root [웹루트_경로];
}
}

포트 → 웹루트 매핑 구조
:80 →/web/site0/public(기본)
:8011 →/web/site1/public
:8012 →/web/site2/public
server_name _ → _는 모든 도메인 허용. 특정 도메인만 받으려면 example.com으로 교체location / → /는 모든 경로 처리. 특정 경로만 처리하려면 /api, /blog 등으로 교체.# 설정 파일 수정 후 nginx 재시작 (반드시 재시작해야 적용)
sudo systemctl restart nginx
❑ 웹루트 폴더 생성 및 소유권 설정
# 루트(/)로 이동 후 설정 한 경로 폴더 생성
cd /
sudo mkdir -p /web/site0/public
sudo mkdir -p /web/site1/public
sudo mkdir -p /web/site2/public
# 소유권 확인
ls -al /web
# 내 계정으로 소유권 변경 (편하게 작업하기 위해)
sudo chown 계정이름:계정이름 -R /web
# 확인용 index 파일 생성
echo "site0" > /web/site0/public/index.html
echo "site1" > /web/site1/public/index.html
echo "site2" > /web/site2/public/index.html


❑ 포트포워딩 추가 및 접속 확인
- VirtualBox → 포트포워딩 → 규칙 추가 (8011, 8012 포트도 각각 게스트 포트와 동일하게 설정)
- 브라우저에서
127.0.0.1:8011,127.0.0.1:8012접속 - 각각 다른 내용이 출력되면 Virtual Hosting 성공




⚠️ 오류 / 주의
🚨 오류 — Systemctl restart 실패 시
설정 파일 문법이 틀리면 nginx 재시작이 실패한다. sudo nginx -t로 설정 파일 문법을 먼저 검사할 수 있다. 오류 메시지에 몇 번째 줄인 지 나오므로 해당 줄을 수정하면 된다.
📌 요약
✔️ EPEL과 nginx 공식 repo를 추가해 최신 버전 nginx 설치
✔️ nginx 시작 & 자동 시작 설정
✔️ default.conf 에서 기본 웹루트 경로 변경
✔️ vhost.conf를 생성해 포트별로 다른 웹사이트를 제공하는 Virtual Hosting 구현
✔️ 설정 파일 수정 후엔 항상 문법 검사 후 재시작
다음 편으로 이동 🔜 #6 데이터베이스 구축 — MariaDB & SQLYog
'리눅스 > Linux 실습' 카테고리의 다른 글
| #7 FTP 서버 구축 — Pure-FTPd & FileZilla & 호스트 전용 어댑터 (0) | 2024.12.10 |
|---|---|
| #6 데이터베이스 구축 — MariaDB & SQLyog (0) | 2024.12.09 |
| #4 보안 설정 — 방화벽(firewalld) & SELinux 비활성화 (0) | 2024.11.23 |
| #3 사용자 및 권한 관리 — sudo, chmod, chown (0) | 2024.11.13 |
| #2 네트워크 설정 — 랜카드 자동 활성화 & 고정 IP 변경 (0) | 2024.11.04 |