AtCoder Beginner Contest 241 補題(E)
1、安裝依賴
sudo apt-get update #安裝依賴:gcc、g++依賴庫 sudo apt-get install build-essential libtool #安裝 pcre依賴庫(http://www.pcre.org/) sudo apt-get install libpcre3 libpcre3-dev #安裝 zlib依賴庫(http://www.zlib.net) sudo apt-get install zlib1g-dev #安裝ssl依賴庫 sudo apt-get install openssl
(1)PCRE庫支援正則表示式。如果我們在配置檔案nginx.conf中使用了正則表示式,那麼在編譯Nginx時就必須把PCRE庫編譯進Nginx,因為Nginx的HTTP模組需要靠它來解析正則表示式。另外,pcre-devel是使用PCRE做二次開發時所需要的開發庫,包括標頭檔案等,這也是編譯Nginx所必須使用的
(2)zlib庫用於對HTTP包的內容做gzip格式的壓縮,如果我們在nginx.conf中配置了gzip on,並指定對於某些型別(content-type)的HTTP響應使用gzip來進行壓縮以減少網路傳輸量,則在編譯時就必須把zlib編譯進Nginx
(3)如果伺服器不只是要支援HTTP,還需要在更安全的SSL協議上傳輸HTTP,那麼需要擁有OpenSSL。另外,如果我們想使用MD5、SHA1等雜湊函式,那麼也需要安裝它
2、下載解壓http://nginx.org/en/download.html
#下載 sudo wget http://nginx.org/download/nginx-1.20.2.tar.gz#解壓 sudo tar -zxvf nginx-1.20.2.tar.gz cd nginx-1.20.2
(1)mianline版本,版本號中間數字一般為奇數,更新快,一個月就會發佈一個新版本,最新功能,bug修復等,穩定性差點。
(2)stable版本:穩定版,版本號中間數字一般為偶數。經過了長時間的測試,比較穩定,商業化環境中使用這種版本。
(3)Lengacy版本,遺產,遺留版本,以往的老版本。
3、編譯Nginx資訊
sudo vim src/core/nginx.h #修改前 #define nginx_version 1020002 #define NGINX_VERSION "1.20.2" #defineNGINX_VER "nginx/" NGINX_VERSION #修改後 #define nginx_version 1020002 #define NGINX_VERSION "1.20.2" #define NGINX_VER "Web Server" NGINX_VERSION #版本號也可以去掉,為了方便檢視,我選擇了保留
sudo vim src/http/ngx_http_header_filter_module.c #修改前 static u_char ngx_http_server_string[] = "Server: nginx" CRLF; static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF; static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF; #修改後 static u_char ngx_http_server_string[] = "Server: Web Server" CRLF; static u_char ngx_http_server_full_string[] = "Server: Web Server" CRLF; static u_char ngx_http_server_build_string[] = "Server: Web Server" CRLF;
sudo vim src/http/ngx_http_special_response.c #注意修改後無引號,因為修改前NGINX_VER為變數 #修改前 static u_char ngx_http_error_full_tail[] = "<hr><center>" NGINX_VER "</center>" CRLF "</body>" CRLF "</html>" CRLF ; static u_char ngx_http_error_build_tail[] = "<hr><center>" NGINX_VER_BUILD "</center>" CRLF "</body>" CRLF "</html>" CRLF ; static u_char ngx_http_error_tail[] = "<hr><center>nginx</center>" CRLF "</body>" CRLF "</html>" CRLF ; #修改後 static u_char ngx_http_error_full_tail[] = "<hr><center>Web Server</center>" CRLF "</body>" CRLF "</html>" CRLF ; static u_char ngx_http_error_build_tail[] = "<hr><center>Web Server</center>" CRLF "</body>" CRLF "</html>" CRLF ; static u_char ngx_http_error_tail[] = "<hr><center>Web Server</center>" CRLF "</body>" CRLF "</html>" CRLF ;
4、編譯
#預設就在/usr/local/nginx sudo ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module –prefix 指定安裝路徑 –with-http_stub_status_module 允許檢視nginx狀態的模組 –with-http_ssl_module 支援https的模組 sudo make sudo make install
引數說明:
編譯選項官方提供的有:
–prefix=path 定義一個目錄來儲存你的nginx的提供功能的資料夾,就這好比我們安裝軟體的時候軟體存放的目錄,如果我們在編譯的不指定安裝位置,那麼預設的位置/usr/local/nginx 目錄
–sbin-path=path 設定nginx執行指令碼的位置,這裡如果設定在path變數裡面,就可以在bash環境下,任意使用nginx命令,預設位置prefix/sbin/nginx 注意這裡的prefix是
在配置檔案裡面配置的路徑
–conf-path=path 配置nginx配置檔案的路徑,如果不指定這個選項,那麼配置檔案的預設路徑就會是 prefix/conf/nginx.conf
–pid-path =path 配置nginx.pid file的路徑,一般來說,程序在執行的時候的時候有一個程序id,這個id會儲存在pid file裡面,預設的pid file的放置位置是prefix/logs/nginx.pid
–error-log-path=path 設定錯誤日誌的存放路徑,如果不指定,就預設 prefix/logs/error.log
–http-log-path= path 設定http訪問日誌的路徑,如果不指定,就預設 prefix/logs/access.log
–user=name 設定預設啟動程序的使用者,如果不指定,就預設 nobody
–group=name 設定這個使用者所在的使用者組,如果不指定,依然是nobody
這些是我們常用的編譯選項,其他的可以均保持預設,如需特殊指定,可上nginx官網查閱 http://nginx.org/en/docs/configure.html
下面是一些不常用的選項
–with-http_ssl_module -開啟HTTP SSL模組,使NGINX可以支援HTTPS請求。需要安裝了OPENSSL
–with-http_flv_module
–with-http_stub_status_module - 啟用 “server status” 頁(可有可無)
–without-http_gzip_module - 禁用 ngx_http_gzip_module. 如果啟用,需要 zlib 。
–without-http_ssi_module - 禁用 ngx_http_ssi_module
–without-http_referer_module - 禁用 ngx_http_referer_module
–without-http_rewrite_module - 禁用 ngx_http_rewrite_module. 如果啟用需要 PCRE 。
–without-http_proxy_module - 禁用 ngx_http_proxy_module
–without-http_fastcgi_module - 禁用 ngx_http_fastcgi_module
–without-http_memcached_module - 禁用 ngx_http_memcached_module
–without-http_browser_module - 禁用 ngx_http_browser_module
–http-proxy-temp-path=PATH - Set path to the http proxy temporary files
–http-fastcgi-temp-path=PATH - Set path to the http fastcgi temporary files
–without-http - 禁用 HTTP server(用作代理或反向代理)
–with-mail - 啟用 IMAP4/POP3/SMTP 代理模組
–with-mail_ssl_module - 啟用 ngx_mail_ssl_module
–with-openssl=DIR - Set path to OpenSSL library sources
#查詢Nginx安裝路徑 whereis nginx #啟動Nginx sudo nginx #檢視Nginx程序 ps -ef|grep nginx #停止Nginx sudo nginx -s stop sudo nginx -s quit #重新載入Nginx配置 sudo nginx -s reload
參考文獻:https://blog.csdn.net/A156348933/article/details/85335089
https://blog.csdn.net/lingbing5719/article/details/116479391