Nginx 學習筆記(一) 從原始碼編譯Nginx(上)

翻譯至https://www.nginx.com官網

原文連結https://www.nginx.com/resources/admin-guide/installing-nginx-open-source

下列包含在括弧中的內容為筆者所添加。

1.選擇欲編譯的版本.

開源Nginx有兩個版本,所以要先選擇想要建置的版本進行原碼下載。
可以事先調查版本特性以及確定功能需求在進行決定,對之後選擇模塊

及檔案最小化有有關鍵性影響。

版本大略分別為:

  • 維護中的最新版本(不穩定):擁有最新特性,及最新更新的版本。
  • 穩定版,已經被多次測試且修補所有可見BUG,推薦給商品發行版本使用。

2.編譯相依賴庫

Nginx標準編譯依賴下列三種庫,所以在編譯原碼前必須先建好相關類庫。
(當然,如果之後為了嵌入式系統建置,有用不到的類庫,可以跳過此處編譯
並在之後configure時 進行設定。)

分別是:
  • pcre 被NGINX Core 和 Rewrite modules所需要的正規表達式庫
  •  zlib library –被NGINX Gzip模塊要求 ,http2 當中封包包頭header壓縮。
  • the OpenSSL library 被 NGINX SSL 模塊要求, 這是為了支持 HTTPS 協議。

建置方法:
  • (如果在Windows上進行編譯,建議先下載msys模擬linux底下的auto conf操作)。
  • LINUX及MSYS環境可以遵循以下操作
PCRE
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
$ tar -zxf pcre-8.39.tar.gz
$ cd pcre-8.39
$ ./configure
$ make
$ sudo make install
ZLIB
$ wget http://zlib.net/zlib-1.2.8.tar.gz
$ tar -zxf zlib-1.2.8.tar.gz
$ cd zlib-1.2.8
$ ./configure
$ make
$ sudo make install
OPENSSL
$ wget http://www.openssl.org/source/openssl-1.0.2f.tar.gz
$ tar -zxf openssl-1.0.2f.tar.gz
$ cd openssl-1.0.2f
$ ./configure darwin64-x86_64-cc --prefix=/usr
$ make
$ sudo make install

3.選擇原碼

官網查詢連結:https://www.nginx.com/.
如步驟一所述,選擇想要編譯的原碼進行下載

  • 日期:2016/11/27 日期相差過遠請至官網查詢正確版本,現在的Matian(維護版)下載
$ wget http://nginx.org/download/nginx-1.11.6.tar.gz
$ tar zxf nginx-1.11.6.tar.gz
$ cd nginx-1.11.6


  • 日期:2016/11/27日期相差過遠請至官網查詢正確版本,現在的Stable(穩定版本)下載
$ wget http://nginx.org/download/nginx-1.10.2.tar.gz
$ tar zxf nginx-1.10.2.tar.gz
$ cd nginx-1.10.2

4.建置選項設定

設定編譯選項來決定編譯的方法以及決定那些模塊會編入主程式中。
  • 範例:
$ ./configure
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-pcre=../pcre-8.39
--with-zlib=../zlib-1.2.8
--with-http_ssl_module
--with-stream
--with-mail=dynamic
--add-module=/usr/build/nginx-rtmp-module
--add-dynamic-module=/usr/build/3party_module


步驟一  模塊及路徑配置選項設置

配置NGINX路徑configure腳本能設置NIGNX二進製文件和配置文件以及依賴庫(如PCRE或SSL)的路徑,以便將它們靜態鏈接到NGINX執行檔。 
  • --prefix = path定義將保留NGINX文件的目錄。該目錄還將用於由./configure腳本(不包括庫路徑)設置的所有相對路徑以及nginx.conf配置文件的路徑。默認情況下,路徑設置為/ usr / local / nginx。
  •  --sbin-path = path設置NGINX可執行文件的名稱。此名稱僅在安裝期間使用。默認情況下,文件命名為/ sbin / nginx前綴。
  •  --conf-path = path設置NGINX配置文件的名稱。默認情況下,文件命名為prefix / conf / nginx.conf。請注意,無論此選項如何,都可以通過在命令行中使用-c選項指定不同的配置文件,始終啟動NGINX。 
  • --pid-path = path設置存儲主進程進程ID的nginx.pid文件的名稱。安裝後,可以使用pid指令在nginx.conf配置文件中始終更改文件名的路徑。默認情況下,文件命名為prefix / logs / nginx.pid。 
  • --error-log-path = path設置主錯誤,警告和診斷文件的名稱。在成功安裝nginx後,可以使用error_log命令在nginx.conf配置文件中始終更改文件名。默認情況下,文件命名為prefix / logs / error.log。
  •  --http-log-path = path設置HTTP服務器的主要請求日誌文件的名稱。在成功安裝nginx後,可以使用access_log命令在nginx.conf配置文件中始終更改文件名。默認情況下,文件命名為prefix / logs / access.log。
  •  --user = name設置非特權用戶的名稱,其憑據將由NGINX工作進程使用。在成功安裝nginx後,可以使用user指令在nginx.conf配置文件中更改名稱。默認用戶名為nobody。
  •  --group = name設置其憑據將由NGINX工作進程使用的組的名稱。在成功安裝nginx後,可以使用user指令在nginx.conf配置文件中始終更改名稱。默認情況下,組名稱設置為非特權用戶的名稱。
  •  --with-pcre = path設置PCRE庫源的路徑。在location指令和ngx_http_rewrite_module模塊中,正則表達式支持需要庫。
  •  --with-pcre-jit使用“即時編譯”支持(pcre_jit指令)構建PCRE庫。
  •  --with-zlib = path設置zlib庫的源的路徑。庫是ngx_http_gzip_module模塊所必需的。



步驟二  gcc選項設置

在配置腳本中,還可以指定編譯器相關的選項。(如果想額外添加功能上去可以在這做設置)
--with-cc-opt = parameters
設置將添加到CFLAGS變量的其他參數。
當在FreeBSD下使用系統PCRE庫時,必須指定--with-cc-opt =“ - I / usr / local / include”。
如果需要增加select()支持的文件數量,也可以在這裡指定,例如:--with-cc-opt =“ - D FD_SETSIZE = 2048”。
--with-ld-opt = parameters
設置將在鏈接期間使用的其他參數。 當在FreeBSD下使用系統PCRE庫時,必須指定--with-ld-opt =“ - L / usr / local / lib”。


步驟三 指定NGINX連接處理方法

在配置腳本中,您可以重新定義基於事件的輪詢方法。 有關詳細信息,請參見連接處理方法。文章連結
(可以把nginx異步調用的方式改成serial方式實現,嵌入式設備須注意這裡細節)
--with- select_module,--without-select_module
啟用或禁用構建允許NGINX使用select()方法的模塊。 如果平台似乎不支持更合適的方法,如kqueue,epoll或/ dev / poll,則此模塊將自動構建。
--with-poll_module,--without-poll_module
啟用或禁用構建允許NGINX使用poll()方法的模塊。 如果平台似乎不支持更合適的方法,如kqueue,epoll或/ dev / poll,則此模塊將自動構建。

步驟四 指定模塊
NGINX由模塊組成。 模塊集以及其他構建選項都使用./configure腳本進行配置。
某些模塊是默認構建的 - 它們不需要在configure腳本中指定。 但是可以使用configure腳本中的--without-configure選項從NGINX執行檔文件中排除任何默認模塊。
默認情況下不包括的模塊以及第三方模塊必須在configure腳本中與其他構建選項一起顯式指定。 這樣的模塊可以靜態鏈接到NGINX執行檔,並且每次NGINX啟動時動態加載,或僅當它們在NGINX配置文件中指定時才會加載。

以下為可選用的模塊名稱,太多就不逐條翻譯了。



    
    
Module NameDescription
  
http_charset_moduleAdds the specified charset to the “Content-Type” response header field, can convert data from one charset to another.
http_gzip_moduleCompresses responses using the gzip method, helping to reduce the size of transmitted data by half or more.
http_ssi_moduleProcesses SSI (Server Side Includes) commands in responses passing through it.
http_userid_moduleSets cookies suitable for client identification.
http_access_moduleLimits access to certain client addresses.
http_auth_basic_moduleLimits access to resources by validating the user name and password using the HTTP Basic Authenticationprotocol.
http_autoindex_moduleProcesses requests ending with the slash character (‘/’) and produces a directory listing.
http_geo_moduleCreates variables with values depending on the client IP address.
http_map_moduleCreates variables whose values depend on values of other variables.
http_split_clients_moduleCreates variables suitable for A/B testing, also known as split testing.
http_referer_moduleBlocks access to a site for requests with invalid values in the Referer header field.
http_rewrite_moduleChanges the request URI using regular expressions and return redirects; conditionally selects configurations. Requires the PCRE library.
http_proxy_modulePasses requests to another server.
http_fastcgi_modulePasses requests to a FastCGI server
http_uwsgi_modulePasses requests to a uwsgi server.
http_scgi_modulePasses requests to an SCGI server.
http_memcached_moduleObtains responses from a memcached server.
http_limit_conn_moduleLimits the number of connections per the defined key, in particular, the number of connections from a single IP address.
http_limit_req_moduleLimits the request processing rate per a defined key, in particular, the processing rate of requests coming from a single IP address.
http_empty_gif_moduleEmits single-pixel transparent GIF.
http_browser_moduleCreates variables whose values depend on the value of the “User-Agent” request header field.
http_upstream_hash_moduleEnables the hash load balancing method.
http_upstream_ip_hash_moduleEnables the IP hash load balancing method.
http_upstream_least_conn_moduleEnables the least_conn load balancing method.
http_upstream_keepalive_moduleEnables keepalive connections.
http_upstream_zone_moduleEnables the shared memory zone








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值