Puma-Dev является эмоциональным преемником Pow. Это обеспечивает быстрый и простой способ управления приложениями в разработке на macOS и Linux.
.test
(настраивается).test
, .puma
.pow
больше не поддерживается Во -первых, убедитесь, что жемчужина puma
установлен. Вероятно, он принадлежит к драгоценным камням приложений, которое вы пытаетесь служить через Puma-Dev.
# Gemfile
gem 'puma'
brew install puma/puma/puma-dev
Вы можете скачать двоичные файлы для MacOS и Linux по адресу https://github.com/puma/puma-dev/releases
#! /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
флаги для Linux не предоставлены):
Сгенерируется корень PUMA-DEV (в ~/.puma-dev-ssl/
), но вам необходимо будет установить и доверять этому в качестве авторитета сертификата, добавив его в Trust Store вашей операционной системы или доверяя ему напрямую. В вашем любимом браузере (поскольку некоторые браузеры не будут делиться трастовым магазином операционной системы).
Во-первых, запустите Puma-Dev, чтобы создать сертификат CA в ~/.puma-dev-ssl/cert.pem
.
Для 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
Для Debian, Ubuntu и т. Д. Попробуйте это:
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, чтобы использовать test
(или пользовательский TLD, который вы хотите использовать) при настройке TLD.
Linux предотвращает привязку привязки с портами по умолчанию по умолчанию. Вам не нужно связываться с портом 80/443, чтобы использовать PUMA-DEV, но он делает использование домена .test
намного приятнее (например, вы сможете использовать домен, как и в вашем браузере, а не предоставлять номер порта )
Есть 2 варианта, позволяющие 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
Существует ярлык для связывания с 80/443 путем передачи -sysbind
к Puma -DEV при запуске, что переопределяет -http-port
и -https-port
.
На 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
! Вот и все!
Вы можете использовать встроенную вспомогательную подкоманду: puma-dev link [-n name] [dir]
чтобы связать каталоги приложений в свой каталог puma-dev ( ~/.puma-dev
по умолчанию).
Беги: puma-dev -h
У вас есть возможность настроить большинство значений, которые вы используете изо дня в день.
Puma-Dev поддерживает переменные среды загрузки до начала PUMA. Он проверяет следующие файлы в этом порядке:
~/.powconfig
.env
.powrc
.powenv
.pumaenv
Вы можете помешать PUMA-DEV загружать любой из этих файлов среды, установив соответствующую переменную среды на '0':
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 года HSTS только с реальными веб -сайтами, размещенными там..dev
и .foo
, так как они настоящие TLD. Если вы хотите, чтобы PUMA-DEV перезапустили конкретное приложение , вы можете запустить touch tmp/restart.txt
в каталоге этого приложения.
Если вы хотите, чтобы Puma-Dev остановил все приложения (для проблем с ресурсами или потому, что приложение не перезагружается должным образом), вы можете отправить puma-dev
сигнал USR1
. Самый простой способ сделать это:
puma-dev -stop
Беги: puma-dev
Puma-Dev будет запускаться по умолчанию, используя каталог ~/.puma-dev
, ищет символики к приложениям, как POW. Отбросьте символическую ссылку на ваше приложение, как: cd ~/.puma-dev; ln -s /path/to/my/app test
. Теперь вы можете получить доступ к своему приложению в качестве test.test
.
Запуск puma-dev
таким образом потребует от вас использовать указанный HTTP-порт, который по умолчанию составляет 9280
.
PUMA-DEV V0.3, а затем используйте LaunchD для доступа к привилегированным портам, поэтому, если вы установили 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 также может прокси-запросы от хорошего домена Dev в другое приложение. Для этого просто напишите файл (а не в каталог Symlink'd) в ~/.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, генерирует свою собственную сертификацию CA, которая хранится в ~/Library/Application Support/io.puma.dev/cert.pem
.
Этот сертификат CA используется для динамического создания сертификатов для ваших приложений, когда запрашивается доступ к ним. Это автоматически происходит, конфигурация не требуется. СЕРТ хранятся полностью в памяти, поэтому будущие перезагрузки Puma-Dev просто генерируют новые.
Когда используется -install
(и давайте будем честными, именно так вы хотите использовать PUMA-DEV), то по умолчанию он слушает на порте 443 (настраивается с -install-https-port
), чтобы вы могли просто сделать https://blah.test
для доступа к вашему приложению через HTTPS.
Если ваше приложение использует HTTPS, то WebPack Dev Server (WDS) должен запускать также через SSL, чтобы избежать ошибок «смешанный контент» браузера. В то время как WDS может генерировать свои собственные сертификаты, они истекают регулярно и часто нуждаются в повторном привлечении на новой вкладке, чтобы избежать повторения ошибок консоли о /sockjs-node/info?t=123
которые нарушают автоматическую загрузку активов через WDS.
Чтобы исправить это, оставьте WDS, работающий в простом режиме HTTP и объедините функции Puma-Dev Proxy и HTTPS.
Вот как настроить Rails и Gem Webpacker, для примера приложения, уже работающего по https://blah.test
:
echo 3035 > ~/.puma-dev/webpack.blah
чтобы настроить прокси на WDSconfig/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
и запустить WDS с bin/webpack-dev-server
.
Puma-Dev поддерживает WebSockets, но вам может потребоваться сообщить своей веб-структуре, чтобы разрешить соединения.
В случае Rails вам необходимо настроить Rails, чтобы разрешить все веб -питания или запросы WebSocket из определенных доменов. Самый быстрый способ - добавить config.action_cable.disable_request_forgery_protection = true
to config/environments/development.rb
. Это позволит всем соединениям WebSocket в разработке.
Не используйте Disable_Request_Forgery_Protection в производстве!
Или вы можете добавить что -то вроде config.action_cable.allowed_request_origins = /(.test$)|^localhost$/
чтобы разрешить что -либо под .test
а также localhost
.
Puma-Dev поддерживает домены xip.io
и nip.io
Он обнаружит их и лиет их, так что ваше test
приложение можно было бы получить в качестве test.ABCDxip.io
.
Puma-Dev позволяет запускать несколько локальных доменов. Удобно, если вы работаете с более чем одним клиентом. Просто настройте Puma-Dev, как SO: 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
для приложения, которое вы хотите.
Puma-Dev начинает развивать API статуса, который можно использовать для интроспекции его и приложений. Чтобы получить доступ к нему, отправьте запрос с Host: puma-dev
и Path /status
, например: curl -H "Host: puma-dev" localhost/status
.
Статус включает в себя:
Puma-Dev излучает ряд внутренних событий и выставляет их через API событий. Эти события могут быть полезными при ошибках конфигурации устранения неполадок. Чтобы получить доступ к нему, отправьте запрос с Host: puma-dev
и The Path /events
, например: curl -H "Host: puma-dev" localhost/events
.
Чтобы построить Puma-Dev, выполните эти шаги:
go mod download
make build
./puma-dev -V
чтобы использовать свой новый бинарник Tagged Builds (например, v0.18.0
) автоматически создаст предварительный выпуск артефактами для использования в формуле домашнего пиво.
Все сборки с проходящими тестами будут публиковать двоичные файлы, которые сохранены в течение 90 дней.