Puma-Dev هو الخلف العاطفي لأسرب الأسرى. يوفر طريقة سريعة وسهلة لإدارة التطبيقات في التطوير على MacOS و Linux.
.test
Sublowain (قابل للتكوين).test
، .puma
.pow
الموقر أولاً ، تأكد من تثبيت GEM puma
. ربما ينتمي إلى gemfile من التطبيق (التطبيقات) التي تحاول تقديمها عبر 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
يتم توفير أعلام Linux و -setup
):
يتم إنشاء CA Puma-dev Root CA (في ~/.puma-dev-ssl/
) ، ولكن ستحتاج إلى تثبيت هذا والثقة به كسلطة شهادة عن طريق إضافته إلى متجر الثقة في نظام التشغيل الخاص بك ، أو عن طريق الوثوق به مباشرة في متصفحك المفضل (لأن بعض المتصفحات لن تشارك في متجر Trust لنظام التشغيل).
أولاً ، ابدأ 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
.
In order for requests to the .test
(or any other custom) domain to resolve, install the dev-tld-resolver, making sure to use test
(or the custom TLD you want to use) when configuring TLDs.
يمنع Linux التطبيقات من الربط إلى المنافذ أقل من 1024 بشكل افتراضي. لا تحتاج إلى ربط المنفذ 80/443 لاستخدام PUMA-DEV ولكنه يجعل استخدام المجال .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
هناك اختصار للربط بـ 80/443 عن طريق تمرير -sysbind
إلى PUMA -DEV عند البدء ، مما يتجاوز -http-port
و -https-port
.
على Linux ، لن يتم تشغيل PUMA -DEV تلقائيًا في الخلفية (وفقًا للنص MACOS -install
) ؛ ستحتاج إلى تشغيله في المقدمة. يمكنك إعداد Daemon System لبدء 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
: كم عدد المواضيع التي يجب أن تستخدمها بوما بشكل متزامن. الافتراضات إلى 5.WORKERS
: كم عدد عمليات العمال للبدء. الافتراضيات إلى 0 ، وهذا يعني فقط استخدام المواضيع..test
..dev
، ولكنه مملوك لشركة Google ومنذ Dec 2017 HSTS فقط مع مواقع الويب الحقيقية المستضافة هناك..dev
و .foo
، لأنها TLDs حقيقية. إذا كنت ترغب في إعادة تشغيل PUMA-DEV تطبيقًا معينًا ، فيمكنك تشغيل touch tmp/restart.txt
في دليل هذا التطبيق.
إذا كنت ترغب في الحصول على PUMA-DEV توقف جميع التطبيقات (لمشكلات الموارد أو لأن التطبيق لا يعيد تشغيله بشكل صحيح) ، فيمكنك إرسال puma-dev
للإشارة USR1
. أسهل طريقة للقيام بذلك هي:
puma-dev -stop
تشغيل: puma-dev
ستبدأ PUMA-DEV افتراضيًا باستخدام الدليل ~/.puma-dev
، يبحث عن symlinks للتطبيقات تمامًا مثل POW. قم بإسقاط ارتباطك على تطبيقك هناك على النحو التالي: cd ~/.puma-dev; ln -s /path/to/my/app test
. يمكنك الآن الوصول إلى تطبيقك test.test
.
سيتطلب تشغيل puma-dev
بهذه الطريقة استخدام منفذ HTTP المدرج ، وهو 9280
بشكل افتراضي.
PUMA-DEV V0.3 واستخدم LAFFTD لاحقًا للوصول إلى المنافذ المميزة ، لذلك إذا قمت بتثبيت V0.2 ، فستحتاج إلى إزالة قواعد جدار الحماية.
Run: 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 لإنشاء شهادات لتطبيقاتك ديناميكيًا عند طلب الوصول إليها. يحدث تلقائيًا ، لا يوجد تكوين ضروري. يتم تخزين Certs بالكامل في الذاكرة ، لذا فإن إعادة التشغيل المستقبلي لـ Puma-Dev تولد ببساطة أدوات جديدة.
عندما يتم -install
(ودعونا نكون صادقين ، هكذا تريد استخدام PUMA-DEV) ، ثم يستمع على المنفذ 443 افتراضيًا (قابل للتكوين باستخدام -install-https-port
) حتى تتمكن فقط من القيام https://blah.test
قم بالوصول إلى تطبيقك عبر HTTPS.
إذا كان تطبيقك يستخدم HTTPS ، فيجب تشغيل خادم WebPack Dev (WDS) عبر SSL أيضًا لتجنب أخطاء "المحتوى المختلط" للمتصفح. على الرغم من أن WDS يمكنه إنشاء شهاداته الخاصة ، فإنها تنتهي صلاحيتها بانتظام وغالبًا ما تحتاج إلى إعادة تربية في علامة تبويب جديدة لتجنب تكرار أخطاء وحدة التحكم حول /sockjs-node/info?t=123
التي تكسر التحميل التلقائي للأصول عبر WD.
لإصلاح هذا الإجازة ، تعمل WDS في وضع HTTP العادي وجمع بين ميزات الوكيل و HTTPS من PUMA-DEV.
إليك كيفية تكوين القضبان وجوهرة 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 أصليًا ولكن قد تحتاج إلى إخبار إطار الويب الخاص بك للسماح بالاتصالات.
في حالة القضبان ، تحتاج إلى تكوين القضبان للسماح لجميع طلبات WebSockets أو WebSocket من بعض المجالات. أسرع طريقة هي إضافة config.action_cable.disable_request_forgery_protection = true
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 يدعم المجالات ، وليس فقط TLDs. 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 في تطوير واجهة برمجة تطبيقات الحالة التي يمكن استخدامها لإدراجها والتطبيقات. للوصول إليه ، أرسل طلبًا مع Host: puma-dev
والمسار /status
، على سبيل المثال: curl -H "Host: puma-dev" localhost/status
.
تشمل الحالة:
تنبعث PUMA-DEV عددًا من الأحداث الداخلية وتكشفها من خلال واجهة برمجة تطبيقات الأحداث. يمكن أن تكون هذه الأحداث مفيدة عند استكشاف أخطاء تكوين استكشاف الأخطاء وإصلاحها. للوصول إليه ، أرسل طلبًا مع Host: puma-dev
والمسار /events
، على سبيل المثال: curl -H "Host: puma-dev" localhost/events
.
لبناء puma-dev ، اتبع هذه الخطوات:
go mod download
make build
./puma-dev -V
لاستخدام ثنائي الجديد سيتم إنشاء Tagged Builds (على سبيل المثال v0.18.0
) تلقائيًا مسبقًا مع القطع الأثرية للاستخدام في صيغة البيرة.
جميع البناء مع اختبارات النجاح سوف تنشر ثنائيات يتم حفظها لمدة 90 يومًا.