Puma-Dev는 Pow의 감정적 후계자입니다. MacOS 및 Linux에서 개발중인 앱을 빠르고 쉬운 방법을 제공합니다.
.test
하위 도메인 (구성 가능) 을 사용하여 앱에 쉽게 액세스 할 수 있습니다..test
동시에 .puma
pow
더 이상 유지되지 않습니다 먼저 puma
보석이 설치되어 있는지 확인하십시오. 아마도 푸마 데브를 통해 봉사하려는 응용 프로그램의 보석에 속할 것입니다.
# Gemfile
gem 'puma'
brew install puma/puma/puma-dev
https://github.com/puma/puma-dev/releases에서 MacOS 및 Linux 용 Binaries를 다운로드 할 수 있습니다.
#! /usr/bin/env bash
go version
go get github.com/puma/puma-dev/...
cd $GOPATH /src/github.com/puma/puma-dev/
make && make install
$GOBIN /puma-dev -V
# Configure some DNS settings that have to be done as root
sudo puma-dev -setup
# Configure puma-dev to run in the background on ports 80 and 443 with the domain `.test`.
puma-dev -install
puma-dev
80 이외의 포트를 사용하려면 -install-port
통해 전달하십시오 (예 : 포트 81 : puma-dev -install -install-port 81
.
참고 : Puma-Dev V0.2를 설치 한 경우 sudo puma-dev -cleanup
실행하여 Puma-Dev가 더 이상 사용하지 않는 방화벽 규칙을 제거하고 (Puma-Dev 작업과 충돌합니다).
참고 : 시스템에 POW를 설치 한 경우 POW의 제거 스크립트를 실행하십시오. POW 매뉴얼에서 자세한 내용을 읽으십시오.
실행 : puma-dev -uninstall
참고 : 사용자 정의 옵션 (예 -d test:localhost
)을 전달하여 -setup
사용하는 경우 -uninstall
로 전달하십시오. 그렇지 않으면 /etc/resolver/*
에는 고아 항목이 포함될 수 있습니다.
PUMA-DEV가 사용자 에이전트 (기본 모드)로 설치되면 자체에서 출력을 기록하고 앱을 ~/Library/Logs/puma-dev.log
에 로그인합니다. 앱이 시작되었는지 확인하고 오류를 찾으려면 참조 할 수 있습니다.
앞으로 Puma-Dev는이 로그 출력에 통합 콘솔을 제공 할 것입니다.
PUMA -DEV는 Linux를 지원하지만 모든 기능을 수행하기 위해 다음과 같은 추가 설치 단계가 필요합니다 ( -install
및 -setup
플래그가 제공되지 않음).
Puma-Dev Root CA는 생성되지만 ( ~/.puma-dev-ssl/
), 그러나 운영 체제의 인증서 신탁 스토어에 추가하거나 직접 신뢰하여 인증 기관으로 설치하고 신뢰해야합니다. 선호하는 브라우저에서 (일부 브라우저는 운영 체제의 신뢰 스토어를 공유하지 않으므로).
먼저 Puma-Dev를 시작하여 ~/.puma-dev-ssl/cert.pem
으로 CA 인증서를 생성하십시오.
Arch Linux, Fedora 및 P11-Kit을 사용한 기타 분포의 경우 다음을 시도하십시오.
# convert from PEM to DER
openssl x509 -in ~ /.puma-dev-ssl/cert.pem -outform der -out ~ /.puma-dev-ssl/cert.crt
# store certificate as an anchor in the trust policy store
sudo trust anchor --store ~ /.puma-dev-ssl/cert.crt
# verify
trust list --filter=ca-anchors | grep -i -C2 Puma-dev
데비안, 우분투 등의 경우 다음을 시도하십시오.
sudo mkdir -p /usr/local/share/ca-certificates
sudo cp ~ /.puma-dev-ssl/cert.pem /usr/local/share/ca-certificates/puma-dev-pem.crt
sudo update-ca-certificates
systemd-resolved
시스템에서 .localhost
확장자는 기본적으로 사용할 수 있습니다. ping some-domain.localhost
가 작동하는지 확인하십시오.
.test
(또는 기타 사용자 정의) 도메인에 대한 요청을 해결하려면 해결하려면 Dev-Tld-Resolver를 설치하고 TLD를 구성 할 때 test
(또는 사용하려는 사용자 정의 TLD)를 사용해야합니다.
Linux는 기본적으로 응용 프로그램이 1024의 포트 낮은 포트에 바인딩되는 것을 방지합니다. Puma-Dev를 사용하려면 포트 80/443에 바인딩 할 필요는 없지만 .test
도메인을 사용하여 훨씬 더 멋지게 만듭니다 (예 : 포트 번호를 제공하지 않고 브라우저에서 도메인을 사용할 수 있습니다. ))
Puma-Dev가 포트 80과 443에서들을 수있는 두 가지 옵션이 있습니다.
sudo setcap CAP _ NET _ BIND _ SERVICE=+eip /path/to/puma-dev
또는 2. authbind
설치하십시오. 그리고 당신이 그것을 사용하고 싶을 때 Puma-dev를 호출하십시오.
authbind puma-dev -http-port 80 -https-port 443
시작시 -sysbind
Puma -Dev로 전달하여 -http-port
및 -https-port
무시하여 80/443에 바인딩하기위한 바로 가기가 있습니다.
Linux에서는 Puma -Dev가 백그라운드에서 자동으로 실행되지 않습니다 (MacOS -install
스크립트에 따라). 전경에서 실행해야합니다. 백그라운드에서 Puma-Dev를 시작하기 위해 시스템 데몬을 설정할 수 있습니다.
/lib/systemd/system/puma-dev.service
만들고 다음을 입력하십시오. [Unit]
After=network.target
[Service]
User=$USER
ExecStart=/path/to/puma-dev -sysbind
Restart=on-failure
[Install]
WantedBy=multi-user.target
path/to/puma-dev
PUMA-DEV의 절대 경로로 교체하십시오. $USER
변수를 아래로 실행하려는 사용자의 이름으로 바꾸십시오.
sudo systemctl daemon-reload
sudo systemctl enable puma-dev
sudo systemctl start puma-dev
Selinux가있는 시스템에서는 restorecon /path/to/puma-dev
실행하려면 실행해야 할 수도 있습니다.
앱의 디렉토리를 ~/.puma-dev
로 Symlink로 간단히 표시하십시오! 그게 다야!
내장 헬퍼 하위 명령 : puma-dev link [-n name] [dir]
사용하여 앱 디렉토리를 Puma-Dev 디렉토리 ( ~/.puma-dev
)에 링크 할 수 있습니다.
실행 : puma-dev -h
매일 사용할 대부분의 값을 구성 할 수 있습니다.
PUMA-DEV는 PUMA가 시작되기 전에 로딩 환경 변수를 지원합니다. 이 순서로 다음 파일을 확인합니다.
~/.powconfig
.env
.powrc
.powenv
.pumaenv
해당 환경 변수를 '0'으로 설정하여 PUMA-DEV 이러한 환경 파일을로드하는 것을 방지 할 수 있습니다.
PUMADEV_SOURCE_POWCONFIG=0
PUMADEV_SOURCE_ENV=0
PUMADEV_SOURCE_POWRC=0
PUMADEV_SOURCE_POWENV=0
PUMADEV_SOURCE_PUMAENV=0
또한 Puma-Dev는 몇 가지 다른 환경 변수를 사용하여로드 된 쉘 구성에서 덮어 쓰일 수있는 PUMA가 시작된 방법을 제어합니다.
CONFIG
:로드 할 Puma 구성 파일, 일반적으로 config/puma-dev.rb
와 같은 것입니다. 기본적으로 구성 없음.THREADS
: Puma가 동시에 얼마나 많은 스레드를 사용해야하는지. 기본값은 5까지.WORKERS
: 시작해야 할 근로자 수. 기본값은 0으로, 즉 스레드 만 사용한다는 의미입니다..test
입니다..dev
였지만 Google이 소유하고 있으며 2017 년 12 월부터 실제 웹 사이트가 호스팅 된 HST입니다 ..dev
와 .foo
사용하지 마십시오. Puma-Dev를 특정 앱을 다시 시작하려면 해당 앱 디렉토리에서 touch tmp/restart.txt
실행할 수 있습니다.
Puma-Dev가 모든 앱을 중지하려면 (리소스 문제 또는 앱이 제대로 다시 시작되지 않기 때문에) puma-dev
신호 USR1
보낼 수 있습니다. 가장 쉬운 방법은 다음과 같습니다.
puma-dev -stop
실행 : puma-dev
Puma-Dev는 디렉토리 ~/.puma-dev
사용하여 기본적으로 시작하여 Pow와 같은 앱에 대한 Symlinks를 찾고 있습니다. cd ~/.puma-dev; ln -s /path/to/my/app test
. 이제 test.test
로 앱에 액세스 할 수 있습니다.
이러한 방식으로 puma-dev
실행하려면 기본적으로 9280
인 나열된 HTTP 포트를 사용해야합니다.
PUMA-DEV V0.3 및 나중에 시작하여 권한이있는 포트에 액세스하기 위해 시작하므로 v0.2를 설치 한 경우 방화벽 규칙을 제거해야합니다.
실행 : sudo puma-dev -cleanup
기본적으로 PUMA-DEV는 도메인 .test
사용하여 앱을 관리합니다. PUMA-DEV ~/.pow
에서 앱을 찾으려면 puma-dev -pow
실행하십시오.
Puma-Dev를 관리하려는 더 복잡한 응용 프로그램 세트가있는 경우 ~/.puma-dev
에서도 하위 디렉토리를 사용할 수도 있습니다. 이것은 호스트 이름에 슬래시 ( /
)가있는 하이픈 ( -
)으로 앱의 이름을 지정하여 작동합니다. 예를 들어 cool-frontend.test
에 액세스하면 Puma-Dev는 ~/.puma-dev/cool-frontend
찾고 아무것도 찾지 못하면 ~/.puma-dev/cool/frontend
시도하십시오.
PUMA-DEV는 멋진 개발 도메인에서 다른 앱으로 프록시 요청을 할 수 있습니다. 그렇게하려면 연결 정보와 함께 ~/.puma-dev
에 작성하십시오.
예를 들어, 포트 9292가 awesome.test
것으로 표시되도록합니다. 테스트 : echo 9292 > ~/.puma-dev/awesome
.
또는 다른 호스트에게 프록시 : echo 10.3.1.2:9292 > ~/.puma-dev/awesome-elsewhere
.
Puma-Dev는 SSL을 통해 앱을 자동으로 제공합니다. Puma-Dev를 처음 실행하면 대화 상자가 비밀번호에 넣는 것처럼 보일 수 있습니다. PUMA-DEV가 발생한 일은 ~/Library/Application Support/io.puma.dev/cert.pem
에 저장된 자체 CA 인증을 생성했습니다.
이 CA Cert는 앱에 액세스 할 때 앱에 대한 인증서를 동적으로 생성하는 데 사용됩니다. 자동으로 발생하며 구성이 필요하지 않습니다. CERT는 완전히 메모리에 저장되므로 향후 Puma-Dev의 재시작은 단순히 새로운 것을 생성합니다.
-install
이 사용될 때 (그리고 솔직히 말하면, Puma-dev를 사용하는 방법), 기본적으로 포트 443에서 리들을 듣게됩니다 ( -install-https-port
로 구성 가능) https://blah.test
수행 할 수 있습니다. https://blah.test
HTTPS를 통해 앱에 액세스 할 수 있습니다.
앱이 HTTPS를 사용하는 경우 WEBPACK DEV 서버 (WDS)를 SSL을 통해도 실행하여 브라우저 "혼합 컨텐츠"오류를 피해야합니다. WDS는 자체 인증서를 생성 할 수 있지만 정기적으로 만료되며 종종 WDS를 통해 자산의 자동 재조정을 중단하는 /sockjs-node/info?t=123
에 대한 반복 콘솔 오류를 피하기 위해 새 탭에서 재발급이 필요합니다.
이 휴가 WD는 일반 HTTP 모드로 실행하고 Puma-Dev의 프록시 및 HTTPS 기능을 결합합니다.
https://blah.test
에서 이미 실행중인 예제 앱을 위해 Rails 및 Webpacker Gem을 구성하는 방법은 다음과 같습니다.
echo 3035 > ~/.puma-dev/webpack.blah
실행하려면 WDS에 프록시를 설정하십시오.config/environments/development.rb
편집. # for webpacker-only projects
config.action_controller.asset_host = '//webpack.blah.test'
# for hybrid webpacker/sprockets projects
config.action_controller.asset_host = proc { |source| '//webpack.blah.test' if source.starts_with?('/packs') }
config/webpacker.yml
편집 : dev_server:
https: false
host: localhost
port: 3035
public: webpack.blah.test
이제 puma-dev -stop
으로 앱을 다시 시작하고 bin/webpack-dev-server
로 WDS를 시작할 수 있습니다.
Puma-Dev는 Websockets를 기본적으로 지원하지만 연결을 허용하기 위해 웹 프레임 워크에 알릴 수 있습니다.
레일의 경우 특정 도메인의 모든 웹 소켓 또는 WebSocket 요청을 허용하도록 레일을 구성해야합니다. 가장 빠른 방법은 config.action_cable.disable_request_forgery_protection = true
config/environments/development.rb
를 추가하는 것입니다. 이를 통해 개발 중에 모든 WebSocket 연결이 가능합니다.
프로덕션에서 disable_request_forgery_protection을 사용하지 마십시오!
localhost
config.action_cable.allowed_request_origins = /(.test$)|^localhost$/
와 같은 것을 추가 할 수 있습니다 .test
Puma-Dev는 xip.io
및 nip.io
도메인을 지원합니다. test
앱에 test.ABCDxip.io
로 액세스 할 수 있도록 감지하고 제거합니다.
Puma-Dev를 사용하면 여러 로컬 도메인을 실행할 수 있습니다. 둘 이상의 클라이언트와 함께 일하는 경우 편리합니다. Puma-Dev와 같은 Puma-Dev를 설정하십시오 : puma-dev -install -d first-domain:second-domain
.
Puma-Dev는 TLD뿐만 아니라 도메인을 지원합니다. puma-dev -install -d test:puma.dev
myapp.test
및 myapp.puma.dev
올바르게 해결할 수 있도록 허용합니다. 그러나 물론 이것은 프로젝트 웹 페이지를 https://puma.dev에서 접근 할 수 없게 만들 것입니다.
POW와 마찬가지로 PUMA-DEV는 정적 파일에 서비스를 지원합니다. 앱에 public
디렉토리가있는 경우 해당 디렉토리 내의 파일과 일치하는 URL에 제공됩니다. 정적 파일은 앱보다 우선 순위가 있습니다.
가상 호스트가 설치되면 지정된 호스트의 모든 하위 도메인에서 자동 액세스 할 수 있습니다. 예를 들어, myapp
가상 호스트는 http://www.myapp.test/
및 http://assets.www.myapp.test/
에서 액세스 할 수도 있습니다. 이 동작을 무시하여 www.myapp.test
다른 응용 프로그램으로 포인트 할 수 있습니다. 원하는 응용 프로그램에 대해 www.myapp
라는 다른 가상 호스트 Symlink 만 만들 수 있습니다.
Puma-Dev는 IT와 앱을 내성적으로 지향하는 데 사용할 수있는 상태 API를 발전시키기 시작했습니다. 액세스하려면 Host: puma-dev
및 경로 /status
(예 : curl -H "Host: puma-dev" localhost/status
.
상태에는 다음이 포함됩니다.
Puma-Dev는 여러 내부 이벤트를 제출하고 이벤트 API를 통해 노출시킵니다. 이러한 이벤트는 구성 오류 문제를 해결할 때 도움이 될 수 있습니다. 액세스하려면 Host: puma-dev
및 Path /events
(예 : curl -H "Host: puma-dev" localhost/events
.
Puma-Dev를 구축하려면 다음 단계를 따르십시오.
go mod download
실행하십시오make build
./puma-dev -V
실행하십시오 태그 빌드 (예 : v0.18.0
)는 홈브류 공식에 사용할 아티팩트가있는 프리 릴리스를 자동으로 생성합니다.
통과 테스트와 함께 모든 빌드는 90 일 동안 절약 된 바이너리를 게시합니다.