Nginx源碼目錄介紹

本文首先介紹Nginx幾大流派(分支),然後簡述Nginx核心組成部分,最後介紹在編譯安裝時的重要參數和核心目錄。

1.Nignx幾大分支

1.開源版nginx.org

2.商業版:nginx.com

3.阿里巴巴的 Tengine

4.OpenResty:分爲開源和商業版

   首先俄羅斯人開發出了Nignx,最後發展爲開源版本Nginx和商業版Nginx,有點類似Centos和RedHat。後來張玉春在Nginx基礎上,擴展開發形成OpenResty,也成爲一個很重要的分支。阿里巴巴最後在Nginx基礎上開發了自己的Tengine。 三者用法幾乎一致,而且底層都是基於最開始的Nginx核心模塊,並且相互之間的一些模塊可以互相使用。

2.Nginx組成部分:

Nginx就像一輛高性能的汽車,Nginx二進制可執行文件是發動機(可更換,即熱部署),Nginx.conf配置文件就是駕駛艙,access.log就是行車記錄儀,而error.log便是黑匣子。

在這裏插入圖片描述

3.編譯安裝Nginx

使用編譯源碼方式安裝。這裏不推薦其他安裝方式。源碼安裝一方面可以獲取最新的Nginx,另一方面可以方便靈活的編譯不同模塊到Nginx,在生產環境可能需要經常熱部署升級等,這些都必須是編譯源碼安裝。

這裏我僅以Centos7爲例演示安裝Nginx:

  • 第一步:在官網下載Nginx源碼 ,

    Nginx官網提供了三個類型的版本
    Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以說是開發版
    Stable version:最新穩定版,生產環境上建議使用的版本
    Legacy versions:遺留的老版本的穩定版

sudo wget http://nginx.org/download/nginx-1.16.0.tar.gz
  • 第二步:安裝必要的一些類庫和軟件支持(如果已裝,可跳過)
#1.安裝gcc g++開發類庫是否裝好
ububtu平臺編譯環境可以使用以下指令
apt-get install build-essential
apt-get install libtool

centos平臺編譯環境使用如下指令
yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++
#2.正則表達相關PCRE
sudo apt-get install libpcre3 libpcre3-dev 

centos:
yum install -y pcre pcre-devel

#3.安裝openssl
ubuntu下:
apt-get install openssl
apt-get install libssl-dev

centos下:
yum -y install openssl openssl-devel

#4.安裝zlib庫 
sudo wget 
https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz

tar -zxf zlib-12.11.tar.gz
cd zlib-1.2.11
./configure  
make 
make install
  • 第三步:解壓並進入解壓目錄
sudo tar -zxf nginx-1.16.0.tar.gz
cd cd nginx-1.16.0
  • 第四步:編譯安裝(老三步)
./configure --prefix=/home/zx/nginx 
make
make install
  • 第五步:啓動和停止Nginx服務
sudo ./nginx -c /usr/local/src/nginx/conf/nginx.conf  //啓動
sudo /usr/local/src/nginx/sbin/nginx -s reload //平滑重啓

./nginx -s stop #立即停止服務
./nginx -s quit #優雅的停止服務
./nginx -s reload #重載配置文件
./nginx -s reopen #重新開始記錄日誌文件

停止:
ps -ef|grep nginx
kill -QUIT 2072 //停止

kill -TERM 2132
kill -9 nginx //強制停止

重啓:
kill -HUP 進程號
編譯參數說明

第四步中 --prefix 可以指定安裝目錄,如果不指定該參數默認是/usr/local/nginx 目錄。

通過下面命令可以查看更多可選編譯參數:

./configure --help | more

這些參數主要分爲三類:

  • 1.指定一些目錄

    比如:–prefix 可以指定安裝目錄。

  • 2.指定編譯時使用或者排除那些模塊:

    其中–with開頭的說明默認不會編譯進nginx如果需要該模塊,需要加上該參數去編譯進Nginx二進制文件,–without開頭則說明默認會編譯進去,如果不需要,需要指定進行移除。

  • 3.指定一些特殊參數:比如要打印一些debug日誌等

編譯中間文件介紹:

編譯產生的中間文件會在objs目錄中。其中最重要的是ngx_modules.c 這裏邊會決定nginx會將那些模塊進行安裝。另外nginx的運行二進制文件也會在objs中,如果我們是做nginx升級,我們不能運行make install ,而需要將nginx文件拷貝到nginx目錄中覆蓋原有的二進制文件。objs中的src是c語言編譯產生的中間文件。

安裝目錄介紹:

執行make install便會安裝nginx到指定目錄。安裝目錄中的nginx.conf配置文件就是從源碼的conf中拷貝的,sbin目錄中則是核心的二進制執行文件。

4.源碼目錄介紹

上面編譯安裝的第三步解壓後目錄如下:

drwxr-xr-x 6 1001 1001    326 Aug 26 20:14 auto
-rw-r--r-- 1 1001 1001 296223 Apr 23 21:13 CHANGES
-rw-r--r-- 1 1001 1001 451813 Apr 23 21:13 CHANGES.ru
drwxr-xr-x 2 1001 1001    168 Aug 26 20:14 conf
-rwxr-xr-x 1 1001 1001   2502 Apr 23 21:12 configure
drwxr-xr-x 4 1001 1001     72 Aug 26 20:14 contrib
drwxr-xr-x 2 1001 1001     40 Aug 26 20:14 html
-rw-r--r-- 1 1001 1001   1397 Apr 23 21:12 LICENSE
drwxr-xr-x 2 1001 1001     21 Aug 26 20:14 man
-rw-r--r-- 1 1001 1001     49 Apr 23 21:12 README
drwxr-xr-x 9 1001 1001     91 Aug 26 20:14 src

  • auto中是一些判斷操作系統支持,編譯等相關的文件。

  • CHANGES:是版本的更改日誌(.ru是俄語版,因爲作者是俄羅斯)

  • conf中是示例配置文件,可方便配置,可以直接拷貝到安裝目錄,簡化配置。

  • configure腳本:是編譯生成中間文件前的一個必備動作。

  • contrib : 提供了語法高亮支持腳本,讓vim打開時,語法高亮。需要拷貝contrib中到 本地vim目錄(如果根目錄沒有該目錄,先mkdir ~/.vim)

cp -r contrib/vim/* ~/.vim/
  • man:幫助目錄

  • html: 有兩個默認頁面一個是報錯後的顯示

  • src: 源碼目錄

5.conf配置文件高亮顯示:

將源碼目錄的vim目錄拷到系統用戶根目錄:(如果系統不存在.vim目錄,先新建目錄)

cp -r contrib/vim/* ~/.vim/

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章