NGINX 웹사이트를 ServBay의 Caddy 서버로 마이그레이션하기
ServBay는 Caddy, NGINX, Apache 등 다양한 인기 웹 서버가 통합된 강력한 로컬 웹 개발 환경입니다. ServBay는 특히 Caddy와 NGINX를 위해 주요 URL Rewrite 규칙을 미리 구성해 두어 개발자의 설정을 대폭 단순화합니다.
이 문서는 기존 NGINX 웹사이트를 ServBay 내장 Caddy 서버로 원활하게 이전하는 과정을 자세히 소개합니다. 대표적인 PHP 프레임워크인 Laravel과 콘텐츠 관리 시스템 WordPress를 예로 전체 마이그레이션 절차를 보여드립니다.
ServBay의 웹 서버 광범위 지원
ServBay는 Caddy, NGINX, Apache를 모두 지원하며, 프로젝트 성격에 맞게 기본 웹 서버를 유연하게 전환할 수 있습니다. 기본 웹 서버 전환 방법 문서를 참고해 더욱 자세한 내용을 확인하세요.
개요
웹사이트를 한 웹 서버에서 다른 서버로 마이그레이션할 때는 설정 파일과 사이트 파일의 이전이 필요합니다. ServBay에서는 Caddy로의 마이그레이션 절차가 매우 단순화되어 있습니다. 대부분의 PHP 기반 프레임워크 및 CMS(예: Laravel, WordPress, Symfony, CodeIgniter, Drupal, Joomla 등)는 ServBay에서 바로 사용할 수 있도록 지원되어 별도의 Caddy 설정 파일을 직접 작성하거나 수정할 필요가 없습니다. ServBay는 GUI에서 지정한 사이트 정보를 바탕으로 자동으로 Caddyfile을 생성합니다.
마이그레이션 전 준비 사항
마이그레이션 전에 아래 사항을 반드시 준비하세요.
- 웹사이트 파일 백업: 사이트 루트 디렉터리의 모든 파일과 폴더를 완전히 백업합니다.
- 데이터베이스 백업: 사이트에서 사용하는 데이터베이스(MySQL, PostgreSQL, MongoDB 등)를 백업합니다. ServBay는 내장 DB 관리 도구를 제공하며 수동 백업도 가능합니다.
- ServBay 설치: macOS 시스템에 ServBay가 성공적으로 설치 및 실행 중인지 확인하세요.
- 파일 위치 확인: 웹사이트 파일을 ServBay 기본 사이트 루트 디렉터리
/Applications/ServBay/www
혹은 그 하위 폴더에 위치시킵니다. 예를 들어, 프로젝트명이myproject
라면/Applications/ServBay/www/myproject
에 두세요.
ServBay에서의 Caddy 동작 방식
ServBay가 Caddy 구성을 어떻게 관리하는지 이해하는 것이 마이그레이션에 매우 중요합니다. 수동으로 Caddyfile을 관리하는 방식과 달리, ServBay는 GUI를 통해 손쉽게 사이트를 추가 및 설정할 수 있습니다. 사이트를 추가하면서 Caddy를 웹 서버로 선택하면, 입력한 도메인, 사이트 루트, PHP 버전 등의 정보를 바탕으로 Caddyfile 조각을 자동으로 생성 및 관리합니다. 이 구성 조각들은 ServBay의 메인 Caddyfile에 포함되어 사이트가 정상 동작하게 됩니다.
즉, ServBay GUI를 통해 사이트를 추가하는 것만으로 Caddy 설정이 마무리되며, .caddyfile
등의 텍스트 파일을 직접 편집할 필요가 없습니다.
마이그레이션 절차
NGINX 웹사이트를 ServBay의 Caddy 서버로 마이그레이션하는 과정은 매우 직관적입니다.
- ServBay 실행: ServBay 앱이 실행 중인지 확인합니다.
- 사이트 파일 배치: NGINX 웹사이트의 모든 파일(애플리케이션 코드, 이미지, CSS, JS 등)을 ServBay 사이트 루트 내 새로운 폴더(예:
/Applications/ServBay/www/your-site-name
)로 복사 또는 이동합니다. - ServBay GUI에서 사이트 추가:
- ServBay 앱을 엽니다.
- ‘웹사이트(Websites)’ 섹션으로 이동합니다.
- ‘사이트 추가’ 버튼을 클릭합니다.
- 아래 항목을 입력합니다:
- 도메인(Domain): 로컬에서 사이트에 접속할 도메인 입력(예:
your-site-name.servbay.demo
) - 사이트 루트(Website Root): 2단계에서 파일을 둔 경로 선택(예:
/Applications/ServBay/www/your-site-name
) - 웹 서버(Web Server):
Caddy
선택 - PHP 버전(PHP Version): 사이트에서 필요한 PHP 버전 선택
- 도메인(Domain): 로컬에서 사이트에 접속할 도메인 입력(예:
- ‘저장’ 또는 ‘생성’ 버튼 클릭
- 사이트 확인: ServBay가 자동으로 hosts 파일에 새 도메인을 등록하고 Caddy를 설정합니다. 브라우저에서 해당 도메인(예:
http://your-site-name.servbay.demo
)으로 접속해 사이트가 정상 표시되는지 확인합니다. - DB 설정: 사이트에 데이터베이스가 필요하다면, ServBay의 해당 DB(MySQL, PostgreSQL 등)가 실행 중인지 확인하고, 사이트 설정 파일에서 DB 접속 정보를 적절히 수정하세요(주소는 대개
127.0.0.1
혹은localhost
사용, 아이디와 비밀번호도 확인).
예시: Laravel 웹사이트 마이그레이션
일반적인 NGINX 설정 (참고용)
다음은 Laravel 웹사이트를 위한 NGINX 설정 파일의 예시입니다. 루트 경로, 진입 파일(index.php
), PHP FastCGI 설정 방법을 보여줍니다:
nginx
server {
listen 80;
server_name laravel.servbay.demo; # ServBay 브랜드 예시 도메인 사용
root /Applications/ServBay/www/laravel/public; # Laravel의 public 디렉토리를 가리킴
index index.php index.html index.htm;
location / {
# 파일이나 디렉토리가 없으면 index.php로 리라이트
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# PHP FastCGI 설정
include fastcgi_params;
# ServBay 기본 PHP-CGI 소켓 경로
fastcgi_pass unix:/Applications/ServBay/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
# 숨김 파일 접근 차단
deny all;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ServBay에서 자동 생성되는 Caddy 설정 (직접 작성 불필요)
Caddyfile 수동 설정 불필요
ServBay에서는 위와 같은 구성을 위해 Caddyfile을 직접 생성하거나 수정할 필요가 없습니다. GUI에서 사이트를 등록하면 필요한 Caddy 설정을 자동으로 만들어줍니다. 아래 Caddy 예시는 내부적으로 ServBay가 NGINX 설정을 어떻게 처리하는지 설명을 위한 참고용입니다.
아래는 위의 Laravel 웹사이트를 위해 ServBay가 자동으로 생성할 것으로 예상되는 Caddy 설정(간략화 버전)입니다. 실제로는 더 다양한 기능이 적용될 수 있습니다.
bash
# 이 설정은 ServBay가 자동 관리합니다
laravel.servbay.demo {
# 사이트 루트 설정
root * /Applications/ServBay/www/laravel/public
# PHP FastCGI 처리, ServBay의 PHP-CGI 소켓 지칭
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# 파일 서비스 활성화
file_server
# 정적 파일이 아닌 요청에 대한 매처
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
# 정적 파일이 아니면 index.php로 리라이트
rewrite @notStatic /index.php
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Laravel 마이그레이션 실제 절차:
- Laravel 프로젝트 파일을
/Applications/ServBay/www/laravel
에 복사합니다. laravel/public
폴더를 사이트의 진입점으로 설정하세요.- ServBay GUI에서 새 사이트 추가: 도메인
laravel.servbay.demo
, 사이트 루트/Applications/ServBay/www/laravel/public
, 웹 서버Caddy
선택. - Laravel의
.env
파일에서 데이터베이스 접속 정보를 올바르게 설정합니다. http://laravel.servbay.demo
로 접속하여 정상 동작을 확인합니다.
예시: WordPress 웹사이트 마이그레이션
일반적인 NGINX 설정 (참고용)
아래는 WordPress 웹사이트에서 주로 사용되는 NGINX 설정 예시입니다:
nginx
server {
listen 80;
server_name wordpress.servbay.demo; # ServBay 브랜드 예시 도메인 사용
root /Applications/ServBay/www/wordpress; # WordPress 설치 디렉토리 지정
index index.php index.html index.htm;
location / {
# WordPress 퍼머링크 규칙
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# PHP FastCGI 설정
include fastcgi_params;
# ServBay 기본 PHP-CGI 소켓 경로
fastcgi_pass unix:/Applications/ServBay/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
# 숨김 파일 접근 차단
deny all;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ServBay에서 자동 생성되는 Caddy 설정 (직접 작성 불필요)
Caddyfile 수동 설정 불필요
WordPress 역시 ServBay GUI가 Caddy 구성을 자동으로 관리합니다. 아래 예시는 ServBay가 어떻게 퍼머링크 처리 등 WordPress에 필요한 기능을 구현하는지 이해를 돕기 위한 참고용입니다.
아래는 위의 WordPress 사이트에 대해 ServBay가 생성하는 것으로 예상되는 Caddy 설정입니다:
bash
# 이 설정은 ServBay가 자동 관리합니다
wordpress.servbay.demo {
# 사이트 루트 설정
root * /Applications/ServBay/www/wordpress
# PHP FastCGI 처리
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# 파일 서비스 활성화
file_server
# 정적 파일이 아닌 요청에 대한 매처
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
# 정적 파일이 아니면 index.php로 리라이트(퍼머링크 구현)
rewrite @notStatic /index.php
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
WordPress 마이그레이션 실제 절차:
- WordPress 파일을
/Applications/ServBay/www/wordpress
에 복사합니다. - ServBay GUI에서 새 사이트 추가: 도메인
wordpress.servbay.demo
, 사이트 루트/Applications/ServBay/www/wordpress
, 웹 서버Caddy
선택. - WordPress의
wp-config.php
에서 올바른 데이터베이스 정보를 설정합니다. http://wordpress.servbay.demo
로 접속하여 사이트가 정상적으로 표시되는지 테스트합니다. 만약 퍼머링크 문제 발생 시, ServBay가 이미 Rewrite 규칙을 관리하므로 별도 설정 없이 WordPress 관리자의 ‘설정->고유주소’ 항목이 올바른지 확인하세요.
유의 사항
- DB 연결: 마이그레이션 후 사이트 코드의 데이터베이스 연결 정보를 반드시 ServBay DB 서비스로 수정하세요.
- 환경 변수: 앱이 특정 환경 변수에 의존한다면, ServBay 환경에서 이를 설정해 주세요(예: PHP
.env
또는 ServBay 환경 설정). - 복잡한 NGINX 설정: 본문 예시는 Laravel/WordPress 등 일반적인 설정에 초점을 맞췄습니다. NGINX에 복잡한 맞춤 규칙, 특정 모듈, 비표준 설정 등이 포함된 경우에는 ServBay의 자동 구성이 모두 적용되지 않을 수 있습니다. 이럴 땐 Caddy 공식 문서를 참고하거나, ServBay가 제공하는 Caddy 커스텀 추가 기능/확장점이 있다면 활용해 보세요. 하지만 대부분의 표준 애플리케이션에는 ServBay의 자동 구성이 충분합니다.
- HTTPS/SSL: ServBay는 로컬 사이트용 HTTPS 지원을 제공합니다. ServBay User CA 또는 Public CA로 로컬 SSL 인증서를 발급받고 신뢰할 수 있어, Caddy의 TLS 지시어를 직접 설정할 필요는 없습니다.
요약
NGINX 웹사이트를 ServBay의 Caddy 서버로 마이그레이션하는 과정은 ServBay의 자동 Caddy 구성 덕분에 매우 간편합니다. Laravel, WordPress 등 주요 애플리케이션의 경우, 지정한 디렉토리에 파일만 배치하고 GUI에서 사이트를 추가하면 됩니다. ServBay가 URL 리라이트, PHP FastCGI 등 주요 설정을 자동으로 처리해, Caddy로 로컬 개발 사이트를 빠르게 구동할 수 있습니다.