Laravel Homestead
소개
Laravel은 로컬 개발 환경을 포함하여 전체 PHP 개발 경험을 즐겁게 만들려고 노력합니다. Laravel Homestead는 로컬 머신에 PHP, 웹 서버 또는 기타 서버 소프트웨어를 설치할 필요 없이 멋진 개발 환경을 제공하는 공식 사전 패키지 Vagrant Box입니다.
Vagrant는 가상 머신을 관리하고 프로비저닝하는 간단하고 우아한 방법을 제공합니다. Vagrant Box는 완전히 일회용입니다. 문제가 발생하면 몇 분 안에 Box를 파괴하고 다시 만들 수 있습니다!
Homestead는 Windows, macOS 또는 Linux 시스템에서 실행되며 Nginx, PHP, MySQL, PostgreSQL, Redis, Memcached, Node 및 놀라운 Laravel 애플리케이션을 개발하는 데 필요한 다른 모든 소프트웨어를 포함합니다.
Windows를 사용하는 경우 하드웨어 가상화(VT-x)를 활성화해야 할 수 있습니다. 일반적으로 BIOS를 통해 활성화할 수 있습니다. UEFI 시스템에서 Hyper-V를 사용하는 경우 VT-x에 액세스하려면 Hyper-V를 추가로 비활성화해야 할 수 있습니다.
포함된 소프트웨어
- Ubuntu 22.04
- Git
- PHP 8.3
- PHP 8.2
- PHP 8.1
- PHP 8.0
- PHP 7.4
- PHP 7.3
- PHP 7.2
- PHP 7.1
- PHP 7.0
- PHP 5.6
- Nginx
- MySQL 8.0
- lmm
- Sqlite3
- PostgreSQL 15
- Composer
- Docker
- Node (Yarn, Bower, Grunt 및 Gulp 포함)
- Redis
- Memcached
- Beanstalkd
- Mailpit
- avahi
- ngrok
- Xdebug
- XHProf / Tideways / XHGui
- wp-cli
선택적 소프트웨어
- Apache
- Blackfire
- Cassandra
- Chronograf
- CouchDB
- Crystal & Lucky Framework
- Elasticsearch
- EventStoreDB
- Flyway
- Gearman
- Go
- Grafana
- InfluxDB
- Logstash
- MariaDB
- Meilisearch
- MinIO
- MongoDB
- Neo4j
- Oh My Zsh
- Open Resty
- PM2
- Python
- R
- RabbitMQ
- Rust
- RVM (Ruby Version Manager)
- Solr
- TimescaleDB
- Trader (PHP 확장)
- Webdriver & Laravel Dusk 유틸리티
설치 및 설정
첫 번째 단계
Homestead 환경을 시작하기 전에 Vagrant와 다음 지원되는 공급자 중 하나를 설치해야 합니다.
이러한 모든 소프트웨어 패키지는 모든 인기 있는 운영 체제에 대해 사용하기 쉬운 시각적 설치 프로그램을 제공합니다.
Parallels 공급자를 사용하려면 Parallels Vagrant 플러그인을 설치해야 합니다. 무료입니다.
Homestead 설치
Homestead 저장소를 호스트 머신에 복제하여 Homestead를 설치할 수 있습니다. Homestead 가상 머신이 모든 Laravel 애플리케이션의 호스트 역할을 하므로 저장소를 "홈" 디렉터리 내의 Homestead 폴더에 복제하는 것을 고려하십시오. 이 문서 전체에서 이 디렉터리를 "Homestead 디렉터리"라고 합니다.
git clone https://github.com/laravel/homestead.git ~/Homestead
Laravel Homestead 저장소를 클론한 후에는 release 브랜치를 체크아웃해야 합니다. 이 브랜치는 항상 Homestead의 최신 안정 릴리스를 포함하고 있습니다.
cd ~/Homestead git checkout release
다음으로, Homestead 디렉토리에서 bash init.sh 명령어를 실행하여 Homestead.yaml 설정 파일을 생성합니다. Homestead.yaml 파일은 Homestead 설치에 대한 모든 설정을 구성하는 곳입니다. 이 파일은 Homestead 디렉토리에 위치하게 됩니다:
# macOS / Linux...bash init.sh # Windows...init.bat
Homestead 설정
Provider 설정
Homestead.yaml 파일의 provider 키는 사용할 Vagrant provider를 나타냅니다: virtualbox 또는 parallels:
provider: virtualbox
Apple Silicon을 사용하는 경우 Parallels provider가 필요합니다.
공유 폴더 설정
Homestead.yaml 파일의 folders 속성은 Homestead 환경과 공유하려는 모든 폴더를 나열합니다. 이러한 폴더 내의 파일이 변경되면 로컬 머신과 Homestead 가상 환경 간에 동기화됩니다. 필요한 만큼 공유 폴더를 구성할 수 있습니다.
folders: - map: ~/code/project1 to: /home/vagrant/project1
Windows 사용자는 ~/ 경로 구문을 사용하지 말고 C:\Users\user\Code\project1과 같이 프로젝트의 전체 경로를 사용해야 합니다.
항상 모든 애플리케이션을 포함하는 단일 큰 디렉토리를 매핑하는 대신 개별 애플리케이션을 자체 폴더 매핑에 매핑해야 합니다. 폴더를 매핑하면 가상 머신은 해당 폴더의 모든 파일에 대한 모든 디스크 I/O를 추적해야 합니다. 폴더에 많은 수의 파일이 있는 경우 성능이 저하될 수 있습니다.
folders: - map: ~/code/project1 to: /home/vagrant/project1 - map: ~/code/project2 to: /home/vagrant/project2
Homestead를 사용할 때 .(현재 디렉토리)를 마운트해서는 안 됩니다. 이렇게 하면 Vagrant가 현재 폴더를 /vagrant에 매핑하지 못하게 되어 선택적 기능이 작동하지 않고 프로비저닝 중에 예기치 않은 결과가 발생할 수 있습니다.
NFS를 활성화하려면 폴더 매핑에 type 옵션을 추가할 수 있습니다:
folders: - map: ~/code/project1 to: /home/vagrant/project1 type: "nfs"
Windows에서 NFS를 사용하는 경우 vagrant-winnfsd 플러그인을 설치하는 것을 고려해야 합니다. 이 플러그인은 Homestead 가상 머신 내의 파일 및 디렉토리에 대한 올바른 사용자/그룹 권한을 유지합니다.
Vagrant의 Synced Folders에서 지원하는 옵션을 options 키 아래에 나열하여 전달할 수도 있습니다:
folders: - map: ~/code/project1 to: /home/vagrant/project1 type: "rsync" options: rsync__args: ["--verbose", "--archive", "--delete", "-zz"] rsync__exclude: ["node_modules"]
Nginx 사이트 구성
Nginx에 익숙하지 않으신가요? 괜찮습니다. Homestead.yaml 파일의 sites 속성을 사용하면 Homestead 환경에서 "도메인"을 폴더에 쉽게 매핑할 수 있습니다. 샘플 사이트 구성이 Homestead.yaml 파일에 포함되어 있습니다. 필요에 따라 Homestead 환경에 여러 사이트를 추가할 수 있습니다. Homestead는 작업 중인 모든 Laravel 애플리케이션을 위한 편리한 가상 환경 역할을 할 수 있습니다:
sites: - map: homestead.test to: /home/vagrant/project1/public
Homestead 가상 머신을 프로비저닝한 후 sites 속성을 변경한 경우, 가상 머신의 Nginx 구성을 업데이트하려면 터미널에서 vagrant reload --provision 명령을 실행해야 합니다.
Homestead 스크립트는 최대한 멱등성을 갖도록 만들어졌습니다. 그러나 프로비저닝 중에 문제가 발생하면 vagrant destroy && vagrant up 명령을 실행하여 머신을 삭제하고 다시 빌드해야 합니다.
호스트 이름 확인
Homestead는 자동 호스트 확인을 위해 mDNS를 사용하여 호스트 이름을 게시합니다. Homestead.yaml 파일에서 hostname: homestead를 설정하면 homestead.local에서 호스트를 사용할 수 있습니다. macOS, iOS 및 Linux 데스크톱 배포판에는 기본적으로 mDNS 지원이 포함되어 있습니다. Windows를 사용하는 경우 Windows용 Bonjour Print Services를 설치해야 합니다.
자동 호스트 이름 사용은 Homestead의 프로젝트별 설치에 가장 적합합니다. 단일 Homestead 인스턴스에서 여러 사이트를 호스팅하는 경우 머신의 hosts 파일에 웹 사이트의 "도메인"을 추가할 수 있습니다. hosts 파일은 Homestead 사이트에 대한 요청을 Homestead 가상 머신으로 리디렉션합니다. macOS 및 Linux에서는 이 파일이 /etc/hosts에 있습니다. Windows에서는 C:\Windows\System32\drivers\etc\hosts에 있습니다. 이 파일에 추가하는 줄은 다음과 같습니다.
192.168.56.56 homestead.test
나열된 IP 주소가 Homestead.yaml 파일에 설정된 IP 주소인지 확인하십시오. hosts 파일에 도메인을 추가하고 Vagrant 박스를 시작하면 웹 브라우저를 통해 사이트에 액세스할 수 있습니다.
http://homestead.test
서비스 구성하기
Homestead는 기본적으로 여러 서비스를 시작하지만, 프로비저닝 중에 활성화 또는 비활성화할 서비스를 사용자 정의할 수 있습니다. 예를 들어, Homestead.yaml 파일 내의 services 옵션을 수정하여 PostgreSQL을 활성화하고 MySQL을 비활성화할 수 있습니다.
services: - enabled: - "postgresql" - disabled: - "mysql"
지정된 서비스는 enabled 및 disabled 지시문의 순서에 따라 시작 또는 중지됩니다.
Vagrant Box 시작하기
Homestead.yaml을 원하는 대로 편집한 후, Homestead 디렉토리에서 vagrant up 명령을 실행합니다. Vagrant는 가상 머신을 부팅하고 공유 폴더와 Nginx 사이트를 자동으로 구성합니다.
머신을 파괴하려면 vagrant destroy 명령을 사용할 수 있습니다.
프로젝트별 설치
Homestead를 전역적으로 설치하고 모든 프로젝트에서 동일한 Homestead 가상 머신을 공유하는 대신, 관리하는 각 프로젝트에 대해 Homestead 인스턴스를 구성할 수 있습니다. 프로젝트별로 Homestead를 설치하는 것은 프로젝트와 함께 Vagrantfile을 배포하여 프로젝트에 참여하는 다른 사람들이 프로젝트 저장소를 복제한 직후 vagrant up을 할 수 있도록 하려는 경우에 유용할 수 있습니다.
Composer 패키지 관리자를 사용하여 Homestead를 프로젝트에 설치할 수 있습니다.
composer require laravel/homestead --dev
Homestead가 설치되면, Homestead의 make 명령을 호출하여 프로젝트의 Vagrantfile 및 Homestead.yaml 파일을 생성합니다. 이 파일들은 프로젝트의 루트에 배치됩니다. make 명령은 Homestead.yaml 파일에서 sites 및 folders 지시문을 자동으로 구성합니다.
# macOS / Linux...php vendor/bin/homestead make # Windows...vendor\\bin\\homestead make
다음으로, 터미널에서 vagrant up 명령어를 실행하고 브라우저에서 http://homestead.test 주소로 프로젝트에 접속하세요. 자동 호스트 이름 확인 기능을 사용하지 않는 경우, homestead.test 또는 선택한 도메인에 대한 /etc/hosts 파일 항목을 추가해야 한다는 점을 기억하세요.
선택적 기능 설치
선택적 소프트웨어는 Homestead.yaml 파일 내의 features 옵션을 사용하여 설치됩니다. 대부분의 기능은 부울 값으로 활성화 또는 비활성화할 수 있지만, 일부 기능은 여러 구성 옵션을 허용합니다.
features: - blackfire: server_id: "server_id" server_token: "server_value" client_id: "client_id" client_token: "client_value" - cassandra: true - chronograf: true - couchdb: true - crystal: true - dragonflydb: true - elasticsearch: version: 7.9.0 - eventstore: true version: 21.2.0 - flyway: true - gearman: true - golang: true - grafana: true - influxdb: true - logstash: true - mariadb: true - meilisearch: true - minio: true - mongodb: true - neo4j: true - ohmyzsh: true - openresty: true - pm2: true - python: true - r-base: true - rabbitmq: true - rustc: true - rvm: true - solr: true - timescaledb: true - trader: true - webdriver: true
Elasticsearch
지원되는 Elasticsearch 버전을 지정할 수 있으며, 정확한 버전 번호(major.minor.patch)여야 합니다. 기본 설치 시 'homestead'라는 이름의 클러스터가 생성됩니다. Elasticsearch에 운영 체제 메모리의 절반 이상을 할당해서는 안 되므로, Homestead 가상 머신에 Elasticsearch 할당량의 두 배 이상이 있는지 확인하십시오.
구성을 사용자 정의하는 방법을 알아보려면 Elasticsearch 설명서를 확인하십시오.
MariaDB
MariaDB를 활성화하면 MySQL이 제거되고 MariaDB가 설치됩니다. MariaDB는 일반적으로 MySQL을 대체하는 드롭인(drop-in) 대체재 역할을 하므로, 애플리케이션의 데이터베이스 구성에서 mysql 데이터베이스 드라이버를 계속 사용해야 합니다.
MongoDB
기본 MongoDB 설치 시 데이터베이스 사용자 이름은 homestead로, 해당 비밀번호는 secret으로 설정됩니다.
Neo4j
기본 Neo4j 설치 시 데이터베이스 사용자 이름은 homestead로, 해당 비밀번호는 secret으로 설정됩니다. Neo4j 브라우저에 액세스하려면 웹 브라우저를 통해 http://homestead.test:7474를 방문하십시오. 7687 (Bolt), 7474 (HTTP) 및 7473 (HTTPS) 포트는 Neo4j 클라이언트의 요청을 처리할 준비가 되어 있습니다.
Aliases
Homestead 디렉토리 내의 aliases 파일을 수정하여 Homestead 가상 머신에 Bash aliases를 추가할 수 있습니다:
alias c='clear'alias ..='cd ..'
aliases 파일을 업데이트한 후에는 vagrant reload --provision 명령어를 사용하여 Homestead 가상 머신을 다시 프로비저닝해야 합니다. 이렇게 하면 새 aliases를 머신에서 사용할 수 있습니다.
Homestead 업데이트
Homestead 업데이트를 시작하기 전에 Homestead 디렉토리에서 다음 명령어를 실행하여 현재 가상 머신을 제거했는지 확인해야 합니다:
vagrant destroy
다음으로, Homestead 소스 코드를 업데이트해야 합니다. 저장소를 복제한 경우, 저장소를 처음 복제했던 위치에서 다음 명령을 실행할 수 있습니다.
git fetch git pull origin release
이 명령은 GitHub 저장소에서 최신 Homestead 코드를 가져오고, 최신 태그를 가져온 다음, 최신 태그 릴리스를 체크아웃합니다. Homestead의 GitHub 릴리스 페이지에서 최신 안정화 릴리스 버전을 찾을 수 있습니다.
프로젝트의 composer.json 파일을 통해 Homestead를 설치한 경우, composer.json 파일에 "laravel/homestead": "^12"가 포함되어 있는지 확인하고 종속성을 업데이트해야 합니다.
composer update
다음으로, vagrant box update 명령을 사용하여 Vagrant 박스를 업데이트해야 합니다.
vagrant box update
Vagrant 박스를 업데이트한 후, Homestead의 추가 구성 파일을 업데이트하기 위해 Homestead 디렉토리에서 bash init.sh 명령을 실행해야 합니다. 기존의 Homestead.yaml, after.sh 및 aliases 파일을 덮어쓸 것인지 묻는 메시지가 표시됩니다.
# macOS / Linux...bash init.sh # Windows...init.bat
마지막으로, 최신 Vagrant 설치를 활용하기 위해 Homestead 가상 머신을 다시 생성해야 합니다.
vagrant up
일상적인 사용법
SSH를 통한 연결
Homestead 디렉토리에서 vagrant ssh 터미널 명령을 실행하여 가상 머신에 SSH로 연결할 수 있습니다.
추가 사이트 추가
Homestead 환경이 프로비저닝되고 실행되면 다른 Laravel 프로젝트를 위해 추가 Nginx 사이트를 추가하고 싶을 수 있습니다. 단일 Homestead 환경에서 원하는 만큼의 Laravel 프로젝트를 실행할 수 있습니다. 추가 사이트를 추가하려면 Homestead.yaml 파일에 사이트를 추가하십시오.
sites: - map: homestead.test to: /home/vagrant/project1/public - map: another.test to: /home/vagrant/project2/public
사이트를 추가하기 전에 프로젝트 디렉토리에 대한 폴더 매핑을 구성했는지 확인해야 합니다.
Vagrant가 "hosts" 파일을 자동으로 관리하지 않는 경우, 해당 파일에 새 사이트를 추가해야 할 수도 있습니다. macOS 및 Linux에서는 이 파일이 /etc/hosts에 있습니다. Windows에서는 C:\Windows\System32\drivers\etc\hosts에 있습니다.
192.168.56.56 homestead.test192.168.56.56 another.test
사이트가 추가되면 Homestead 디렉토리에서 vagrant reload --provision 터미널 명령을 실행하십시오.
사이트 유형
Homestead는 Laravel 기반이 아닌 프로젝트를 쉽게 실행할 수 있도록 여러 "유형"의 사이트를 지원합니다. 예를 들어, statamic 사이트 유형을 사용하여 Homestead에 Statamic 애플리케이션을 쉽게 추가할 수 있습니다.
sites: - map: statamic.test to: /home/vagrant/my-symfony-project/web type: "statamic"
사용 가능한 사이트 유형은 apache, apache-proxy, apigility, expressive, laravel(기본값), proxy(nginx 용), silverstripe, statamic, symfony2, symfony4 및 zf입니다.
사이트 매개변수
params 사이트 지시어를 통해 사이트에 추가 Nginx fastcgi_param 값을 추가할 수 있습니다.
sites: - map: homestead.test to: /home/vagrant/project1/public params: - key: FOO value: BAR
환경 변수
Homestead.yaml 파일에 추가하여 전역 환경 변수를 정의할 수 있습니다.
variables: - key: APP_ENV value: local - key: FOO value: bar
Homestead.yaml 파일을 업데이트한 후에는 반드시 vagrant reload --provision 명령을 실행하여 머신을 다시 프로비저닝해야 합니다. 이렇게 하면 설치된 모든 PHP 버전의 PHP-FPM 구성이 업데이트되고 vagrant 사용자의 환경도 업데이트됩니다.
포트
기본적으로 다음 포트들이 Homestead 환경으로 전달됩니다.
- HTTP: 8000 → 80으로 전달
- HTTPS: 44300 → 443으로 전달
추가 포트 전달
원하는 경우 Homestead.yaml 파일 내에서 ports 구성 항목을 정의하여 Vagrant 박스로 추가 포트를 전달할 수 있습니다. Homestead.yaml 파일을 업데이트한 후에는 반드시 vagrant reload --provision 명령을 실행하여 머신을 다시 프로비저닝해야 합니다.
ports: - send: 50000 to: 5000 - send: 7777 to: 777 protocol: udp
다음은 호스트 머신에서 Vagrant 박스로 매핑하려는 추가 Homestead 서비스 포트 목록입니다.
- SSH: 2222 → 22로 전달
- ngrok UI: 4040 → 4040으로 전달
- MySQL: 33060 → 3306으로 전달
- PostgreSQL: 54320 → 5432으로 전달
- MongoDB: 27017 → 27017로 전달
- Mailpit: 8025 → 8025으로 전달
- Minio: 9600 → 9600으로 전달
PHP 버전
Homestead는 동일한 가상 머신에서 여러 버전의 PHP를 실행하는 것을 지원합니다. Homestead.yaml 파일 내에서 특정 사이트에 사용할 PHP 버전을 지정할 수 있습니다. 사용 가능한 PHP 버전은 "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2" 및 "8.3"(기본값)입니다.
sites: - map: homestead.test to: /home/vagrant/project1/public php: "7.1"
Homestead 가상 머신 내에서 CLI를 통해 지원되는 PHP 버전을 사용할 수 있습니다.
php5.6 artisan listphp7.0 artisan listphp7.1 artisan listphp7.2 artisan listphp7.3 artisan listphp7.4 artisan listphp8.0 artisan listphp8.1 artisan listphp8.2 artisan listphp8.3 artisan list
Homestead 가상 머신 내에서 다음 명령어를 실행하여 CLI에서 사용되는 기본 PHP 버전을 변경할 수 있습니다:
php56php70php71php72php73php74php80php81php82php83
데이터베이스 연결
homestead 데이터베이스는 MySQL과 PostgreSQL 모두 기본적으로 구성되어 있습니다. 호스트 머신의 데이터베이스 클라이언트에서 MySQL 또는 PostgreSQL 데이터베이스에 연결하려면 127.0.0.1 주소의 33060 (MySQL) 또는 54320 (PostgreSQL) 포트로 연결해야 합니다. 두 데이터베이스의 사용자 이름과 비밀번호는 homestead / secret 입니다.
호스트 머신에서 데이터베이스에 연결할 때만 이러한 비표준 포트를 사용해야 합니다. Laravel은 가상 머신 내부 에서 실행되기 때문에 Laravel 애플리케이션의 database 구성 파일에서는 기본 포트인 3306과 5432를 사용하게 됩니다.
데이터베이스 백업
Homestead는 Homestead 가상 머신이 삭제될 때 데이터베이스를 자동으로 백업할 수 있습니다. 이 기능을 사용하려면 Vagrant 2.1.0 이상을 사용해야 합니다. 또는, 이전 버전의 Vagrant를 사용하는 경우 vagrant-triggers 플러그인을 설치해야 합니다. 자동 데이터베이스 백업을 활성화하려면 Homestead.yaml 파일에 다음 줄을 추가하십시오.
backup: true
구성되면 Homestead는 vagrant destroy 명령이 실행될 때 데이터베이스를 .backup/mysql_backup 및 .backup/postgres_backup 디렉토리로 내보냅니다. 이러한 디렉토리는 Homestead를 설치한 폴더 또는 프로젝트별 설치 방법을 사용하는 경우 프로젝트 루트에서 찾을 수 있습니다.
Cron 스케줄 구성
Laravel은 매분마다 실행되는 단일 schedule:run Artisan 명령을 예약하여 cron 작업을 예약하는 편리한 방법을 제공합니다. schedule:run 명령은 routes/console.php 파일에 정의된 작업 스케줄을 검사하여 실행할 예약된 작업을 결정합니다.
Homestead 사이트에 대해 schedule:run 명령을 실행하려면 사이트를 정의할 때 schedule 옵션을 true로 설정하면 됩니다.
sites: - map: homestead.test to: /home/vagrant/project1/public schedule: true
해당 사이트의 cron 작업은 Homestead 가상 머신의 /etc/cron.d 디렉터리에 정의됩니다.
Mailpit 구성하기
Mailpit을 사용하면 발신 이메일을 가로채서 실제로 받는 사람에게 메일을 보내지 않고도 확인할 수 있습니다. 시작하려면 다음 메일 설정을 사용하도록 애플리케이션의 .env 파일을 업데이트하세요.
MAIL_MAILER=smtpMAIL_HOST=localhostMAIL_PORT=1025MAIL_USERNAME=nullMAIL_PASSWORD=nullMAIL_ENCRYPTION=null
Mailpit이 구성되면 http://localhost:8025에서 Mailpit 대시보드에 액세스할 수 있습니다.
Minio 구성하기
Minio는 Amazon S3 호환 API를 갖춘 오픈 소스 객체 스토리지 서버입니다. Minio를 설치하려면 기능 섹션에서 다음 구성 옵션을 사용하여 Homestead.yaml 파일을 업데이트하세요.
minio: true
기본적으로 Minio는 포트 9600에서 사용할 수 있습니다. http://localhost:9600을 방문하여 Minio 제어판에 액세스할 수 있습니다. 기본 액세스 키는 homestead이고 기본 보안 키는 secretkey입니다. Minio에 액세스할 때 항상 us-east-1 리전을 사용해야 합니다.
Minio를 사용하려면 .env 파일에 다음 옵션이 있는지 확인하세요.
AWS_USE_PATH_STYLE_ENDPOINT=trueAWS_ENDPOINT=http://localhost:9600AWS_ACCESS_KEY_ID=homesteadAWS_SECRET_ACCESS_KEY=secretkeyAWS_DEFAULT_REGION=us-east-1
Minio 기반 "S3" 버킷을 프로비저닝하려면 Homestead.yaml 파일에 buckets 지시어를 추가하세요. 버킷을 정의한 후 터미널에서 vagrant reload --provision 명령을 실행해야 합니다.
buckets: - name: your-bucket policy: public - name: your-private-bucket policy: none
지원되는 policy 값에는 none, download, upload 및 public이 있습니다.
Laravel Dusk
Homestead 내에서 Laravel Dusk 테스트를 실행하려면 Homestead 구성에서 webdriver 기능을 활성화해야 합니다.
features: - webdriver: true
webdriver 기능을 활성화한 후 터미널에서 vagrant reload --provision 명령을 실행해야 합니다.
환경 공유
때로는 현재 작업 중인 내용을 동료나 클라이언트와 공유하고 싶을 수 있습니다. Vagrant는 vagrant share 명령을 통해 이를 내장 지원하지만, Homestead.yaml 파일에 여러 사이트가 구성되어 있는 경우에는 작동하지 않습니다.
이 문제를 해결하기 위해 Homestead에는 자체적인 share 명령이 포함되어 있습니다. 시작하려면 vagrant ssh를 통해 Homestead 가상 머신에 SSH로 연결하고 share homestead.test 명령을 실행하십시오. 이 명령은 Homestead.yaml 구성 파일에서 homestead.test 사이트를 공유합니다. homestead.test 대신 구성된 다른 사이트를 사용할 수 있습니다.
share homestead.test
명령을 실행하면 공유된 사이트에 대한 활동 로그와 공개적으로 액세스 가능한 URL이 포함된 Ngrok 화면이 나타납니다. 사용자 정의 지역, 하위 도메인 또는 기타 Ngrok 런타임 옵션을 지정하려면 share 명령에 추가할 수 있습니다.
share homestead.test -region=eu -subdomain=laravel
HTTP 대신 HTTPS를 통해 콘텐츠를 공유해야 하는 경우, share 명령어 대신 sshare 명령어를 사용하면 그렇게 할 수 있습니다.
Vagrant는 본질적으로 안전하지 않으며 share 명령어를 실행할 때 가상 머신을 인터넷에 노출시킨다는 점을 기억하세요.
디버깅 및 프로파일링
Xdebug를 이용한 웹 요청 디버깅
Homestead는 Xdebug를 사용한 단계별 디버깅을 지원합니다. 예를 들어 브라우저에서 페이지에 액세스하면 PHP가 IDE에 연결되어 실행 중인 코드를 검사하고 수정할 수 있습니다.
기본적으로 Xdebug는 이미 실행 중이며 연결을 수락할 준비가 되어 있습니다. CLI에서 Xdebug를 활성화해야 하는 경우 Homestead 가상 머신 내에서 sudo phpenmod xdebug 명령어를 실행하세요. 다음으로, IDE의 지침에 따라 디버깅을 활성화합니다. 마지막으로 확장 프로그램 또는 북마클릿을 사용하여 Xdebug를 트리거하도록 브라우저를 구성합니다.
Xdebug는 PHP 실행 속도를 현저히 느리게 만듭니다. Xdebug를 비활성화하려면 Homestead 가상 머신 내에서 sudo phpdismod xdebug를 실행하고 FPM 서비스를 다시 시작하십시오.
Xdebug 자동 시작
웹 서버에 요청하는 기능 테스트를 디버깅할 때 디버깅을 트리거하기 위해 사용자 지정 헤더나 쿠키를 통과하도록 테스트를 수정하는 것보다 디버깅을 자동으로 시작하는 것이 더 쉽습니다. Xdebug가 자동으로 시작되도록 강제하려면 Homestead 가상 머신 내의 /etc/php/7.x/fpm/conf.d/20-xdebug.ini 파일을 수정하고 다음 구성을 추가하십시오.
; Homestead.yaml에 IP 주소에 대한 다른 서브넷이 포함되어 있는 경우, 이 주소는 다를 수 있습니다...xdebug.client_host = 192.168.10.1xdebug.mode = debugxdebug.start_with_request = yes
CLI 애플리케이션 디버깅
PHP CLI 애플리케이션을 디버깅하려면 Homestead 가상 머신 내에서 xphp 셸 별칭을 사용하십시오:
xphp /path/to/script
Blackfire를 이용한 애플리케이션 프로파일링
Blackfire는 웹 요청 및 CLI 애플리케이션 프로파일링을 위한 서비스입니다. 호출 그래프 및 타임라인에 프로필 데이터를 표시하는 대화형 사용자 인터페이스를 제공합니다. 최종 사용자에게 오버헤드 없이 개발, 스테이징 및 프로덕션 환경에서 사용할 수 있도록 제작되었습니다. 또한 Blackfire는 코드 및 php.ini 구성 설정에 대한 성능, 품질 및 보안 검사를 제공합니다.
Blackfire Player는 프로파일링 시나리오를 스크립팅하기 위해 Blackfire와 함께 작동할 수 있는 오픈 소스 웹 크롤링, 웹 테스트 및 웹 스크래핑 애플리케이션입니다.
Blackfire를 활성화하려면 Homestead 구성 파일에서 "features" 설정을 사용하십시오:
features: - blackfire: server_id: "server_id" server_token: "server_value" client_id: "client_id" client_token: "client_value"
Blackfire 서버 자격 증명 및 클라이언트 자격 증명은 Blackfire 계정이 필요합니다. Blackfire는 CLI 도구 및 브라우저 확장 프로그램을 포함하여 애플리케이션을 프로파일링하기 위한 다양한 옵션을 제공합니다. 자세한 내용은 Blackfire 문서를 참조하십시오.
네트워크 인터페이스
Homestead.yaml 파일의 networks 속성은 Homestead 가상 머신에 대한 네트워크 인터페이스를 구성합니다. 필요한 만큼 많은 인터페이스를 구성할 수 있습니다:
networks: - type: "private_network" ip: "192.168.10.20"
브리지 인터페이스를 활성화하려면 네트워크에 대한 bridge 설정을 구성하고 네트워크 유형을 public_network로 변경합니다.
networks: - type: "public_network" ip: "192.168.10.20" bridge: "en1: Wi-Fi (AirPort)"
DHCP를 활성화하려면 구성에서 ip 옵션을 제거하기만 하면 됩니다.
networks: - type: "public_network" bridge: "en1: Wi-Fi (AirPort)"
네트워크가 사용하는 장치를 업데이트하려면 네트워크 구성에 dev 옵션을 추가할 수 있습니다. 기본 dev 값은 eth0입니다.
networks: - type: "public_network" ip: "192.168.10.20" bridge: "en1: Wi-Fi (AirPort)" dev: "enp2s0"
Homestead 확장
Homestead 디렉토리의 루트에 있는 after.sh 스크립트를 사용하여 Homestead를 확장할 수 있습니다. 이 파일 내에서 가상 머신을 올바르게 구성하고 사용자 정의하는 데 필요한 모든 셸 명령을 추가할 수 있습니다.
Homestead를 사용자 정의할 때 Ubuntu는 패키지의 원래 구성을 유지할지 또는 새 구성 파일로 덮어쓸지 묻습니다. 이를 방지하려면 패키지를 설치할 때 다음 명령을 사용하여 Homestead에서 이전에 작성된 구성을 덮어쓰지 않도록 해야 합니다.
sudo apt-get -y \ -o Dpkg::Options::="--force-confdef" \ -o Dpkg::Options::="--force-confold" \ install package-name
사용자 정의
Homestead를 팀과 함께 사용할 때, 개인 개발 스타일에 더 잘 맞도록 Homestead를 조정하고 싶을 수 있습니다. 이를 위해 Homestead 디렉토리의 루트( Homestead.yaml 파일이 포함된 동일한 디렉토리)에 user-customizations.sh 파일을 생성할 수 있습니다. 이 파일 내에서 원하는 사용자 정의를 수행할 수 있습니다. 하지만 user-customizations.sh 파일은 버전 관리하지 않아야 합니다.
제공업체별 설정
VirtualBox
natdnshostresolver
기본적으로 Homestead는 natdnshostresolver 설정을 on으로 구성합니다. 이를 통해 Homestead는 호스트 운영 체제의 DNS 설정을 사용할 수 있습니다. 이 동작을 재정의하려면 Homestead.yaml 파일에 다음 구성 옵션을 추가하십시오.
provider: virtualboxnatdnshostresolver: 'off'