Puma-dev adalah penerus emosional untuk POW. Ini memberikan cara cepat dan mudah untuk mengelola aplikasi dalam pengembangan di macOS dan Linux.
.test
(dapat dikonfigurasi).test
, .puma
.pow
Yang Mulia tidak lagi dipertahankan Pertama, pastikan permata puma
dipasang. Itu mungkin termasuk dalam gemfile aplikasi yang Anda coba layani melalui Puma-dev.
# Gemfile
gem 'puma'
brew install puma/puma/puma-dev
Anda dapat mengunduh binari untuk macOS dan Linux di 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
Jika Anda ingin puma-dev
menggunakan port selain 80, lewati melalui -install-port
, misalnya untuk menggunakan port 81: puma-dev -install -install-port 81
.
Catatan: Jika Anda menginstal PUMA-DEV V0.2, silakan jalankan sudo puma-dev -cleanup
untuk menghapus aturan firewall yang tidak lagi digunakan Puma-dev (dan akan bertentangan dengan PUMA-DEV yang berfungsi).
Catatan: Jika Anda telah menginstal POW sebelum sistem, pastikan untuk menjalankan skrip uninstall POW. Baca lebih lanjut detail dalam manual POW.
Jalankan: puma-dev -uninstall
CATATAN: Jika Anda lulus opsi khusus (misalnya -d test:localhost
) untuk -setup
, pastikan untuk meneruskannya ke -uninstall
juga. Jika tidak /etc/resolver/*
mungkin berisi entri yatim.
Ketika Puma-dev diinstal sebagai agen pengguna (mode default), itu akan mencatat output dari dirinya sendiri dan aplikasi ke ~/Library/Logs/puma-dev.log
. Anda dapat merujuk ke sana untuk mengetahui apakah aplikasi sudah dimulai dan mencari kesalahan.
Di masa depan, Puma-dev akan menyediakan konsol terintegrasi untuk output log ini.
PUMA -DEV mendukung Linux tetapi membutuhkan langkah -langkah instalasi tambahan berikut untuk diikuti untuk membuat semua fitur berfungsi ( -install
dan -setup
flag untuk Linux tidak disediakan):
Root PUMA-DEV CA dihasilkan (dalam ~/.puma-dev-ssl/
), tetapi Anda perlu menginstal dan mempercayai ini sebagai otoritas sertifikat dengan menambahkannya ke toko kepercayaan sertifikat sistem operasi Anda, atau dengan mempercayainya secara langsung secara langsung Di browser favorit Anda (karena beberapa browser tidak akan berbagi toko kepercayaan sistem operasi).
Pertama, mulailah Puma-dev untuk menghasilkan sertifikat CA ke ~/.puma-dev-ssl/cert.pem
.
Untuk Arch Linux, Fedora dan distribusi lainnya menggunakan P11-KIT, coba ini:
# 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
Untuk Debian, Ubuntu dll, coba ini:
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
Pada sistem dengan systemd-resolved
.localhost
Extension akan tersedia secara default. Coba ping some-domain.localhost
untuk melihat apakah itu berfungsi.
Agar permintaan ke domain .test
(atau kustom lainnya) untuk diselesaikan, instal dev-tld-resolver, pastikan untuk menggunakan test
(atau TLD khusus yang ingin Anda gunakan) saat mengkonfigurasi TLD.
Linux mencegah aplikasi dari mengikat ke port lebih rendah 1024 secara default. Anda tidak perlu mengikat ke port 80/443 untuk menggunakan puma-dev tetapi membuat menggunakan domain .test
jauh lebih bagus (mis. Anda akan dapat menggunakan domain apa adanya di browser Anda daripada menyediakan nomor port )
Ada 2 opsi untuk memungkinkan Puma-dev mendengarkan di port 80 dan 443:
sudo setcap CAP _ NET _ BIND _ SERVICE=+eip /path/to/puma-dev
atau 2. Instal authbind
. dan memohon puma-dev dengan itu saat Anda ingin menggunakannya misalnya
authbind puma-dev -http-port 80 -https-port 443
Ada jalan pintas untuk mengikat ke 80/443 dengan melewati -sysbind
ke puma -dev saat memulai, yang mengesampingkan -http-port
dan -https-port
.
Di Linux, Puma -dev tidak akan secara otomatis berjalan di latar belakang (sesuai dengan skrip macOS -install
); Anda harus menjalankannya di latar depan. Anda dapat mengatur daemon sistem untuk memulai PUMA-dev di latar belakang sendiri.
/lib/systemd/system/puma-dev.service
dan letakkan di berikut ini: [Unit]
After=network.target
[Service]
User=$USER
ExecStart=/path/to/puma-dev -sysbind
Restart=on-failure
[Install]
WantedBy=multi-user.target
Ganti path/to/puma-dev
dengan jalur absolut ke Puma-dev Ganti variabel $USER
dengan nama pengguna yang ingin Anda jalankan di bawah.
sudo systemctl daemon-reload
sudo systemctl enable puma-dev
sudo systemctl start puma-dev
Pada sistem dengan Selinux Anda mungkin harus menjalankan restorecon /path/to/puma-dev
untuk menjalankannya.
Cukup symlink direktori aplikasi Anda ke ~/.puma-dev
! Itu saja!
Anda dapat menggunakan sub-perintah helper bawaan: puma-dev link [-n name] [dir]
untuk menautkan direktori aplikasi ke direktori puma-dev Anda ( ~/.puma-dev
secara default).
Jalankan: puma-dev -h
Anda memiliki kemampuan untuk mengonfigurasi sebagian besar nilai yang akan Anda gunakan sehari-hari.
Puma-dev mendukung variabel lingkungan pemuatan sebelum PUMA dimulai. Itu memeriksa file -file berikut dalam urutan ini:
~/.powconfig
.env
.powrc
.powenv
.pumaenv
Anda dapat mencegah PUMA-DEV memuat salah satu file lingkungan ini dengan mengatur variabel lingkungan yang sesuai ke '0':
PUMADEV_SOURCE_POWCONFIG=0
PUMADEV_SOURCE_ENV=0
PUMADEV_SOURCE_POWRC=0
PUMADEV_SOURCE_POWENV=0
PUMADEV_SOURCE_PUMAENV=0
Selain itu, Puma-dev menggunakan beberapa variabel lingkungan lain untuk mengontrol bagaimana PUMA dimulai sehingga Anda dapat menimpa dalam konfigurasi shell yang dimuat.
CONFIG
: File konfigurasi PUMA untuk dimuat, biasanya sesuatu seperti config/puma-dev.rb
. Default ke tidak ada konfigurasi.THREADS
: Berapa banyak utas Puma yang harus digunakan secara bersamaan. Default ke 5.WORKERS
: Berapa banyak proses pekerja untuk memulai. Default ke 0, artinya hanya menggunakan utas..test
..dev
, tetapi dimiliki oleh Google dan sejak Desember 2017 HSTS hanya dengan situs web nyata yang di -host di sana..dev
dan .foo
, karena mereka adalah TLD asli. Jika Anda ingin meminta PUMA-DEV memulai kembali aplikasi tertentu , Anda dapat menjalankan touch tmp/restart.txt
di direktori aplikasi itu.
Jika Anda ingin Puma-dev menghentikan semua aplikasi (untuk masalah sumber daya atau karena aplikasi tidak dimulai kembali dengan benar), Anda dapat mengirim puma-dev
sinyal USR1
. Cara termudah untuk melakukannya adalah:
puma-dev -stop
Jalankan: puma-dev
Puma-dev akan startup secara default menggunakan direktori ~/.puma-dev
, mencari symlink ke aplikasi seperti POW. Jatuhkan symlink ke aplikasi Anda di sana sebagai: cd ~/.puma-dev; ln -s /path/to/my/app test
. Anda sekarang dapat mengakses aplikasi Anda sebagai test.test
.
Menjalankan puma-dev
dengan cara ini akan mengharuskan Anda untuk menggunakan port HTTP yang terdaftar, yaitu 9280
secara default.
PUMA-DEV V0.3 dan kemudian Gunakan LaunchD untuk mengakses port istimewa, jadi jika Anda menginstal V0.2, Anda harus menghapus aturan Firewall.
Jalankan: sudo puma-dev -cleanup
Secara default, Puma-dev menggunakan domain .test
untuk mengelola aplikasi Anda. Jika Anda ingin memiliki PUMA-DEV mencari aplikasi di ~/.pow
, cukup jalankan puma-dev -pow
.
Jika Anda memiliki serangkaian aplikasi yang lebih kompleks yang Anda ingin dikelola PUMA-DEV, Anda dapat menggunakan subdirektori di bawah ~/.puma-dev
juga. Ini berfungsi dengan memberi nama aplikasi dengan tanda hubung ( -
) di mana Anda akan memiliki slash ( /
) di nama host. Jadi misalnya jika Anda mengakses cool-frontend.test
, puma-dev akan mencari ~/.puma-dev/cool-frontend
dan jika tidak menemukan apa pun, coba ~/.puma-dev/cool/frontend
.
Puma-dev juga dapat memberikan permintaan dari domain dev yang bagus ke aplikasi lain. Untuk melakukannya, cukup tulis file (bukan direktori symlink'd) ke ~/.puma-dev
dengan informasi koneksi.
Misalnya, untuk meminta port 9292 muncul sebagai awesome.test
: echo 9292 > ~/.puma-dev/awesome
.
Atau ke proxy ke host lain: echo 10.3.1.2:9292 > ~/.puma-dev/awesome-elsewhere
.
Puma-dev secara otomatis membuat aplikasi tersedia melalui SSL juga. Ketika Anda pertama kali menjalankan PUMA-DEV, itu kemungkinan akan menyebabkan dialog muncul dalam kata sandi Anda. Apa yang terjadi di sana adalah PUMA-DEV menghasilkan sertifikasi CA sendiri yang disimpan di ~/Library/Application Support/io.puma.dev/cert.pem
.
CA sertifikat itu digunakan untuk secara dinamis membuat sertifikat untuk aplikasi Anda saat akses ke mereka diminta. Secara otomatis terjadi, tidak perlu konfigurasi. CERT disimpan sepenuhnya dalam memori sehingga restart Puma-dev di masa depan hanya menghasilkan yang baru.
Saat -install
digunakan (dan jujur saja, itulah yang ingin Anda gunakan Puma-dev), maka itu mendengarkan port 443 secara default (dapat dikonfigurasi dengan -install-https-port
) sehingga Anda bisa melakukan https://blah.test
untuk mengakses aplikasi Anda melalui https.
Jika aplikasi Anda menggunakan HTTPS maka server WebPack Dev (WDS) harus dijalankan melalui SSL juga untuk menghindari kesalahan browser "konten campuran". Sementara WDS dapat menghasilkan sertifikatnya sendiri, ini kedaluwarsa secara teratur dan sering perlu didapatkan kembali di tab baru untuk menghindari pengulangan kesalahan konsol tentang /sockjs-node/info?t=123
yang memecahkan muatan aset secara otomatis melalui WDS.
Untuk memperbaiki WDS cuti ini berjalan dalam mode HTTP biasa dan menggabungkan fitur proxy dan https PUMA-DEV.
Inilah cara mengkonfigurasi rel dan permata webpacker, untuk contoh aplikasi yang sudah berjalan di https://blah.test
:
echo 3035 > ~/.puma-dev/webpack.blah
untuk mengatur proxy ke WDSconfig/environments/development.rb
untuk memasukkan salah satu dari yang berikut: # 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
agar cocok: dev_server:
https: false
host: localhost
port: 3035
public: webpack.blah.test
Anda sekarang dapat memulai ulang aplikasi dengan puma-dev -stop
dan memulai wds dengan bin/webpack-dev-server
.
Puma-dev mendukung Websockets secara asli tetapi Anda mungkin perlu memberi tahu kerangka kerja web Anda untuk mengizinkan koneksi.
Dalam hal rel, Anda perlu mengkonfigurasi rel untuk memungkinkan semua websockets atau permintaan websocket dari domain tertentu. Cara tercepat adalah menambahkan config.action_cable.disable_request_forgery_protection = true
ke config/environments/development.rb
. Ini akan memungkinkan semua koneksi Websocket saat dalam pengembangan.
Jangan gunakan disable_request_forgery_protection dalam produksi!
Atau Anda dapat menambahkan sesuatu seperti config.action_cable.allowed_request_origins = /(.test$)|^localhost$/
untuk mengizinkan apa pun di bawah .test
serta localhost
.
PUMA-DEV mendukung domain xip.io
dan nip.io
Ini akan mendeteksi mereka dan melepaskannya, sehingga aplikasi test
Anda dapat diakses sebagai test.ABCDxip.io
.
Puma-dev memungkinkan Anda menjalankan beberapa domain lokal. Handy jika Anda bekerja dengan lebih dari satu klien. Cukup atur puma-dev like so: puma-dev -install -d first-domain:second-domain
.
Puma-dev mendukung domain, bukan hanya TLD. puma-dev -install -d test:puma.dev
akan mengizinkan myapp.test
dan myapp.puma.dev
untuk diselesaikan dengan benar. Tapi, tentu saja, ini akan membuat halaman web proyek di https://puma.dev tidak dapat diakses.
Seperti POW, dukungan PUMA-DEV yang menyajikan file statis. Jika suatu aplikasi memiliki direktori public
, maka setiap URL yang cocok dengan file dalam direktori itu dilayani. File statis memiliki prioritas di atas aplikasi.
Setelah host virtual diinstal, itu juga dapat diakses secara otomatis dari semua subdomain host yang disebutkan. Misalnya, host virtual myapp
juga dapat diakses di http://www.myapp.test/
dan http://assets.www.myapp.test/
. Anda dapat mengesampingkan perilaku ini untuk, katakanlah, point www.myapp.test
ke aplikasi yang berbeda: cukup buat symlink host virtual lain bernama www.myapp
untuk aplikasi yang Anda inginkan.
PUMA-DEV mulai mengembangkan API status yang dapat digunakan untuk mengintrospeksinya dan aplikasi. Untuk mengaksesnya, kirim permintaan dengan Host: puma-dev
dan path /status
, misalnya: curl -H "Host: puma-dev" localhost/status
.
Statusnya meliputi:
Puma-dev memancarkan sejumlah peristiwa internal dan memaparkannya melalui API Acara. Peristiwa ini dapat membantu saat memecahkan masalah konfigurasi. Untuk mengaksesnya, kirim permintaan dengan Host: puma-dev
dan jalur /events
, misalnya: curl -H "Host: puma-dev" localhost/events
.
Untuk membangun puma-dev, ikuti langkah-langkah ini:
go mod download
make build
./puma-dev -V
untuk menggunakan biner baru Anda Tagged build (mis. v0.18.0
) akan secara otomatis membuat pra-rilis dengan artefak untuk digunakan dalam formula homebrew.
Semua build dengan tes yang lewat akan menerbitkan binari yang disimpan selama 90 hari.