NGINX Unit adalah server sumber terbuka yang ringan dan serbaguna yang memiliki dua kemampuan utama:
melayani aset media statis,
menjalankan kode aplikasi dalam delapan bahasa.
Unit memampatkan beberapa lapisan tumpukan aplikasi modern menjadi solusi yang kuat dan koheren dengan fokus pada kinerja, latensi rendah, dan skalabilitas. Ini dimaksudkan sebagai landasan universal untuk arsitektur web apa pun, apa pun kompleksitasnya, mulai dari penerapan skala perusahaan hingga beranda hewan peliharaan Anda.
RESTful JSON API aslinya memungkinkan pembaruan dinamis tanpa gangguan dan konfigurasi yang fleksibel, sementara produktivitasnya yang siap pakai dapat disesuaikan dengan beban kerja tingkat produksi. Kami mencapai hal tersebut dengan arsitektur multithreading yang kompleks, asinkron, dan terdiri dari berbagai proses untuk memastikan keamanan dan ketahanan sekaligus memaksimalkan platform komputasi saat ini.
Jalankan perintah berikut untuk menginstal unitd
(daemon Unit) dan unitctl
(alat kontrol).
$ minuman instal nginx/unit/unit
Untuk detail dan paket bahasa yang tersedia, lihat dokumen.
$ docker pull unit:$ mkdir /tmp/unit-control # sesuaikan sesuai kebutuhan.$ docker run -d --mount type=bind,src=/tmp/unit-control,dst=/var/run --mount type=bind,src=.,dst=/www --network host unit
Untuk penjelasan tentang tag gambar, lihat dokumen.
PERINGATAN: tag gambar terbaru mungkin tidak menyediakan dukungan untuk modul bahasa tertentu, periksa tag gambar yang tersedia dari tautan di atas sebelum mengambil gambar Anda.
Direktori kerja Anda saat ini sekarang akan dipasang ke image Unit di /www
. Anda dapat mencapai soketnya di /tmp/unit-control/control.unit.sock
dengan asumsi tidak ada penyesuaian lebih lanjut yang dilakukan.
Skrip pembantu ini mengonfigurasi repositori paket yang benar untuk sistem.
$ wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit# ./setup-unit repo-config
Turunan Debian:
# unit pemasangan yang tepat
Turunan Fedora:
# nyam pasang unit
Untuk detail dan paket bahasa yang tersedia, lihat dokumen.
unitctl
unitctl
menyederhanakan pengelolaan proses Unit NGINX melalui antarmuka baris perintah yang mudah digunakan. Untuk memulai unitctl
, unduh dari rilis resmi GitHub atau Homebrew.
Catatan
Jika Anda menginstal Unit dengan Homebrew, Anda dapat melewati langkah ini karena unitctl
disertakan secara default.
Unduh biner unitctl
yang sesuai untuk sistem Anda dari rilis Unit NGINX.
$ tar xzvf unitctl-master-x86_64-unknown-linux-gnu.tar.gz# mv unitctl /usr/local/bin/
Jika Anda telah menginstal Docker di mesin Anda, maka Anda dapat dengan mudah memutar salah satu image Docker resmi Unit di samping aplikasi Anda.
Tip
Panduan cara kerja dan konfigurasi tersedia di unit.nginx.org untuk kerangka aplikasi web yang dibangun dengan Python, PHP, WebAssembly, Node.js, Ruby, dan banyak lagi.
Berikut ini contoh penggunaan gambar Docker unit:python
:
$ unitctl instance baru 127.0.0.1:8001 /path/to/app 'unit:python'
/path/to/app
akan dipasang ke /www
di sistem file Docker.
Simpan ini ke /path/to/app/wsgi.py
:
def application(environ, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return (b"Halo, Python di Unit!")
Anda kemudian dapat mengedit konfigurasi yang sedang aktif secara interaktif:
$ unitctl edit
{ "listeners": { "*:8000": { // Arahkan pendengar ke aplikasi baru "pass": "applications/python" } }, // Tambahkan definisi aplikasi "applications": { "python": { "type ": "python", "jalur": "/www/", "modul": "wsgi" } }}
Konfigurasi yang valid akan diterapkan saat menyimpan dan menutup.
$ curl localhost:8000Halo, Python di Unit!
Contoh konfigurasi Python lainnya dapat ditemukan di dokumen Unit.
Unit menjalankan aplikasi dalam berbagai bahasa. Mari jelajahi konfigurasi aplikasi PHP sederhana di Unit dengan curl
.
Misalkan Anda menyimpan skrip PHP sebagai /www/helloworld/index.php
:
Untuk menjalankannya di Unit dengan modul unit-php
terinstal, pertama-tama siapkan objek aplikasi. Mari simpan cuplikan konfigurasi pertama kita dalam file bernama config.json
:
{ "helloworld": { "ketik": "php", "root": "/www/helloworld/" } }
Menyimpannya sebagai file tidak diperlukan, namun bisa berguna dengan objek yang lebih besar.
Sekarang, PUT
ke bagian /config/applications
pada API kontrol Unit, biasanya tersedia secara default melalui soket domain Unix:
# curl -X PUT --data-binary @config.json --unix-socket /path/to/control.unit.sock http://localhost/config/applications
{"success": "Konfigurasi ulang selesai."}
Selanjutnya, referensikan aplikasi dari objek pendengar di bagian /config/listeners
pada API. Kali ini, kami meneruskan cuplikan konfigurasi langsung dari baris perintah:
# curl -X PUT -d '{"127.0.0.1:8080": {"pass": "applications/helloworld"}}' --unix-socket /path/to/control.unit.sock http:// localhost/config/listeners
{ "sukses": "Konfigurasi ulang selesai."}
Sekarang Unit menerima permintaan pada IP dan port yang ditentukan, meneruskannya ke proses aplikasi. Aplikasi Anda berfungsi!
$ curl 127.0.0.1:8080 Halo, PHP di Unit!
Terakhir, kueri seluruh bagian /config
pada API kontrol:
# curl --unix-socket /path/to/control.unit.sock http://localhost/config/
Keluaran unit harus berisi kedua cuplikan, tertata rapi:
{ "pendengar": { "127.0.0.1:8080": { "lulus": "aplikasi/helloworld" } }, "aplikasi": { "helloworld": { "type": "php", "root": "/www/helloworld/" } } }
Unit mendukung menjalankan Komponen WebAssembly (WASI 0.2). Untuk informasi lebih lanjut lihat Dokumen Konfigurasi Unit.
Spesifikasi OpenAPI kami bertujuan untuk menyederhanakan konfigurasi dan integrasi penerapan Unit NGINX dan menyediakan sumber pengetahuan resmi tentang API kontrol.
Tempat terbaik untuk mulai mengajukan pertanyaan dan berbagi pemikiran Anda adalah Diskusi GitHub.
Halaman masalah GitHub kami menawarkan ruang untuk diskusi yang lebih teknis sesuai keinginan Anda.
Peta proyek di GitHub menyoroti pekerjaan kami saat ini dan rencana untuk masa depan.
Situs web resmi kami mungkin memberikan jawaban yang tidak mudah ditemukan.
Terlibatlah dalam proyek ini dengan berkontribusi! Lihat panduan berkontribusi untuk detailnya.
Untuk menghubungi tim secara langsung, berlangganan milis.
Untuk masalah keamanan, kirim email kepada kami, sebutkan Unit NGINX di subjek dan ikuti spesifikasi CVSS v3.1.