如何源碼編譯安裝並控制nginx

安裝nginx

  1. 注意
    Linux操做系統須要2.6及其以上的內核(支持epoll)html

  2. 使用nginx的必備軟件
    gcc編輯器
    yum -y install gcc gcc-c++
    pcre庫(支持正則表達式)
    yum install -y pcre pcre-devel
    zlib庫(支持gzip壓縮傳輸)
    yum install -y zlib zlib-devel
    OpenSSL開發庫(支持SSL協議)
    yum install -y openssl openssl-devellinux

  3. Linux內核參數優化方案
    配置步驟nginx

  4. 編譯安裝
# nginx版本下載連接:http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.15.7.tar.gz
tar zxvf nginx-1.15.7.tar.gz
cd nginx-1.15.7
./configure --prefix=/data1/server/nginx --sbin-path=/data1/bin/nginx --user=www --group=www --modules-path=/data1/server/nginx/modules --conf-path=/data1/config/nginx/nginx.conf --error-log-path=/data1/logs/nginx/error.log --http-log-path=/data1/logs/nginx/access.log --pid-path=/data1/tmp/nginx/ngix.pid --lock-path=/data1/tmp/nginx/nginx.lock --with-debug
make
make install

控制nginx

  • 啓動
    • 默認方式啓動 /usr/local/nginx/sbin/nginx
    • 另行指定配置文件啓動 /usr/local/nginx/sbin/nginx -c /tmp/nginx.conf
    • 另行指定安裝目錄啓動 /usr/local/nginx/sbin/nginx -p /usr/local/nginx
    • 另行指定全局配置項啓動 /usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid"
  • 測試配置信息是否有錯誤
    • /usr/local/nginx/sbin/nginx -t
  • 在測試配置階段不輸出信息
    • /usr/local/nginx/sbin/nginx -t -q
  • 顯示版本信息
    • /usr/local/nginx/sbin/nginx -v
  • 顯示編譯階段的參數
    • /usr/local/nginx/sbin/nginx -V
  • 中止服務
    • /usr/local/nginx/sbin/nginx -s stop 或者 kill -s SIGTERM <nginx master pid##
  • 重載配置文件
    • /usr/local/nginx/sbin/nginx -s reload 或者 kill -s SIGHUP <nginx master pid##
  • 日誌文件回滾
    • /usr/local/nginx/sbin/nginx -s reopen 或者 kil -s SIGUSR1 <nginx master pid##
  • 平滑升級nginx
    • 通知正在運行的舊版本nginx準備升級 kill -s SIGUSR2 <nginx master pid##
    • 從新編譯nginx
    獲取新版nginx源碼   wget http://nginx.org/download/nginx-1.15.7.tar.gz   
        解壓               tar zxvf nginx-1.15.7.tar.gz   
        進入解壓目錄        cd nginx-1.15.7   
        配置               ./configure [參數]   
        編譯               make (千萬不能運行make install,這樣會覆蓋安裝;make完以後在objs目錄下就多了個nginx)   
        備份舊的nginx程序  cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
        覆蓋舊的nginx程序  cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
  • 顯示幫助 nginx -h 或者 nginx -?

nginx編譯參數詳解

  • 路徑相關參數
    prefix=PATH # nginx安裝部署後的根目錄,默認爲/usr/local/nginx目錄
    sbin-path=PATH # 可執行文件的放置路徑,默認爲<prefix##/scgi_temp
    modules-path=PATH # 模塊放置路徑
    conf-path=PATH # nginx.conf配置文件放置路徑
    error-log-path=PATH # 錯誤日誌放置路徑
    pid-path=PATH # nginx.pid放置路徑
    lock-path=PATH # nginx.lock放置路徑c++

  • 編譯相關參數
    with-cc=PATH # C編譯器的路徑
    with-cpp=PATH # C預編輯器的路徑
    with-cc-opt=OPTIONS # 在nginx編譯期間指定加入一些編譯選項
    with-ld-opt=OPTIONS # 用於加入連接時的參數
    with-cpu-opt=CPU # 指定CPU處理器架構,只能從如下取值中選擇:pentium、pentiumpro、pentium三、pentium四、athlon、opteron、sparc3二、sparc6四、ppc64web

  • 依賴軟件的相關參數
    • pcre
      without-pcre # 配置文件關閉正則表達式匹配
      with-pcre # 強制使用PCRE庫
      with-pcre=DIR # 指定pcre庫的源碼位置,在編譯nginx時會進入該目錄編譯pcre源碼
      with-pcre-opt=OPTIONS # 編譯pcre源碼時但願加入的編譯選項
      with-pcre-jit # 編譯PCRE庫支持即時編譯正則表達式

    • OpenSSL
      with-openssl=DIR # 指定OpenSSL庫的源碼位置,在編譯nginx時會進入該目錄編譯OpenSSL源碼(能夠訪問http://www.openssl.org下載)
      with-openssl-opt=OPTIONS # 編譯OpenSSL源碼時但願加入的編譯選項數據庫

    • 原子庫
      with-libatomic # 強制使用atomic庫
      with-libatomic=DIR # atomic所在的位置後端

    • zlib庫
      with-zlib=DIR # 指定zlib庫的源碼位置,在編譯nginx時會進入該目錄編譯zlib源碼
      with-zlib-opt=OPTIONS # 編譯zlib源碼時加入的編譯選項
      with-zlib-asm=CPU # 指定對特定的CPU使用zlib庫的彙編優化功能,目前僅支持兩種架構:pentium和pentiumpro瀏覽器

  • 模塊相關參數
    • 事件模塊(默認狀況下安裝epoll)
      with-select_module # 使用select module處理事件驅動
      without-select_module # 不按照select module
      with-poll_module # 使用poll module處理事件驅動
      without-poll_module # 不安裝poll module緩存

    • 默認即編譯進入nginx的http模塊
      without-http_charset_module # 不安裝http charset module,這個模塊能夠將服務器發出的http響應重編碼
      without-http_gzip_module # 不安裝http gzip module,在服務器發出的http響應包中,這個模塊能夠按照配置文件指定的content-type對特定大小的http相應包體執行gzip壓縮
      without-http_ssi_module # 不安裝http ssi module,這個模塊能夠在向用戶返回的http響應包體中加入特定的內容,如html文件中固定的頁頭和頁尾
      without-http_userid_module # 不安裝http userid module,這個模塊能夠經過http請求頭部信息裏的一些字段認證用戶信息,以肯定請求是否合法
      without-http_access_module # 不安裝http access module,這個模塊能夠根據ip地址限制可以訪問服務器的客戶端
      without-http_auth_basic_module # 不安裝http auth basic module,這個模塊能夠提供最簡單的用戶名/密碼認證
      without-http_autoindex_module # 不安裝http autoindex module,該模塊提供簡單的目錄瀏覽功能
      without-http_geo_module # 不安裝http geo module,這個模塊能夠定義一些變量,這些變量的值將與客戶端IP地址關聯,這樣nginx針對不一樣的地區的客戶端(根據IP地址判斷)返回不同的結果,例如不一樣地區顯示不一樣語言的網頁
      without-http_map_module # 不安裝http map module,這個模塊能夠創建一個key/value映射表,不一樣的key獲得相應的value,這樣能夠針對不一樣的URL作特殊處理。例如:返回302重定向響應時,URL不一樣時返回的Location字段也不同
      without-http_split_clients_module # 不安裝http split_clients module,這個模塊能夠根據客戶端的信息,例如IP地址、header頭、cookie等,來區分處理
      without-http_referer_module # 不安裝http referer module,這個模塊能夠根據請求中的referer字段來拒絕請求
      without-http_rewrite_module # 不安裝http rewrite module, 這個模塊提供http請求在nginx服務內部的重定向功能,依賴pcre庫
      without-http_proxy_module # 不安裝http proxy module,這個模塊提供基本的http反向代理功能
      without-http_fastcgi_module # 不安裝http fastcgi module,這個模塊提供FastCGI功能
      without-http_uwsgi_module # 不安裝http uwsgi module,這個模塊提供uWSGI功能
      without-http_scgi_module # 不安裝http scgi module,這個模塊提供SCGI功能
      without-http_memcached_module # 不安裝http memcached module,這個模塊能夠使得nginx直接由上游的memcached服務讀取數據,並簡單地適配成HTTP相應返回給客戶端
      without-http_limit_conn_module # 不安裝http limit conn module,這個模塊針對某個IP地址限制併發鏈接數。例如:使nginx對一個IP地址僅容許一個鏈接
      without-http_limit_req_module # 不安裝http limit_req module,module,這個模塊針對某個IP地址限制併發鏈接數。
      without-http_empty_gif_module # 不安裝http empty_gif module,這個模塊能夠使得nginx在收到無效請求時,馬上返回內存中的1*1像素的GIF圖片。這種好處在於,對於明顯的無效請求不會去試圖浪費服務器資源
      without-http_browser_module # 不安裝http browser module,這個模塊會根據http請求中的user-agent字段(該字段一般由瀏覽器填寫)來識別瀏覽器
      without-http_upstream_hash_module # 不安裝http upstream_hash module,在後端集羣session共享的狀況,這個模塊提供當nginx與後端server創建鏈接時,會根據ip作散列運算來決定與後端哪臺server通訊,這樣能夠實現負載均衡
      without-http_upstream_ip_hash_module # 不安裝http upstream_ip_hash module,這個模塊在後端集羣session共享時提供當nginx與後端server創建鏈接時,會根據ip作散列運算來決定與後端哪臺server通訊,這樣能夠實現負載均衡

    • 默認不會編譯進入nginx的http模塊
      with-http_ssl_module # http ssl module,這個模塊使nginx支持ssl協議,提供https服務(確保已配置OpenSSL)
      with-http_realip_module # http realip module,這個模塊能夠從客戶端請求裏的header信息(如X-real-ip或者X-forwarded-for)中獲取真正的客戶端ip地址
      with-http_addition_module # http addition module,這個模塊能夠在返回客戶端的http包體頭部或者尾部增長內容
      with-http_xslt_module # http xslt module,這個模塊能夠使xml格式的數據在發給客戶端前加入xsl渲染(確保已安裝libxml2和libxslt)
      with-http_image_filter_module # http image_filter module,這個模塊將符號配置的圖片實時壓縮爲指定大小(width*height)的縮略圖再發送給用戶,目前支持JPEG、PNG、GIF格式(確保已安裝libgd)
      with-http_geoip_module # http geoip module,這個模塊能夠依據MaxMind GeoIP的IP地址數據庫對客戶端的IP地址獲得實際的地理位置信息(確保有MaxMind GeoIP的庫文件,訪問http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz獲取)
      with-http_sub_module # http sub module,這個模塊能夠在nginx返回客戶端的http響應包中將指定的字符串替換爲本身須要的字符串
      with-http_dav_module # http dav module,這個模塊可讓nginx支持webdav標準,如支持webdav協議中的PUT、DELETE、COPY、MOVE、MKCOL等請求
      with-http_flv_module # http flv module,這個模塊能夠在向客戶端返回響應時,對FLV格式的視頻文件在header頭作一些處理,使得客戶端能夠觀看、拖動FLV視頻
      with-http_mp4_module # http mp4 module,這個模塊使客戶端能夠觀看、拖動MP4視頻
      with-http_gzip_static_module # http gzip_static module,這個模塊能夠在作gzip壓縮前,先查看相同位置是否有已經作過gzip壓縮的.gz文件,若是有,就直接返回,這樣就能夠預先在服務器上作好文檔的壓縮,給CPU減負
      with-http_random_index_module # http random_index module,這個模塊在客戶端訪問某個目錄時,隨機返回該目錄下的任意文件
      with-http_secure_link_module # http secure_link module,這個模塊提供一種驗證請求是否有效的機制。例如:它會驗證URL中須要加入的token參數是否屬於特定客戶端發來的,以及檢查時間戳是否過時
      with-http_stub_status_module # http stub_status module,這個模塊可讓運行中的nginx提供性能統計頁面,獲取相關的併發鏈接、請求的信息
      with-google_perftools_module # google perftools module,這個模塊提供google的性能測試工具

    • 郵件代理服務器相關的mail模塊
      with-mail # 安裝郵件服務器反向代理模塊,使nginx能夠反向代理IMAP、POP三、SMTP等協議。該模塊默認不安裝
      with-mail_ssl_module # 安裝mail ssl module。該模塊能夠使IMAP、POP三、SMTP等協議基於SSL/TLS協議之上使用。該模塊默認不安裝並依賴於openSSL庫
      without-mail_pop3_module # 不安裝 mail pop module。在使用--with-mail參數後,pop3 module是默認安裝的,以使nginx支持pop3協議
      without-mail_imap_module # 不安裝 mail imap module。在使用--with-mail參數後,imap module是默認安裝的,以使nginx支持IMAP協議
      without-mail_smtp_module # 不安裝 mail smtp module。在使用--with-mail參數後,smtp module是默認安裝的,以使nginx支持SMTP協議

  • 其餘模塊參數 with-debug # 打印debug調試級別日誌 add-module=PATH # 當在nginx里加入第三方模塊時,經過這個參數指定第三方模塊的路徑 without-http # 禁用HTTP服務器 without-http-cache # 禁用http服務器裏的緩存cache特性 with-file-aio # 啓動文件的異步i/o功能來處理磁盤文件,這須要linux內核支持原生的異步i/o user=USER # 指定nginx worker進程運行時所屬的用戶 group=GROUP # 指定nginx worker進程運行時所屬的組

相關文章
相關標籤/搜索