Puma-DevはPowの感情的な後継者です。 MacOSとLinuxの開発中のアプリを迅速かつ簡単に管理する方法を提供します。
.test
サブドメインを使用してアプリに簡単にアクセスできます(設定可能).test
、 .puma
。pow
もはや維持されませんまず、 puma
Gemがインストールされていることを確認してください。おそらく、Puma-Devを介してサービスを提供しようとしているアプリケーションのGemfileに属しています。
# Gemfile
gem 'puma'
brew install puma/puma/puma-dev
https://github.com/puma/puma-dev/releasesでMacosとLinuxのバイナリをダウンロードできます
#! /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以外のポートを使用してもらいたい場合は、ポート81: puma-dev -install -install-port 81
使用するなど、 -install-port
を介して渡します。
注: 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をサポートしていますが、すべての機能を機能させるために次の追加のインストール手順を実行する必要があります(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
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をインストールして、TLDを構成するときにtest
(または使用するカスタムTLD)を必ず使用します。
Linuxは、デフォルトでその1024を低下させるポートへのアプリケーションのバインディングを防ぎます。 Puma-devを使用するためにポート80/443にバインドする必要はありませんが、 .test
ドメインを使用することははるかに良くなります(たとえば、ポート番号を提供するのではなく、ブラウザでドメインを使用できるようになります。 ))
Puma-Devがポート80と443で聴くことができる2つのオプションがあります。
sudo setcap CAP _ NET _ BIND _ SERVICE=+eip /path/to/puma-dev
または2。AuthBind authbind
インストールします。そして、あなたがそれを使用したいときにPuma-devを呼び出します例:
authbind puma-dev -http-port 80 -https-port 443
開始時に-sysbind
Puma -devに渡すことにより、 -https-port
/443にバインドするためのショートカットがあり-http-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
を置き換えて、 $USER
変数を実行するユーザーの名前をpuma-devに置き換えます。
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
対応する環境変数を「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月以降、 HSTSはそこにホストされている実際のWebサイトのみを使用しています。.dev
と.foo
は実際のtldsであるため、使用しないでください。PUMA-DEVが特定のアプリを再起動したい場合は、そのアプリのディレクトリでtouch tmp/restart.txt
を実行できます。
PUMA-DEVにすべてのアプリを停止したい場合(リソースの問題について、またはアプリが適切に再起動していないため)、 puma-dev
にSignal USR1
送信できます。それを行う最も簡単な方法は、次のとおりです。
puma-dev -stop
実行: puma-dev
Puma-Devは、Directory〜 ~/.puma-dev
使用してデフォルトで起動し、POWのようなアプリへのSymlinksを探します。そこにあるアプリにSymlinkをドロップします: cd ~/.puma-dev; ln -s /path/to/my/app test
。これで、アプリにtest.test
としてアクセスできます。
この方法でpuma-dev
実行するには、デフォルトで9280
であるリストされているHTTPポートを使用する必要があります。
PUMA-DEV V0.3以降はLaunchDを使用して特権ポートにアクセスするため、V0.2をインストールした場合は、ファイアウォールルールを削除する必要があります。
実行: sudo puma-dev -cleanup
デフォルトでは、PUMA-DEVはドメイン.test
を使用してアプリを管理します。 ~/.pow
でアプリをPuma-devに探したい場合は、 puma-dev -pow
を実行してください。
PUMA-DEVを管理したいアプリケーションのより複雑なセットがある場合は、 ~/.puma-dev
の下でサブディレクトリも使用できます。これは、ホスト名にスラッシュ( /
)があるハイフン( -
)でアプリに名前を付けることで機能します。たとえば、 cool-frontend.test
にアクセスすると、puma-devは~/.puma-dev/cool-frontend
~/.puma-dev/cool/frontend
を探します。
Puma-Devは、Dev Devドメインから別のアプリへのプロキシリクエストもできます。そのために、接続情報を使用して~/.puma-dev
に(Symlink'dディレクトリではなく)ファイルを書き込むだけです。
たとえば、ポート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証明書は、アプリへのアクセスが要求されたときにアプリの証明書を動的に作成するために使用されます。自動的に発生し、構成は必要ありません。証明書は完全にメモリに保存されているため、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
新しいタブで再信頼する必要があります。
これを修正するには、WDSがプレーン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をネイティブにサポートしていますが、接続を許可するためにWebフレームワークを伝える必要がある場合があります。
Railsの場合、特定のドメインからのすべてのWebSocketまたはWebSocketリクエストを許可するようにRailsを構成する必要があります。最も簡単な方法はconfig/environments/development.rb
config.action_cable.disable_request_forgery_protection = true
を追加することです。これにより、開発中にすべての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を使用すると、複数のローカルドメインを実行できます。複数のクライアントで作業している場合は便利です。 SOのように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でプロジェクトWebページがアクセスできません。
POWのように、PUMA-DEVは静的ファイルを提供するサポートをサポートします。アプリにpublic
ディレクトリがある場合、そのディレクトリ内のファイルに一致するURLが提供されます。静的ファイルは、アプリよりも優先されます。
仮想ホストがインストールされると、指定されたホストのすべてのサブドメインから自動的にアクセスできます。たとえば、 myapp
仮想ホストにはhttp://www.myapp.test/
およびhttp://assets.www.myapp.test/
にアクセスすることもできます。この動作を、たとえば、 www.myapp.test
別のアプリケーションにポイントするには、必要なアプリケーションの別www.myapp
仮想ホストSymlinkという名前の別の仮想ホストSymlinkを作成するだけです。
Puma-Devは、ITとアプリを内省するために使用できるステータスAPIを進化させ始めています。アクセスするには、 Host: puma-dev
とパス/status
、たとえば: curl -H "Host: puma-dev" localhost/status
。
ステータスには以下が含まれます:
PUMA-DEVは、多くの内部イベントを発し、イベントAPIを通じてそれらを公開します。これらのイベントは、構成エラーのトラブルシューティング時に役立ちます。それにアクセスするには、 Host: puma-dev
とパス/events
、たとえば: curl -H "Host: puma-dev" localhost/events
。
PUMA-DEVを構築するには、次の手順に従ってください。
go mod download
実行しますmake build
実行します./puma-dev -V
を実行して、新しいバイナリを使用しますタグ付きビルド( v0.18.0
など)は、Homebrewフォーミュラで使用するアーティファクトを使用してプリリースを自動的に作成します。
合格テストを伴うすべてのビルドは、90日間保存されるバイナリを公開します。