หน่วย NGINX เป็นเซิร์ฟเวอร์โอเพ่นซอร์สน้ำหนักเบาและอเนกประสงค์ที่มีความสามารถหลักสองประการ:
ให้บริการเนื้อหาสื่อแบบคงที่
รันโค้ดแอปพลิเคชันในแปดภาษา
หน่วยบีบอัดสแต็กแอปพลิเคชันสมัยใหม่หลายชั้นให้เป็นโซลูชันที่ทรงพลังและสอดคล้องกัน โดยมุ่งเน้นไปที่ประสิทธิภาพ เวลาแฝงต่ำ และความสามารถในการปรับขนาด มีวัตถุประสงค์เพื่อเป็นองค์ประกอบสากลสำหรับสถาปัตยกรรมเว็บใดๆ โดยไม่คำนึงถึงความซับซ้อน ตั้งแต่การใช้งานระดับองค์กรไปจนถึงหน้าแรกของสัตว์เลี้ยงของคุณ
RESTful JSON API ดั้งเดิมช่วยให้สามารถอัปเดตแบบไดนามิกโดยไม่มีการหยุดชะงักและการกำหนดค่าที่ยืดหยุ่น ในขณะที่ประสิทธิภาพการทำงานที่พร้อมใช้งานทันทีจะปรับขนาดตามปริมาณงานระดับการผลิตได้อย่างน่าเชื่อถือ เราบรรลุเป้าหมายนั้นด้วยสถาปัตยกรรมแบบอะซิงโครนัสและมัลติเธรดที่ซับซ้อนที่ประกอบด้วยกระบวนการหลายอย่างเพื่อให้มั่นใจในความปลอดภัยและความทนทานในขณะที่รับประโยชน์สูงสุดจากแพลตฟอร์มคอมพิวเตอร์ในปัจจุบัน
รันคำสั่งต่อไปนี้เพื่อติดตั้งทั้ง unitd
(Unit daemon) และ unitctl
(เครื่องมือควบคุม)
$ ชงติดตั้ง nginx/unit/unit
สำหรับรายละเอียดและแพ็คเกจภาษาที่มี โปรดดูเอกสาร
$ docker pull unit:$ mkdir /tmp/unit-control # ปรับแต่งตามต้องการ$ docker run -d --mount type=bind,src=/tmp/unit-control,dst=/var/run --mount type=bind,src=.,dst=/www --network host unit
สำหรับคำอธิบายของแท็กรูปภาพ โปรดดูเอกสาร
คำเตือน: แท็กรูปภาพล่าสุดอาจไม่รองรับโมดูลภาษาเฉพาะ โปรด ตรวจสอบแท็กรูปภาพที่มีอยู่จากลิงก์ด้านบนก่อนที่จะดึงรูปภาพของคุณ
ไดเร็กทอรีการทำงานปัจจุบันของคุณจะถูกเมานท์ไปที่อิมเมจของหน่วยที่ /www
คุณสามารถเข้าถึงซ็อกเก็ตได้ที่ /tmp/unit-control/control.unit.sock
โดยสมมติว่าไม่มีการปรับแต่งใดๆ เพิ่มเติม
สคริปต์ตัวช่วยนี้จะกำหนดค่าที่เก็บแพ็กเกจที่ถูกต้องสำหรับระบบ
$ wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit# ./setup-unit repo-config
อนุพันธ์เดเบียน:
#ฉลาดติดตั้งหน่วย
อนุพันธ์ของ Fedora:
#ยำชุดติดตั้ง
สำหรับรายละเอียดและแพ็คเกจภาษาที่มี โปรดดูเอกสาร
unitctl
unitctl
เพิ่มความคล่องตัวในการจัดการกระบวนการหน่วย NGINX ผ่านอินเทอร์เฟซบรรทัดคำสั่งที่ใช้งานง่าย หากต้องการเริ่มต้นใช้งาน unitctl
ให้ดาวน์โหลดจาก GitHub อย่างเป็นทางการหรือ Homebrew
บันทึก
หากคุณติดตั้ง Unit with Homebrew คุณสามารถข้ามขั้นตอนนี้ได้เนื่องจาก unitctl
รวมอยู่ด้วยตามค่าเริ่มต้น
ดาวน์โหลดไบนารี unitctl
ที่เหมาะสมสำหรับระบบของคุณจากหน่วย NGINX ที่เผยแพร่
$ tar xzvf unitctl-master-x86_64-unknown-linux-gnu.tar.gz# mv unitctl /usr/local/bin/
หากคุณติดตั้ง Docker ไว้ในเครื่องของคุณ คุณจะสามารถหมุนอิมเมจ Docker อย่างเป็นทางการของ Unit ข้างแอปพลิเคชันของคุณได้อย่างง่ายดาย
เคล็ดลับ
คู่มือวิธีใช้และการกำหนดค่ามีอยู่ใน unit.nginx.org สำหรับเฟรมเวิร์กแอปพลิเคชันเว็บที่สร้างด้วย Python, PHP, WebAssembly, Node.js, Ruby และอื่นๆ
นี่คือตัวอย่างการใช้อิมเมจ unit:python
Docker:
$ unitctl อินสแตนซ์ใหม่ 127.0.0.1:8001 /path/to/app 'unit:python'
/path/to/app
จะต่อเชื่อมกับ /www
ในระบบไฟล์ Docker
บันทึกสิ่งนี้ไปที่ /path/to/app/wsgi.py
:
แอปพลิเคชัน def(สภาพแวดล้อม, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return (b"Hello, Python on Unit!")
จากนั้น คุณสามารถแก้ไขการกำหนดค่าที่ใช้งานอยู่ในปัจจุบันแบบโต้ตอบได้:
แก้ไข $ unitctl
{ "listeners": { "*:8000": { // ชี้ผู้ฟังไปที่แอปพลิเคชันใหม่ "pass": "applications/python" } }, // เพิ่มคำจำกัดความของแอปพลิเคชัน "applications": { "python": { "type ": "หลาม", "เส้นทาง": "/www/", "โมดูล": "wsgi" } }}
การกำหนดค่าที่ถูกต้องจะถูกนำไปใช้เมื่อบันทึกและปิด
$ curl localhost:8000สวัสดี Python บนหน่วย!
สามารถดูตัวอย่างการกำหนดค่า Python เพิ่มเติมได้ในเอกสารหน่วย
หน่วยรันแอพในหลายภาษา มาสำรวจการกำหนดค่าของแอป PHP อย่างง่ายบน Unit ด้วย curl
กัน
สมมติว่าคุณบันทึกสคริปต์ PHP เป็น /www/helloworld/index.php
:
หากต้องการรันบนหน่วยที่ติดตั้งโมดูล
unit-php
ให้ตั้งค่าออบเจ็กต์แอปพลิเคชันก่อน มาเก็บตัวอย่างการกำหนดค่าแรกของเราไว้ในไฟล์ชื่อconfig.json
:{ "helloworld": { "ประเภท": "php", "root": "/www/helloworld/" - -ไม่จำเป็นต้องบันทึกเป็นไฟล์ แต่อาจมีประโยชน์กับวัตถุที่มีขนาดใหญ่กว่าได้
ตอนนี้
PUT
มันลงในส่วน/config/applications
ของ API การควบคุมของหน่วย ซึ่งโดยปกติจะมีให้ใช้งานตามค่าเริ่มต้นผ่านซ็อกเก็ตโดเมน Unix:# curl -X PUT --data-binary @ config.json --unix-socket /path/to/control.unit.sock http://localhost/config/applications{"success": "กำหนดค่าใหม่เสร็จแล้ว"}จากนั้น อ้างอิงแอปจากออบเจ็กต์ Listener ในส่วน
/config/listeners
ของ API คราวนี้ เราส่งข้อมูลโค้ดการกำหนดค่าโดยตรงจากบรรทัดคำสั่ง:# curl -X PUT -d '{"127.0.0.1:8080": {"pass": "applications/helloworld"}}' --unix-socket /path/to/control.unit.sock http:// localhost/config/listeners{ "success": "กำหนดค่าใหม่เสร็จแล้ว"}ตอนนี้หน่วยยอมรับคำขอที่ IP และพอร์ตที่ระบุ แล้วส่งต่อไปยังกระบวนการสมัคร แอปของคุณใช้งานได้!
$ curl 127.0.0.1:8080 สวัสดี PHP บนหน่วย!สุดท้าย ค้นหาส่วน
/config
ทั้งหมดของ API ควบคุม:# curl --unix-socket /path/to/control.unit.sock http://localhost/config/เอาต์พุตของหน่วยควรมีทั้งสองตัวอย่างซึ่งจัดระเบียบไว้อย่างเรียบร้อย:
{ "ผู้ฟัง": { "127.0.0.1:8080": { "ผ่าน": "แอปพลิเคชัน/helloworld" - }, "แอปพลิเคชัน": { "helloworld": { "type": "php", "root": "/www/helloworld/" - - -Webแอสเซมบลี
หน่วยรองรับการรัน WebAssembly Components (WASI 0.2) สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารการกำหนดค่าหน่วย
ข้อมูลจำเพาะของ OpenAPI
ข้อกำหนด OpenAPI ของเรามีจุดมุ่งหมายเพื่อลดความซับซ้อนในการกำหนดค่าและบูรณาการการใช้งานหน่วย NGINX และจัดเตรียมแหล่งความรู้ที่เชื่อถือได้เกี่ยวกับ API ควบคุม
ชุมชน
จุดเริ่มต้นในการเริ่มถามคำถามและแบ่งปันความคิดของคุณคือ GitHub Discussions
หน้าปัญหา GitHub ของเรามีพื้นที่สำหรับการอภิปรายทางเทคนิคเพิ่มเติมตามที่คุณต้องการ
แผนที่โครงการบน GitHub ช่วยให้กระจ่างเกี่ยวกับงานปัจจุบันของเราและแผนงานสำหรับอนาคต
เว็บไซต์อย่างเป็นทางการของเราอาจให้คำตอบที่ไม่สามารถหาได้จากที่อื่น
มีส่วนร่วมกับโครงการโดยมีส่วนร่วม! ดูคู่มือการสนับสนุนสำหรับรายละเอียด
หากต้องการติดต่อทีมโดยตรง โปรดสมัครรับรายชื่ออีเมล
สำหรับปัญหาด้านความปลอดภัย โปรดส่งอีเมลถึงเราโดยระบุถึงหน่วย NGINX ในหัวเรื่องและปฏิบัติตามข้อกำหนด CVSS v3.1