---
title: "ओपनरेस्टी के पीछे के सबप्रोजेक्ट्स - API7.ai"
description: "यह पोस्ट OpenResty की डायरेक्टरी संरचना और संबंधित टूल्स, जैसे कि NGINX C Modules, test-nginx, lua-resty प्रोजेक्ट्स, और अन्य को परिचय कराती है।"
url: "https://api7.ai/hi/learning-center/openresty/subprojects-behind-openresty"
---

# ओपनरेस्टी के पीछे के सबप्रोजेक्ट्स

API7.ai

September 12, 2022

[OpenResty (NGINX + Lua)](https://api7.ai/learning-center/openresty)

`nginx.conf` से Lua कोड को कैसे निकालें और इसे पठनीय और रखरखाव योग्य बनाएं? समाधान काफी सरल है। आइए देखें कि इसे OpenResty द्वारा कैसे लागू किया जाए।

सबसे पहले, `lua` नामक एक डायरेक्टरी बनाएं। फिर, हम सभी `.lua` फाइलों को इसमें रखेंगे।

```
$ mkdir lua

$ cat lua/hello.lua
ngx.say("hello, world")
```

दूसरा, `nginx.conf` फाइल में `content_by_lua_file` को `content_by_lua_block` से बदलें।

```
pid logs/nginx.pid;
events {
  worker_connections 1024;
}

http {
  server {
    listen 8080;
    location / {
      content_by_lua_file lua/hello.lua;
      }
    }
  }
```

तीसरा, OpenResty की सेवाओं को पुनः आरंभ करें, और यह हो गया!

```
$ sudo kill -HUP `cat logs/nginx.pid`
```

`content_by_lua_file` का उपयोग करके, हम Lua फाइल को सीधे अपडेट कर सकते हैं, `nginx.conf` को अपडेट करने के बजाय। लेकिन कुछ प्रश्न हैं:

1. हम `content_by_lua_file lua/hello.lua` सेक्शन में एक रिलेटिव पथ का उपयोग करते हैं। OpenResty वास्तविक Lua फाइल को कैसे ढूंढता है?
2. Lua कोड को संशोधित करने के बाद, हमें इसे काम करने के लिए OpenResty को पुनः आरंभ करने की आवश्यकता होती है, क्या कोई तरीका है जिससे हम इसे कुशलता से डीबग कर सकें?
3. Lua फाइलों वाली डायरेक्टरी को OpenResty के लुकअप पथ में कैसे जोड़ें?

मैं आपको इन प्रश्नों के बारे में सोचने के लिए प्रोत्साहित करता हूं, जिनका उत्तर आधिकारिक दस्तावेज़ीकरण में मिल सकता है। यही कारण है कि मैं हमेशा दस्तावेज़ीकरण के महत्व पर जोर देता हूं।

पहले प्रश्न के लिए, यदि रिलेटिव पथ दिया गया है, तो जब OpenResty शुरू होता है, तो यह OpenResty स्टार्टअप कमांड लाइन पैरामीटर्स में `-p PATH` को प्रीफिक्स करेगा और रिलेटिव पथ को एक एब्सोल्यूट पथ में जोड़ देगा। इस तरह, OpenResty Lua फाइल को आसानी से ढूंढ सकता है।

दूसरी समस्या यह है कि Lua कोड पहले अनुरोध पर लोड होता है और डिफ़ॉल्ट रूप से कैश हो जाता है। इसलिए हर बार जब आप Lua स्रोत फाइल को बदलते हैं, तो आपको इसे काम करने के लिए OpenResty को पुनः लोड करना होगा। आप `nginx.conf` में `lua_code_cache` को बंद करके पुनः लोड करने से बच सकते हैं। हालांकि, यह ध्यान रखना आवश्यक है कि यह विधि केवल विकास और डीबगिंग के लिए अस्थायी रूप से उपयोग की जा सकती है। इसलिए यदि आप प्रोडक्शन पर डिप्लॉय कर रहे हैं, तो आपको कैश को सक्षम करना होगा। अन्यथा, इसका प्रदर्शन पर महत्वपूर्ण प्रभाव पड़ेगा।

अंतिम प्रश्न के लिए, OpenResty Lua मॉड्यूल के लिए लुकअप पथ सेट करने के लिए `lua_package_path` डायरेक्टिव प्रदान करता है। उदाहरण के लिए, हम `lua_package_path` को `$prefix/lua/?.lua;;` सेट कर सकते हैं:

- `$prefix` स्टार्टअप पैरामीटर में `-p PATH` है।
- `/lua/?.lua` `.lua` सफ़िक्स वाली Lua डायरेक्टरी में सभी फाइलों को इंगित करता है।
- अंतिम दो सेमीकोलन बिल्ट-इन कोड सर्च पथ को दर्शाते हैं।

## इंस्टालेशन के बाद डायरेक्टरी संरचना

पहले hello world प्रोग्राम को समझने के बाद, आइए नीचे जाएं और देखें कि OpenResty की डायरेक्टरी संरचना इंस्टालेशन के बाद कैसी दिखती है और इसमें कौन सी फाइलें शामिल हैं।

हम पहले -V विकल्प का उपयोग करके देखते हैं कि OpenResty कहां है। निम्नलिखित परिणाम के लिए, मैंने कई मॉड्यूल कंपाइलेशन पैरामीटर्स को छोड़ दिया है, जिन्हें हम बाद में जोड़ेंगे:

```
$ openresty -V

nginx version: openresty/1.13.6.2
built by clang 10.0.0 (clang-1000.10.44.4)
built with OpenSSL 1.1.0h  27 Mar 2018
TLS SNI support enabled
configure arguments: --prefix=/usr/local/Cellar/openresty/1.13.6.2/nginx ...
```

मैं अपने Mac पर OpenResty को इंस्टॉल करने के लिए brew का उपयोग करता हूं। पथ `/usr/local/Cellar/openresty/1.13.6.2/nginx` है, जो आपके वातावरण से भिन्न हो सकता है। इस पथ में `bin`, `luajit`, `lualib`, `nginx`, `pod` और अन्य डायरेक्टरीज़ शामिल हैं। इन फ़ोल्डरों के अर्थ को समझना आवश्यक है ताकि हम OpenResty को बेहतर ढंग से सीख सकें। तो आइए उन्हें एक-एक करके देखें।

पहले महत्वपूर्ण `bin` डायरेक्टरी है।

```
$ ll /usr/local/Cellar/openresty/1.13.6.2/bin

total 320
-r-xr-xr-x  1 ming  admin    19K  3 27 12:54 md2pod.pl
-r-xr-xr-x  1 ming  admin    15K  3 27 12:54 nginx-xml2pod
lrwxr-xr-x  1 ming  admin    19B  3 27 12:54 openresty -> ../nginx/sbin/nginx
-r-xr-xr-x  1 ming  admin    62K  3 27 12:54 opm
-r-xr-xr-x  1 ming  admin    29K  3 27 12:54 resty
-r-xr-xr-x  1 ming  admin    15K  3 27 12:54 restydoc
-r-xr-xr-x  1 ming  admin   8.3K  3 27 12:54 restydoc-index
```

इसमें OpenResty CLI resty शामिल है जिसका हमने पिछले सेक्शन में उल्लेख किया था और कोर एक्ज़ीक्यूटेबल, `openresty`, जो वास्तव में nginx का एक सॉफ्ट लिंक है। डायरेक्टरी में अन्य टूल्स के बारे में कोई संदेह नहीं है, resty की तरह, वे सभी Perl स्क्रिप्ट्स हैं।

इनमें से, opm एक पैकेज मैनेजमेंट टूल है जो हमें विभिन्न प्रकार के थर्ड-पार्टी पैकेजों को प्रबंधित करने की अनुमति देता है, जिसे हम बाद में एक सेक्शन में कवर करेंगे; और `restydoc`, पहले सेक्शन से एक पुराना दोस्त, OpenResty द्वारा प्रदान किया गया एक डॉक्यूमेंटेशन व्यूअर है, जो हमें OpenResty और NGINX डॉक्यूमेंटेशन देखने की अनुमति देता है।

```
$ restydoc -s ngx.say
$ restydoc -s proxy_pass
```

उपरोक्त दो उदाहरण OpenResty API और NGINX कमांड्स को क्रमशः क्वेरी करते हैं। `restydoc` एक टूल है जो सर्वर-साइड इंजीनियर्स के लिए विकास पर ध्यान केंद्रित करने में बहुत मददगार है।

`bin` डायरेक्टरी को ब्राउज़ करने के बाद, आइए `pod` डायरेक्टरी पर चलते हैं।

सबसे पहले, हम इस बात पर जोर दें कि यहां `pod` का Kubernetes में पॉड की अवधारणा से कोई संबंध नहीं है। इसके बजाय, `pod` Perl मॉड्यूल के लिए डॉक्यूमेंटेशन लिखने के लिए Perl में उपयोग की जाने वाली एक मार्कअप भाषा है। और इस डायरेक्टरी में `OpenResty`, `NGINX`, `lua-resty-*`, और `LuaJIT` के लिए डॉक्यूमेंटेशन शामिल है, जो सभी पहले उल्लिखित `restydoc` के साथ जुड़े हुए हैं।

अगले परिचित `NGINX` और `luajit` डायरेक्टरीज़ हैं। ये दोनों समझने में आसान हैं। ये मुख्य रूप से NGINX और LuaJIT एक्ज़ीक्यूटेबल फाइलों और डिपेंडेंसीज़ को स्टोर करते हैं और OpenResty की नींव हैं। कई लोग कहते हैं कि OpenResty Lua पर आधारित है, लेकिन यह सटीक नहीं है। जैसा कि हम ऊपर देख सकते हैं, OpenResty वास्तव में LuaJIT पर आधारित है।

वास्तव में, शुरुआती चरण में, OpenResty Lua और LuaJIT दोनों के साथ आता था, और हम कंपाइलेशन विकल्पों द्वारा Lua या LuaJIT का उपयोग करने का निर्णय ले सकते थे, लेकिन Lua को डिप्रेकेट किया जा रहा है, और केवल उच्च-प्रदर्शन LuaJIT का समर्थन किया जाता है।

अंत में, आइए `lualib` डायरेक्टरी को देखें। इसमें OpenResty में उपयोग की जाने वाली Lua लाइब्रेरीज़ शामिल हैं, जो मुख्य रूप से दो डायरेक्टरीज़ में विभाजित हैं: `ngx` और `resty`।

- `ngx` डायरेक्टरी में आधिकारिक [lua-resty-core](https://github.com/openresty/lua-resty-core/tree/master/lib/ngx) प्रोजेक्ट से Lua कोड्स होते हैं, जो OpenResty API के FFI पुनः कार्यान्वयन पर आधारित हैं। मैं एक विशेष अध्याय में समझाऊंगा कि हमें इसे पुनः कार्यान्वित करने की आवश्यकता क्यों है।
- resty डायरेक्टरी में विभिन्न `lua-resty-*` प्रोजेक्ट्स से Lua कोड्स होते हैं, जिन्हें हम अगले में छूएंगे।

इस कोर्स की परंपरा के अनुसार, इस बिंदु पर मैं इन डायरेक्टरीज़ के स्रोत का स्रोत दूंगा। यह ओपन सोर्स प्रोजेक्ट्स के आनंद में से एक है। यदि आपको तोड़ने और अंत तक पूछने का शौक है, तो आप हमेशा और रोचक चीजें पाएंगे।

यहां CentOS के लिए OpenResty का [पैकेजिंग स्क्रिप्ट](https://github.com/openresty/openresty-packaging/blob/master/rpm/SPECS/openresty.spec#L218) है, जिसमें उपरोक्त सभी डायरेक्टरीज़ शामिल हैं।

```
%files
%defattr(-,root,root,-)

/etc/init.d/%{name}
/usr/bin/%{name}
%{orprefix}/bin/openresty
%{orprefix}/site/lualib/
%{orprefix}/luajit/*
%{orprefix}/lualib/*
%{orprefix}/nginx/html/*
%{orprefix}/nginx/logs/
%{orprefix}/nginx/sbin/*
%{orprefix}/nginx/tapset/*
%config(noreplace) %{orprefix}/nginx/conf/*
%{orprefix}/COPYRIGHT
```

## OpenResty प्रोजेक्ट अवलोकन

जब OpenResty की बात आती है, तो हम `lua-nginx-module` के बारे में सोचते हैं। हां, यह NGINX C मॉड्यूल वास्तव में OpenResty का कोर है, लेकिन यह OpenResty के बराबर नहीं है। कई इंजीनियर्स OpenResty को `ngx + lua` कहते हैं, जो कई तकनीकी सम्मेलनों द्वारा साझा और प्रकाशित पुस्तकों में भी उपयोग किया जाता है। यह सख्त नहीं है और OpenResty समुदाय द्वारा समर्थित नहीं है।

मैं बताऊंगा कि क्यों और `lua-nginx-module` के अलावा OpenResty में अन्य संबंधित प्रोजेक्ट्स क्या हैं।

GitHub पर OpenResty के प्रोजेक्ट [होमपेज](https://github.com/openresty/) को खोलें, और आप देख सकते हैं कि OpenResty में 68 सार्वजनिक प्रोजेक्ट्स शामिल हैं, जो मोटे तौर पर निम्नलिखित सात श्रेणियों में विभाजित हैं। मैं उन्हें अलग-अलग संक्षेप में परिचय दूंगा ताकि आपको एक प्रारंभिक छाप मिल सके और इसे जल्दी सीख सकें।

### NGINX C मॉड्यूल्स

OpenResty के प्रोजेक्ट नामकरण मानकीकृत हैं, और जिन्हें `*-nginx-module` नाम दिया गया है, वे NGINX C मॉड्यूल हैं।

OpenResty में 20 से अधिक C मॉड्यूल हैं, और हम उन्हें `openresty -V` का उपयोग करके ढूंढ सकते हैं, जिसका हमने इस सेक्शन की शुरुआत में उपयोग किया था।

```
$ openresty -V

nginx version: openresty/1.13.6.2
built by clang 10.0.0 (clang-1000.10.44.4)
built with OpenSSL 1.1.0h  27 Mar 2018
TLS SNI support enabled
configure arguments: --prefix=/usr/local/Cellar/openresty/1.13.6.2/nginx --with-cc-opt='-O2 -I/usr/local/include -I/usr/local/opt/pcre/include -I/usr/local/opt/openresty-openssl/include' --add-module=../ngx_devel_kit-0.3.0 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2rc3 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.13 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../ngx_stream_lua-0.0.5 --with-ld-opt='-Wl,-rpath,/usr/local/Cellar/openresty/1.13.6.2/luajit/lib -L/usr/local/lib -L/usr/local/opt/pcre/lib -L/usr/local/opt/openresty-openssl/lib' --pid-path=/usr/local/var/run/openresty.pid --lock-path=/usr/local/var/run/openresty.lock --conf-path=/usr/local/etc/openresty/nginx.conf --http-log-path=/usr/local/var/log/nginx/access.log --error-log-path=/usr/local/var/log/nginx/error.log --with-pcre-jit --with-ipv6 --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_v2_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_auth_request_module --with-http_secure_link_module --with-http_random_index_module --with-http_geoip_module --with-http_gzip_static_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-threads --with-dtrace-probes --with-stream --with-stream_ssl_module --with-http_ssl_module
```

यहां `--add-module=` के बाद OpenResty के C मॉड्यूल हैं। कोर वाले हैं `lua-nginx-module` और `stream-lua-nginx-module`, पहले वाला Layer 7 ट्रैफ़िक को हैंडल करने के लिए और दूसरा Layer 4 ट्रैफ़िक को ड्राइव करने के लिए।

इनमें से कुछ C मॉड्यूल्स पर विशेष ध्यान देने की आवश्यकता है और अनुशंसित नहीं हैं, हालांकि वे डिफ़ॉल्ट रूप से OpenResty में कंपाइल होते हैं। उदाहरण के लिए, `redis2-nginx-module`, `redis-nginx-module`, और `memc-nginx-module` Redis और Memcached के साथ इंटरऑपरेट करने के लिए उपयोग किए जाते हैं। ये C लाइब्रेरीज़ OpenResty द्वारा शुरुआती चरण में अनुशंसित थीं, लेकिन cosocket फीचर जोड़ने के बाद `lua-resty-redis` और `lua-resty-memcached` द्वारा प्रतिस्थापित कर दी गई हैं, और निष्क्रिय रूप से बनाए रखी जाती हैं।

OpenResty बाद में अधिक NGINX C लाइब्रेरीज़ विकसित नहीं करेगा, लेकिन `cosocket-based` Lua लाइब्रेरी पर ध्यान केंद्रित करेगा, जो भविष्य है।

### lua-resty-\* लाइब्रेरीज़

आधिकारिक OpenResty रिपॉजिटरी में 18 `lua-resty-*` लाइब्रेरीज़ शामिल हैं, जिनमें Redis, MySQL, Memcached, WebSocket, DNS, ट्रैफ़िक कंट्रोल, स्ट्रिंग प्रोसेसिंग, इन-प्रोसेस कैशिंग, और अन्य स्टैंडर्ड लाइब्रेरीज़ शामिल हैं। आधिकारिक लोगों के अलावा, और भी थर्ड-पार्टी लाइब्रेरीज़ हैं। वे आवश्यक हैं, और हम अगले सेक्शन में इन लाइब्रेरीज़ पर अधिक समय देंगे।

### स्व-प्रबंधित LuaJIT शाखा

OpenResty अपने स्वयं के OpenSSL पैच के अलावा अपनी [LuaJIT शाखा](https://github.com/openresty/luajit2) को भी प्रबंधित करता है। 2015 में, LuaJIT के लेखक Mike Pall ने एक नए LuaJIT प्रबंधक की तलाश में अपनी सेवानिवृत्ति की घोषणा की, लेकिन Mike को एक उपयुक्त प्रबंधक नहीं मिला। वह अब मुख्य रूप से बगफिक्स रखरखाव कर रहे हैं, और नई सुविधाओं का विकास निलंबित कर दिया गया है, इसलिए OpenResty अपनी LuaJIT शाखा को प्रबंधित करता है।

Lua की तुलना में, LuaJIT बहुत सारी आवश्यक और अद्वितीय सुविधाएँ जोड़ता है, लेकिन बहुत से इंजीनियर्स उनके बारे में नहीं जानते हैं, इसलिए वे अर्ध-छिपे हुए कौशल हैं जिन्हें मैं बाद में परिचय दूंगा।

### टेस्टिंग फ्रेमवर्क

OpenResty का टेस्टिंग फ्रेमवर्क [test-nginx](https://github.com/openresty/test-nginx) है, जो Perl में भी विकसित किया गया है, और जैसा कि नाम से पता चलता है, यह विशेष रूप से NGINX-संबंधित प्रोजेक्ट्स को टेस्ट करने के लिए डिज़ाइन किया गया है। OpenResty के सभी आधिकारिक टेस्ट केस C मॉड्यूल और `lua-resty` लाइब्रेरी के लिए `test-nginx` द्वारा संचालित हैं। यह एक बहुत अधिक शक्तिशाली और स्वतंत्र प्रणाली है, जो सामान्य असेर्शन-आधारित फ्रेमवर्क्स से अलग है।

कुछ OpenResty योगदानकर्ताओं ने भी इस टेस्टिंग फ्रेमवर्क को समझा नहीं है और कभी-कभी PRs सबमिट करते हैं जिनमें जटिल C और Lua कोड होते हैं लेकिन फिर भी संबंधित टेस्ट केस लिखने के विचार से डरते हैं। इसलिए यदि आपने OpenResty प्रोजेक्ट के `/t` डायरेक्टरी में कुछ टेस्ट केस देखे हैं और अभी भी भ्रमित हैं, तो अभी तक खुद पर संदेह न करें। अधिकांश लोग समान हैं।

`test-nginx` के अलावा, [mockeagain](https://github.com/openresty/mockeagain) प्रोजेक्ट एक धीमे नेटवर्क का अनुकरण करता है, जो प्रोग्राम को एक बार में एक बाइट पढ़ने और लिखने की अनुमति देता है। यह वेब सर्वर के लिए एक बहुत उपयोगी टूल है।

### डीबग टूलचेन

OpenResty प्रोजेक्ट ने कोड को वैज्ञानिक और गतिशील रूप से डीबग करने के तरीके पर बहुत प्रयास किया है।

दो OpenResty प्रोजेक्ट्स, [openresty-systemtap-toolkit](https://github.com/openresty/openresty-systemtap-toolkit), और [stapxx](https://github.com/openresty/stapxx), `systemtap` पर आधारित हैं, जो एक गतिशील डीबगिंग और ट्रेसिंग टूल है। systemtap का उपयोग करने का सबसे बड़ा लाभ यह है कि यह लक्षित एप्लिकेशन के लिए पूरी तरह से गैर-आक्रामक होते हुए भी इन-विवो विश्लेषण सक्षम करता है।

उदाहरण के लिए, एक `systemtap` अस्पताल जाने और CT स्कैन कराने जैसा है, दर्द रहित और अप्रत्यक्ष। इससे भी बेहतर, `systemtap` प्रदर्शन विश्लेषण के लिए दृश्य फ्लेम ग्राफ उत्पन्न कर सकता है, जिसे मैं बाद में वर्णन करूंगा, इसलिए यहां एक फ्लेम ग्राफ है जो आपको एक अंदाज़ देगा।

![OpenResty संबंधित फ्लेम ग्राफ](https://static.api7.ai/uploads/2023/12/25/Ysj9Uqfk_rEx9YfVXSV.jpg?imageMogr2/format/webp)

### पैकेज

विभिन्न वितरण ऑपरेटिंग सिस्टम (जैसे CentOS, Ubuntu, macOS, आदि) में OpenResty के पैकेजिंग स्क्रिप्ट्स को अधिक संतोषजनक नियंत्रण के लिए हाथ से लिखा गया है। जब हमने इंस्टालेशन के बाद डायरेक्टरी संरचना का परिचय दिया, तो हमने पहले ही इन पैकेजिंग-संबंधित प्रोजेक्ट्स को कवर कर लिया है: [openresty-packaging](https://github.com/openresty/openresty-packaging) और [home-brew](https://github.com/openresty/homebrew-brew)। यदि आप इसमें रुचि रखते हैं, तो आप इसे स्वयं सीख सकते हैं, और मैं यहां इसे दोहराऊंगा नहीं।

### इंजीनियरिंग टूल्स

इन बड़े प्रोजेक्ट्स के अलावा, OpenResty के पास कई इंजीनियरिंग टूल्स हैं जो ज्यादातर छिपे हुए हैं।

उदाहरण के लिए, [openresty-devel-utils](https://github.com/openresty/openresty-devel-utils) OpenResty और NGINX के लिए डेवलपमेंट टूलसेट है। बेशक, वे Perl में भी विकसित किए गए हैं, और अधिकांश टूल्स अप्रलेखित हैं। लेकिन OpenResty डेवलपर्स के लिए, ये टूल्स बहुत उपयोगी हैं। मैं कुछ को चुनकर संक्षेप में परिचय दूंगा।

- [lj-releng](https://github.com/openresty/openresty-devel-utils/blob/master/lj-releng) एक सरल और प्रभावी LuaJIT कोड इंस्पेक्शन टूल है, जो `luacheck` के समान है, जो ग्लोबल वेरिएबल्स के साथ संभावित समस्याओं को ढूंढ सकता है।
- [reindex](https://github.com/openresty/openresty-devel-utils/blob/master/reindex), जिसका अर्थ है इंडेक्स को पुनः बनाना, `test-nginx` टेस्ट केस को फॉर्मेट करने, टेस्ट केस नंबरों को पुनर्व्यवस्थित करने, और अतिरिक्त व्हाइटस्पेस को हटाने के लिए एक टूल है। `reindex` OpenResty डेवलपर्स द्वारा प्रतिदिन उपयोग किए जाने वाले टूल्स में से एक है।
- [opsboy](https://github.com/openresty/opsboy) स्वचालित डिप्लॉयमेंट करने के लिए उपयोग किया जाता है। यह OpenResty द्वारा प्रत्येक रिलीज़ से पहले AWS EC2 क्लस्टर पर किए जाने वाले रिग्रेशन टेस्ट को डिप्लॉय और ड्राइव करने के लिए उपयोग किया जाता है। विस्तृत जानकारी के लिए, आप [आधिकारिक दस्तावेज़ीकरण](https://openresty.org/en/ec2-test-cluster.html) देख सकते हैं। `opsboy` Perl में लागू एक DSL है। OpenResty लेखक समस्याओं को हल करने के लिए विभिन्न DSLs बनाना पसंद करते हैं।

## सारांश

आज, हमने मुख्य रूप से OpenResty की इंस्टालेशन के बाद डायरेक्टरी संरचना और इसके पीछे कुछ उप-प्रोजेक्ट्स को सीखा। आज की सामग्री को सीखने के बाद, मुझे आशा है कि आप OpenResty के प्रोजेक्ट्स के बारे में अधिक जान सकेंगे। OpenResty NGINX लोड बैलेंसिंग और रिवर्स प्रॉक्सी के दायरे से कहीं आगे निकल चुका है और अपने स्वयं के इकोसिस्टम को साकार कर चुका है। अगली बार हम इसके बारे में विस्तार से बात करेंगे।

## आगे पढ़ने के लिए

- [OpenResty और NGINX में क्या अंतर है?](https://api7.ai/learning-center/openresty/openresty-vs-nginx/)
- [आपका पहला OpenResty प्रोग्राम: Hello World](https://api7.ai/learning-center/openresty/hello-world-in-openresty/)

Share article link

Share

Related Posts

[![OpenResty FAQ | OpenResty का व्यवहारिक उपयोग कैसे किया जाता है](https://static.api7.ai/uploads/2023/02/12/jbv9M0zi_Hello%20World%20in%20OpenResty%20%283%29.png)](https://api7.ai/learning-center/openresty/faq-5)

## [OpenResty FAQ | OpenResty का व्यवहारिक उपयोग कैसे किया जाता है](https://api7.ai/learning-center/openresty/faq-5)

[![भाग 3: OpenResty का उपयोग करके एक Microservices API Gateway कैसे बनाएं](https://static.api7.ai/uploads/2023/02/07/3XJXY9Jy_45.png)](https://api7.ai/learning-center/openresty/how-to-build-a-microservices-api-gateway-part-3)

## [भाग 3: OpenResty का उपयोग करके एक Microservices API Gateway कैसे बनाएं](https://api7.ai/learning-center/openresty/how-to-build-a-microservices-api-gateway-part-3)

Table of Contents

- [इंस्टालेशन के बाद डायरेक्टरी संरचना](#%E0%A4%87%E0%A4%82%E0%A4%B8%E0%A5%8D%E0%A4%9F%E0%A4%BE%E0%A4%B2%E0%A5%87%E0%A4%B6%E0%A4%A8-%E0%A4%95%E0%A5%87-%E0%A4%AC%E0%A4%BE%E0%A4%A6-%E0%A4%A1%E0%A4%BE%E0%A4%AF%E0%A4%B0%E0%A5%87%E0%A4%95%E0%A5%8D%E0%A4%9F%E0%A4%B0%E0%A5%80-%E0%A4%B8%E0%A4%82%E0%A4%B0%E0%A4%9A%E0%A4%A8%E0%A4%BE)

- [OpenResty प्रोजेक्ट अवलोकन](#openresty-%E0%A4%AA%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%9C%E0%A5%87%E0%A4%95%E0%A5%8D%E0%A4%9F-%E0%A4%85%E0%A4%B5%E0%A4%B2%E0%A5%8B%E0%A4%95%E0%A4%A8)

  - [NGINX C मॉड्यूल्स](#nginx-c-%E0%A4%AE%E0%A5%89%E0%A4%A1%E0%A5%8D%E0%A4%AF%E0%A5%82%E0%A4%B2%E0%A5%8D%E0%A4%B8)
  - [lua-resty-\* लाइब्रेरीज़](#lua-resty--%E0%A4%B2%E0%A4%BE%E0%A4%87%E0%A4%AC%E0%A5%8D%E0%A4%B0%E0%A5%87%E0%A4%B0%E0%A5%80%E0%A4%9C%E0%A4%BC)
  - [स्व-प्रबंधित LuaJIT शाखा](#%E0%A4%B8%E0%A5%8D%E0%A4%B5-%E0%A4%AA%E0%A5%8D%E0%A4%B0%E0%A4%AC%E0%A4%82%E0%A4%A7%E0%A4%BF%E0%A4%A4-luajit-%E0%A4%B6%E0%A4%BE%E0%A4%96%E0%A4%BE)
  - [टेस्टिंग फ्रेमवर्क](#%E0%A4%9F%E0%A5%87%E0%A4%B8%E0%A5%8D%E0%A4%9F%E0%A4%BF%E0%A4%82%E0%A4%97-%E0%A4%AB%E0%A5%8D%E0%A4%B0%E0%A5%87%E0%A4%AE%E0%A4%B5%E0%A4%B0%E0%A5%8D%E0%A4%95)
  - [डीबग टूलचेन](#%E0%A4%A1%E0%A5%80%E0%A4%AC%E0%A4%97-%E0%A4%9F%E0%A5%82%E0%A4%B2%E0%A4%9A%E0%A5%87%E0%A4%A8)
  - [पैकेज](#%E0%A4%AA%E0%A5%88%E0%A4%95%E0%A5%87%E0%A4%9C)
  - [इंजीनियरिंग टूल्स](#%E0%A4%87%E0%A4%82%E0%A4%9C%E0%A5%80%E0%A4%A8%E0%A4%BF%E0%A4%AF%E0%A4%B0%E0%A4%BF%E0%A4%82%E0%A4%97-%E0%A4%9F%E0%A5%82%E0%A4%B2%E0%A5%8D%E0%A4%B8)

- [सारांश](#%E0%A4%B8%E0%A4%BE%E0%A4%B0%E0%A4%BE%E0%A4%82%E0%A4%B6)

- [आगे पढ़ने के लिए](#%E0%A4%86%E0%A4%97%E0%A5%87-%E0%A4%AA%E0%A4%A2%E0%A4%BC%E0%A4%A8%E0%A5%87-%E0%A4%95%E0%A5%87-%E0%A4%B2%E0%A4%BF%E0%A4%8F)
