Skip to content

Laravel Valet

소개

lightbulb

macOS 또는 Windows에서 Laravel 애플리케이션을 개발하는 더 쉬운 방법을 찾고 계신가요? Laravel Herd를 확인해 보세요. Herd에는 Valet, PHP 및 Composer를 포함하여 Laravel 개발을 시작하는 데 필요한 모든 것이 포함되어 있습니다.

Laravel Valet은 macOS 미니멀리스트를 위한 개발 환경입니다. Laravel Valet은 Mac이 시작될 때 백그라운드에서 항상 Nginx를 실행하도록 구성합니다. 그런 다음 DnsMasq를 사용하여 Valet은 *.test 도메인의 모든 요청을 로컬 머신에 설치된 사이트를 가리키도록 프록시합니다.

다시 말해, Valet은 약 7MB의 RAM을 사용하는 매우 빠른 Laravel 개발 환경입니다. Valet은 Sail 또는 Homestead를 완전히 대체하는 것은 아니지만, 유연한 기본 기능을 원하거나, 매우 빠른 속도를 선호하거나, 제한된 양의 RAM을 가진 컴퓨터에서 작업하는 경우 훌륭한 대안을 제공합니다.

기본적으로 Valet은 다음을 포함하지만 이에 국한되지는 않는 지원을 제공합니다.

그러나 자체 사용자 정의 드라이버로 Valet을 확장할 수 있습니다.

설치

exclamation

Valet에는 macOS 및 Homebrew가 필요합니다. 설치하기 전에 Apache 또는 Nginx와 같은 다른 프로그램이 로컬 컴퓨터의 80 포트에 바인딩되어 있지 않은지 확인해야 합니다.

시작하려면 먼저 update 명령어를 사용하여 Homebrew가 최신 상태인지 확인해야 합니다.

brew update

다음으로, Homebrew를 사용하여 PHP를 설치해야 합니다:

brew install php

PHP를 설치한 후에는 Composer 패키지 관리자를 설치할 준비가 되었습니다. 또한 $HOME/.composer/vendor/bin 디렉토리가 시스템의 "PATH"에 있는지 확인해야 합니다. Composer가 설치되면 Laravel Valet을 글로벌 Composer 패키지로 설치할 수 있습니다:

composer global require laravel/valet

마지막으로, Valet의 install 명령을 실행할 수 있습니다. 그러면 Valet 및 DnsMasq가 구성되고 설치됩니다. 또한 Valet이 의존하는 데몬이 시스템 시작 시 실행되도록 구성됩니다:

valet install

Valet이 설치되면 ping foobar.test와 같은 명령을 사용하여 터미널에서 *.test 도메인을 핑해 보십시오. Valet이 올바르게 설치되었다면 이 도메인이 127.0.0.1에서 응답하는 것을 볼 수 있습니다.

Valet은 컴퓨터가 부팅될 때마다 필요한 서비스를 자동으로 시작합니다.

PHP 버전

lightbulb

글로벌 PHP 버전을 수정하는 대신 isolate 명령을 통해 사이트별 PHP 버전을 사용하도록 Valet에 지시할 수 있습니다.

Valet을 사용하면 valet use php@version 명령을 사용하여 PHP 버전을 전환할 수 있습니다. Valet은 지정된 PHP 버전이 아직 설치되지 않은 경우 Homebrew를 통해 설치합니다:

 
valet use php

또한 프로젝트의 루트에 .valetrc 파일을 만들 수 있습니다. .valetrc 파일에는 사이트에서 사용해야 하는 PHP 버전이 포함되어야 합니다:

php=php@8.2

이 파일이 생성되면 간단히 valet use 명령을 실행하면 명령어가 해당 파일을 읽어 사이트의 선호하는 PHP 버전을 결정합니다.

exclamation

Valet은 여러 PHP 버전이 설치되어 있어도 한 번에 하나의 PHP 버전만 제공합니다.

데이터베이스

애플리케이션에 데이터베이스가 필요한 경우, MySQL, PostgreSQL 및 Redis를 포함하는 무료 올인원 데이터베이스 관리 도구인 DBngin을 확인해 보세요. DBngin이 설치되면 root 사용자 이름과 빈 문자열을 비밀번호로 사용하여 127.0.0.1에서 데이터베이스에 연결할 수 있습니다.

설치 재설정

Valet 설치를 제대로 실행하는 데 문제가 있는 경우, composer global require laravel/valet 명령을 실행한 다음 valet install을 실행하면 설치가 재설정되고 다양한 문제가 해결될 수 있습니다. 드문 경우이지만 valet uninstall --force를 실행한 다음 valet install을 실행하여 Valet을 "하드 리셋"해야 할 수도 있습니다.

Valet 업그레이드

터미널에서 composer global require laravel/valet 명령을 실행하여 Valet 설치를 업데이트할 수 있습니다. 업그레이드 후에는 Valet이 필요한 경우 구성 파일을 추가로 업그레이드할 수 있도록 valet install 명령을 실행하는 것이 좋습니다.

Valet 4로 업그레이드

Valet 3에서 Valet 4로 업그레이드하는 경우, Valet 설치를 올바르게 업그레이드하려면 다음 단계를 따르십시오.

  • 사이트의 PHP 버전을 사용자 지정하기 위해 .valetphprc 파일을 추가한 경우, 각 .valetphprc 파일 이름을 .valetrc로 바꿉니다. 그런 다음, .valetrc 파일의 기존 콘텐츠 앞에 php=를 추가합니다.
  • 새로운 드라이버 시스템의 네임스페이스, 확장자, 타입 힌트 및 반환 타입 힌트와 일치하도록 사용자 정의 드라이버를 업데이트합니다. Valet의 SampleValetDriver를 예로 참조할 수 있습니다.
  • 사이트를 제공하기 위해 PHP 7.1 - 7.4를 사용하는 경우, Valet은 일부 스크립트를 실행하기 위해 기본 링크 버전이 아니더라도 8.0 이상의 PHP 버전을 사용하므로 Homebrew를 사용하여 8.0 이상의 PHP 버전을 설치해야 합니다.

사이트 제공

Valet이 설치되면 Laravel 애플리케이션을 제공할 준비가 된 것입니다. Valet은 애플리케이션을 제공하는 데 도움이 되는 두 가지 명령(parklink)을 제공합니다.

park 명령어

park 명령어는 애플리케이션이 포함된 시스템의 디렉토리를 등록합니다. 디렉토리가 Valet으로 "파킹"되면 해당 디렉토리 내의 모든 디렉토리는 웹 브라우저에서 http://<디렉토리-이름>.test로 액세스할 수 있습니다.

cd ~/Sites
 
valet park

이것이 전부입니다. 이제 "parked" 디렉토리 내에 생성하는 모든 애플리케이션은 자동으로 http://<디렉토리-이름>.test 규칙을 사용하여 서비스됩니다. 따라서 parked 디렉토리에 "laravel"이라는 디렉토리가 포함되어 있는 경우 해당 디렉토리 내의 애플리케이션은 http://laravel.test에서 액세스할 수 있습니다. 또한 Valet은 자동으로 와일드카드 서브도메인(http://foo.laravel.test)을 사용하여 사이트에 액세스할 수 있도록 합니다.

link 명령어는 Laravel 애플리케이션을 서비스하는 데에도 사용할 수 있습니다. 이 명령어는 전체 디렉토리가 아닌 디렉토리 내의 단일 사이트를 서비스하려는 경우에 유용합니다.

cd ~/Sites/laravel
 
valet link

link 명령어를 사용하여 애플리케이션이 Valet에 연결되면 디렉토리 이름을 사용하여 애플리케이션에 액세스할 수 있습니다. 따라서 위의 예에서 연결된 사이트는 http://laravel.test에서 액세스할 수 있습니다. 또한 Valet은 자동으로 와일드카드 서브 도메인(http://foo.laravel.test)을 사용하여 사이트에 액세스할 수 있도록 합니다.

애플리케이션을 다른 호스트 이름으로 서비스하려는 경우 호스트 이름을 link 명령어로 전달할 수 있습니다. 예를 들어 다음 명령을 실행하여 http://application.test에서 애플리케이션을 사용할 수 있도록 할 수 있습니다.

cd ~/Sites/laravel
 
valet link application

물론 link 명령어를 사용하여 서브도메인에서 애플리케이션을 서비스할 수도 있습니다.

valet link api.application

links 명령어를 실행하여 연결된 모든 디렉토리 목록을 표시할 수 있습니다.

valet links

unlink 명령어는 사이트의 심볼릭 링크를 삭제하는 데 사용할 수 있습니다.

cd ~/Sites/laravel
 
valet unlink

TLS를 사용하여 사이트 보안 설정하기

기본적으로 Valet은 HTTP를 통해 사이트를 제공합니다. 하지만 HTTP/2를 사용하여 암호화된 TLS를 통해 사이트를 제공하려면 secure 명령어를 사용할 수 있습니다. 예를 들어, 사이트가 laravel.test 도메인에서 Valet에 의해 제공되는 경우 다음 명령어를 실행하여 보안을 설정해야 합니다.

valet secure laravel

사이트의 "보안을 해제"하고 일반 HTTP를 통해 트래픽을 다시 제공하려면 unsecure 명령어를 사용합니다. secure 명령어와 마찬가지로, 이 명령어는 보안을 해제하려는 호스트 이름을 받습니다.

valet unsecure laravel

기본 사이트 제공하기

때로는 알 수 없는 test 도메인을 방문할 때 404 대신 "기본" 사이트를 제공하도록 Valet을 구성하고 싶을 수 있습니다. 이를 위해 기본 사이트로 제공해야 하는 사이트의 경로를 포함하는 default 옵션을 ~/.config/valet/config.json 구성 파일에 추가할 수 있습니다.

"default": "/Users/Sally/Sites/example-site",

사이트별 PHP 버전

기본적으로 Valet은 사이트를 제공하기 위해 전역 PHP 설치를 사용합니다. 하지만 다양한 사이트에서 여러 PHP 버전을 지원해야 하는 경우, isolate 명령어를 사용하여 특정 사이트에서 사용할 PHP 버전을 지정할 수 있습니다. isolate 명령어는 현재 작업 디렉토리에 있는 사이트에 대해 지정된 PHP 버전을 사용하도록 Valet을 구성합니다.

cd ~/Sites/example-site
 
valet isolate [email protected]

사이트 이름이 해당 사이트를 포함하는 디렉토리 이름과 일치하지 않는 경우 --site 옵션을 사용하여 사이트 이름을 지정할 수 있습니다.

valet isolate [email protected] --site="site-name"

편의를 위해 valet php, composer, which-php 명령어를 사용하여 사이트의 구성된 PHP 버전을 기반으로 적절한 PHP CLI 또는 도구에 대한 호출을 프록시할 수 있습니다.

valet php
valet composer
valet which-php

isolated 명령어를 실행하여 격리된 모든 사이트와 해당 PHP 버전을 표시할 수 있습니다.

valet isolated

사이트를 Valet의 전역적으로 설치된 PHP 버전으로 되돌리려면 해당 사이트의 루트 디렉토리에서 unisolate 명령어를 호출하면 됩니다.

valet unisolate

사이트 공유하기

Valet에는 로컬 사이트를 전 세계와 공유할 수 있는 명령어가 포함되어 있어 모바일 장치에서 사이트를 테스트하거나 팀원 및 클라이언트와 공유하는 쉬운 방법을 제공합니다.

Valet은 기본적으로 ngrok 또는 Expose를 통해 사이트 공유를 지원합니다. 사이트를 공유하기 전에 share-tool 명령어를 사용하여 Valet 구성을 업데이트하고 ngrok 또는 expose 중 하나를 지정해야 합니다.

valet share-tool ngrok

Homebrew(ngrok의 경우) 또는 Composer(Expose의 경우)를 통해 도구를 설치하지 않은 경우 Valet에서 자동으로 설치하라는 메시지를 표시합니다. 물론 두 도구 모두 사이트 공유를 시작하기 전에 ngrok 또는 Expose 계정을 인증해야 합니다.

사이트를 공유하려면 터미널에서 해당 사이트 디렉토리로 이동하여 Valet의 share 명령어를 실행합니다. 공개적으로 접근 가능한 URL이 클립보드에 저장되어 브라우저에 직접 붙여넣거나 팀과 공유할 수 있습니다.

cd ~/Sites/laravel
 
valet share

사이트 공유를 중지하려면 Control + C를 누르십시오.

exclamation

사용자 정의 DNS 서버(1.1.1.1과 같은)를 사용하는 경우 ngrok 공유가 제대로 작동하지 않을 수 있습니다. 컴퓨터에서 이 문제가 발생하면 Mac의 시스템 설정을 열고 네트워크 설정으로 이동하여 고급 설정을 열고 DNS 탭으로 이동하여 127.0.0.1을 첫 번째 DNS 서버로 추가하십시오.

Ngrok를 통한 사이트 공유

ngrok를 사용하여 사이트를 공유하려면 ngrok 계정을 생성하고 인증 토큰을 설정해야 합니다. 인증 토큰이 있으면 해당 토큰으로 Valet 구성을 업데이트할 수 있습니다.

valet set-ngrok-token YOUR_TOKEN_HERE
lightbulb

valet share --region=eu와 같이 추가 ngrok 매개변수를 share 명령어에 전달할 수 있습니다. 더 자세한 정보는 ngrok 문서를 참조하세요.

Expose를 통해 사이트 공유하기

Expose를 사용하여 사이트를 공유하려면 Expose 계정을 생성하고 인증 토큰을 통해 Expose로 인증해야 합니다.

Expose가 지원하는 추가 명령줄 매개변수에 대한 정보는 Expose 문서를 참조하십시오.

로컬 네트워크에서 사이트 공유하기

Valet은 인터넷으로부터 개발 머신이 보안 위험에 노출되지 않도록 기본적으로 들어오는 트래픽을 내부 127.0.0.1 인터페이스로 제한합니다.

로컬 네트워크의 다른 장치가 머신의 IP 주소 (예: 192.168.1.10/application.test)를 통해 머신의 Valet 사이트에 접근하도록 허용하려면 해당 사이트의 적절한 Nginx 구성 파일을 수동으로 편집하여 listen 지시어에 대한 제한을 제거해야 합니다. 80 및 443 포트의 listen 지시어에서 127.0.0.1: 접두사를 제거해야 합니다.

프로젝트에서 valet secure를 실행하지 않은 경우 /usr/local/etc/nginx/valet/valet.conf 파일을 편집하여 모든 비 HTTPS 사이트에 대한 네트워크 접근을 열 수 있습니다. 그러나 HTTPS를 통해 프로젝트 사이트를 제공하는 경우 (해당 사이트에 대해 valet secure를 실행한 경우) ~/.config/valet/Nginx/app-name.test 파일을 편집해야 합니다.

Nginx 구성을 업데이트했으면 valet restart 명령을 실행하여 구성 변경 사항을 적용합니다.

사이트별 환경 변수

일부 다른 프레임워크를 사용하는 애플리케이션은 서버 환경 변수에 의존하지만 해당 변수를 프로젝트 내에서 구성하는 방법을 제공하지 않을 수 있습니다. Valet을 사용하면 프로젝트 루트 내에 .valet-env.php 파일을 추가하여 사이트별 환경 변수를 구성할 수 있습니다. 이 파일은 배열에 지정된 각 사이트에 대해 글로벌 $_SERVER 배열에 추가될 사이트 / 환경 변수 쌍의 배열을 반환해야 합니다.

<?php
 
return [
// laravel.test 사이트의 $_SERVER['key']를 "value"로 설정합니다...
'laravel' => [
'key' => 'value',
],
 
// 모든 사이트의 $_SERVER['key']를 "value"로 설정합니다...
'*' => [
'key' => 'value',
],
];

서비스 프록시

때로는 Valet 도메인을 로컬 머신의 다른 서비스로 프록시하고 싶을 수 있습니다. 예를 들어, Docker에서 별도의 사이트를 실행하는 동안 Valet을 실행해야 하는 경우가 있습니다. 그러나 Valet과 Docker는 동시에 80 포트에 바인딩할 수 없습니다.

이를 해결하려면 proxy 명령을 사용하여 프록시를 생성할 수 있습니다. 예를 들어 http://elasticsearch.test의 모든 트래픽을 http://127.0.0.1:9200으로 프록시할 수 있습니다.

# HTTP를 통한 프록시...
valet proxy elasticsearch http://127.0.0.1:9200
 
# TLS + HTTP/2를 통한 프록시...
valet proxy elasticsearch http://127.0.0.1:9200 --secure

unproxy 명령어를 사용하여 프록시를 제거할 수 있습니다:

valet unproxy elasticsearch

proxies 명령어를 사용하여 프록시 처리된 모든 사이트 구성을 나열할 수 있습니다:

valet proxies

사용자 정의 Valet 드라이버

Valet에서 기본적으로 지원하지 않는 프레임워크 또는 CMS에서 실행되는 PHP 애플리케이션을 서비스하기 위해 자신만의 Valet "드라이버"를 작성할 수 있습니다. Valet을 설치하면 ~/.config/valet/Drivers 디렉토리가 생성되고 이 디렉토리에는 SampleValetDriver.php 파일이 포함됩니다. 이 파일에는 사용자 정의 드라이버를 작성하는 방법을 보여주는 샘플 드라이버 구현이 포함되어 있습니다. 드라이버를 작성하려면 serves, isStaticFilefrontControllerPath의 세 가지 메서드만 구현하면 됩니다.

세 가지 메서드 모두 $sitePath, $siteName$uri 값을 인수로 받습니다. $sitePath/Users/Lisa/Sites/my-project와 같이 머신에서 서비스되는 사이트의 정규화된 경로입니다. $siteName은 도메인의 "호스트" / "사이트 이름" 부분(my-project)입니다. $uri는 들어오는 요청 URI(foo/bar)입니다.

사용자 정의 Valet 드라이버를 완료했으면 FrameworkValetDriver.php 명명 규칙을 사용하여 ~/.config/valet/Drivers 디렉토리에 넣습니다. 예를 들어 WordPress용 사용자 정의 valet 드라이버를 작성하는 경우 파일 이름은 WordPressValetDriver.php여야 합니다.

사용자 정의 Valet 드라이버가 구현해야 하는 각 메서드의 샘플 구현을 살펴보겠습니다.

serves 메서드

serves 메서드는 드라이버가 들어오는 요청을 처리해야 하는 경우 true를 반환해야 합니다. 그렇지 않으면 메서드는 false를 반환해야 합니다. 따라서 이 메서드 내에서 주어진 $sitePath에 서비스하려는 유형의 프로젝트가 포함되어 있는지 확인해야 합니다.

예를 들어 WordPressValetDriver를 작성한다고 가정해 보겠습니다. serves 메서드는 다음과 같을 수 있습니다.

/**
* 드라이버가 요청을 처리하는지 확인합니다.
*/
public function serves(string $sitePath, string $siteName, string $uri): bool
{
return is_dir($sitePath.'/wp-admin');
}

isStaticFile 메서드

isStaticFile은 들어오는 요청이 이미지나 스타일시트와 같은 "정적" 파일에 대한 것인지 확인해야 합니다. 파일이 정적인 경우 메서드는 디스크의 정적 파일에 대한 정규화된 경로를 반환해야 합니다. 들어오는 요청이 정적 파일에 대한 것이 아니면 메서드는 false를 반환해야 합니다.

/**
* 들어오는 요청이 정적 파일에 대한 것인지 확인합니다.
*
* @return string|false
*/
public function isStaticFile(string $sitePath, string $siteName, string $uri)
{
if (file_exists($staticFilePath = $sitePath.'/public/'.$uri)) {
return $staticFilePath;
}
 
return false;
}
exclamation

isStaticFile 메서드는 들어오는 요청에 대해 serves 메서드가 true를 반환하고 요청 URI가 /가 아닌 경우에만 호출됩니다.

frontControllerPath 메서드

frontControllerPath 메서드는 일반적으로 "index.php" 파일 또는 이에 상응하는 애플리케이션의 "프런트 컨트롤러"에 대한 정규화된 경로를 반환해야 합니다.

/**
* 애플리케이션의 프런트 컨트롤러에 대한 완전히 해결된 경로를 가져옵니다.
*/
public function frontControllerPath(string $sitePath, string $siteName, string $uri): string
{
return $sitePath.'/public/index.php';
}

로컬 드라이버

단일 애플리케이션에 대한 사용자 정의 Valet 드라이버를 정의하려면 애플리케이션의 루트 디렉토리에 LocalValetDriver.php 파일을 생성합니다. 사용자 정의 드라이버는 기본 ValetDriver 클래스를 확장하거나 LaravelValetDriver와 같은 기존 애플리케이션 특정 드라이버를 확장할 수 있습니다.

use Valet\Drivers\LaravelValetDriver;
 
class LocalValetDriver extends LaravelValetDriver
{
/**
* 드라이버가 요청을 처리하는지 확인합니다.
*/
public function serves(string $sitePath, string $siteName, string $uri): bool
{
return true;
}
 
/**
* 애플리케이션의 프런트 컨트롤러에 대한 완전히 해결된 경로를 가져옵니다.
*/
public function frontControllerPath(string $sitePath, string $siteName, string $uri): string
{
return $sitePath.'/public_html/index.php';
}
}

기타 Valet 명령어

명령어 설명
valet list 모든 Valet 명령어 목록을 표시합니다.
valet diagnose Valet 디버깅에 도움이 되는 진단 정보를 출력합니다.
valet directory-listing 디렉토리 목록 동작을 결정합니다. 기본값은 "off"이며 디렉토리에 대해 404 페이지를 렌더링합니다.
valet forget "주차된" 디렉토리에서 이 명령을 실행하여 주차된 디렉토리 목록에서 제거합니다.
valet log Valet 서비스에서 작성한 로그 목록을 봅니다.
valet paths "주차된" 모든 경로를 봅니다.
valet restart Valet 데몬을 다시 시작합니다.
valet start Valet 데몬을 시작합니다.
valet stop Valet 데몬을 중지합니다.
valet trust Brew 및 Valet에 대한 sudoers 파일을 추가하여 Valet 명령을 비밀번호를 묻지 않고 실행할 수 있도록 합니다.
valet uninstall Valet을 제거합니다. 수동 제거에 대한 지침을 표시합니다. --force 옵션을 전달하여 Valet의 모든 리소스를 적극적으로 삭제합니다.

Valet 디렉토리 및 파일

Valet 환경 문제를 해결하는 동안 다음 디렉토리 및 파일 정보가 유용할 수 있습니다.

~/.config/valet

모든 Valet 구성이 포함되어 있습니다. 이 디렉토리의 백업을 유지하는 것이 좋습니다.

~/.config/valet/dnsmasq.d/

이 디렉토리에는 DNSMasq의 구성이 포함되어 있습니다.

~/.config/valet/Drivers/

이 디렉토리에는 Valet의 드라이버가 포함되어 있습니다. 드라이버는 특정 프레임워크/CMS가 서비스되는 방식을 결정합니다.

~/.config/valet/Nginx/

이 디렉토리에는 모든 Valet의 Nginx 사이트 구성이 포함되어 있습니다. 이러한 파일은 installsecure 명령을 실행할 때 다시 빌드됩니다.

~/.config/valet/Sites/

이 디렉토리에는 연결된 프로젝트의 모든 심볼릭 링크가 포함되어 있습니다.

~/.config/valet/config.json

이 파일은 Valet의 마스터 구성 파일입니다.

~/.config/valet/valet.sock

이 파일은 Valet의 Nginx 설치에서 사용하는 PHP-FPM 소켓입니다. PHP가 제대로 실행 중인 경우에만 존재합니다.

~/.config/valet/Log/fpm-php.www.log

이 파일은 PHP 오류에 대한 사용자 로그입니다.

~/.config/valet/Log/nginx-error.log

이 파일은 Nginx 오류에 대한 사용자 로그입니다.

/usr/local/var/log/php-fpm.log

이 파일은 PHP-FPM 오류에 대한 시스템 로그입니다.

/usr/local/var/log/nginx

이 디렉토리에는 Nginx 액세스 및 오류 로그가 포함되어 있습니다.

/usr/local/etc/php/X.X/conf.d

이 디렉토리에는 다양한 PHP 구성 설정에 대한 *.ini 파일이 포함되어 있습니다.

/usr/local/etc/php/X.X/php-fpm.d/valet-fpm.conf

이 파일은 PHP-FPM 풀 구성 파일입니다.

~/.composer/vendor/laravel/valet/cli/stubs/secure.valet.conf

이 파일은 사이트의 SSL 인증서를 빌드하는 데 사용되는 기본 Nginx 구성입니다.

디스크 접근

macOS 10.14부터 일부 파일 및 디렉토리에 대한 접근은 기본적으로 제한됩니다. 이러한 제한 사항에는 데스크탑, 문서 및 다운로드 디렉토리가 포함됩니다. 또한 네트워크 볼륨 및 이동식 볼륨 접근도 제한됩니다. 따라서 Valet은 사이트 폴더를 이러한 보호된 위치 외부에 두는 것이 좋습니다.

그러나 이러한 위치 중 하나 내에서 사이트를 서비스하려면 Nginx에 "전체 디스크 접근" 권한을 부여해야 합니다. 그렇지 않으면 특히 정적 자산을 서비스할 때 Nginx에서 서버 오류 또는 기타 예측할 수 없는 동작이 발생할 수 있습니다. 일반적으로 macOS는 자동으로 이러한 위치에 대한 Nginx의 전체 접근 권한을 부여하라는 메시지를 표시합니다. 또는 시스템 환경설정 > 보안 및 개인 정보 보호 > 개인 정보 보호를 선택하고 전체 디스크 접근을 선택하여 수동으로 수행할 수도 있습니다. 다음으로 기본 창 창에서 nginx 항목을 활성화합니다.