NGINX 유닛은 두 가지 주요 기능을 갖춘 경량의 다용도 오픈 소스 서버입니다.
정적 미디어 자산을 제공하고,
8개 언어로 애플리케이션 코드를 실행합니다.
Unit은 최신 애플리케이션 스택의 여러 계층을 성능, 짧은 대기 시간 및 확장성에 초점을 맞춘 강력하고 일관된 솔루션으로 압축합니다. 이는 기업 규모의 배포부터 애완동물의 홈페이지에 이르기까지 복잡성에 관계없이 모든 웹 아키텍처를 위한 보편적인 빌딩 블록으로 만들어졌습니다.
기본 RESTful JSON API는 중단 없이 유연한 구성으로 동적 업데이트를 가능하게 하며, 즉시 사용 가능한 생산성은 프로덕션급 워크로드에 맞게 안정적으로 확장됩니다. 우리는 오늘날의 컴퓨팅 플랫폼을 최대한 활용하면서 보안과 견고성을 보장하기 위해 여러 프로세스로 구성된 복잡한 비동기식 멀티스레딩 아키텍처를 통해 이를 달성합니다.
다음 명령을 실행하여 unitd
(Unit 데몬)와 unitctl
(제어 도구)을 모두 설치합니다.
$ 양조 설치 nginx/단위/단위
자세한 내용과 사용 가능한 언어 패키지는 문서를 참조하세요.
$ docker pull unit:$ mkdir /tmp/unit-control # 필요에 따라 사용자 정의합니다.$ docker run -d --mount type=bind,src=/tmp/unit-control,dst=/var/run --mount 유형=bind,src=.,dst=/www --network 호스트 장치
이미지 태그에 대한 설명은 문서를 참조하세요.
경고: 최신 이미지 태그는 특정 언어 모듈을 지원하지 않을 수 있습니다. 이미지를 가져오기 전에 위 링크에서 사용 가능한 이미지 태그를 확인 하세요 .
이제 현재 작업 디렉터리가 /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에서 다운로드하세요.
메모
Homebrew를 사용하여 Unit을 설치한 경우 기본적으로 unitctl
이 포함되어 있으므로 이 단계를 건너뛸 수 있습니다.
NGINX 유닛 릴리스에서 시스템에 적합한 unitctl
바이너리를 다운로드하세요.
$ tar xzvf unitctl-master-x86_64-unknown-linux-gnu.tar.gz# mv unitctl /usr/local/bin/
컴퓨터에 Docker가 설치되어 있으면 애플리케이션과 함께 Unit의 공식 Docker 이미지 중 하나를 쉽게 실행할 수 있습니다.
팁
Python, PHP, WebAssembly, Node.js, Ruby 등으로 구축된 웹 애플리케이션 프레임워크에 대한 방법 및 구성 가이드는 unit.nginx.org에서 확인할 수 있습니다.
다음은 unit:python
Docker 이미지를 사용하는 예입니다.
$ unitctl 인스턴스 새 127.0.0.1:8001 /path/to/app 'unit:python'
/path/to/app
Docker 파일 시스템의 /www
에 마운트됩니다.
이것을 /path/to/app/wsgi.py
에 저장하십시오:
def application(environ, 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 ": "python", "경로": "/www/", "모듈": "wsgi" } }}
저장하고 닫으면 유효한 구성이 적용됩니다.
$ cur localhost:8000안녕하세요, Python on Unit!
더 많은 Python 구성 예제는 Unit 문서에서 찾을 수 있습니다.
유닛은 다양한 언어로 앱을 실행합니다. curl
사용하여 Unit에서 간단한 PHP 앱의 구성을 살펴보겠습니다.
PHP 스크립트를 /www/helloworld/index.php
로 저장했다고 가정해 보겠습니다.
unit-php
모듈이 설치된 Unit에서 실행하려면 먼저 애플리케이션 객체를 설정하세요. 첫 번째 구성 조각을 config.json
이라는 파일에 저장해 보겠습니다.
{ "helloworld": { "유형": "php", "루트": "/www/helloworld/" } }
파일로 저장할 필요는 없지만 더 큰 개체에 유용할 수 있습니다.
이제 이를 Unit 제어 API의 /config/applications
섹션에 PUT
. 일반적으로 Unix 도메인 소켓을 통해 기본적으로 사용할 수 있습니다.
# 컬 -X PUT --data-binary @config.json --unix-socket /path/to/control.unit.sock http://localhost/config/applications
{"성공": "재구성이 완료되었습니다."}
다음으로, API의 /config/listeners
섹션에 있는 리스너 객체에서 앱을 참조하세요. 이번에는 명령줄에서 바로 구성 조각을 전달합니다.
# 컬 -X PUT -d '{"127.0.0.1:8080": {"pass": "applications/helloworld"}}' --unix-socket /path/to/control.unit.sock http:// 로컬 호스트/구성/리스너
{ "성공": "재구성이 완료되었습니다."}
이제 유닛은 지정된 IP 및 포트에서 요청을 수락하여 이를 애플리케이션 프로세스에 전달합니다. 귀하의 앱이 작동합니다!
$ 컬 127.0.0.1:8080 안녕하세요, PHP on Unit입니다!
마지막으로 제어 API의 전체 /config
섹션을 쿼리합니다.
# 컬 --unix-socket /path/to/control.unit.sock http://localhost/config/
장치의 출력에는 깔끔하게 정리된 두 스니펫이 모두 포함되어야 합니다.
{ "리스너": { "127.0.0.1:8080": { "pass": "applications/helloworld" } }, "applications": { "helloworld": { "type": "php", "root": "/www/helloworld/" } } }
장치는 WebAssembly 구성 요소(WASI 0.2) 실행을 지원합니다. 자세한 내용은 장치 구성 문서를 참조하세요.
OpenAPI 사양은 NGINX 유닛 배포 구성 및 통합을 단순화하고 제어 API에 대한 신뢰할 수 있는 지식 소스를 제공하는 것을 목표로 합니다.
질문을 시작하고 생각을 공유할 수 있는 곳은 GitHub 토론입니다.
GitHub 문제 페이지에서는 원하는 속도에 맞춰 더욱 기술적인 토론을 할 수 있는 공간을 제공합니다.
GitHub의 프로젝트 맵은 현재 작업과 미래 계획을 보여줍니다.
당사 공식 웹사이트에서는 다른 곳에서는 쉽게 찾을 수 없는 답변을 제공할 수도 있습니다.
기여를 통해 프로젝트에 참여해보세요! 자세한 내용은 기여 가이드를 참조하세요.
팀에 직접 연락하려면 메일링 리스트를 구독하세요.
보안 문제에 대해서는 제목에 NGINX 단위를 언급하고 CVSS v3.1 사양을 따라 이메일을 보내주세요.