- 分布式系統架構:技術棧詳解與快速進階
- 張程
- 1456字
- 2020-08-13 13:45:34
4.2 Nginx源碼編譯安裝
以Centos平臺編譯環境為例,安裝Make并編譯Gcc/GccDemo的方法如代碼清單4-1所示。
代碼清單4-1 GccDemo代碼
yum -y install gcc automake autoconf libtool make yum install gcc gcc-c++
Nginx重寫rewrite,需要安裝pcre,而Gzip壓縮需要安裝zlib,網絡轉發需要ssl設定源碼目錄為/usr/local/source。安裝pcre、zlib、ssl的方法如代碼清單4-2所示。
代碼清單4-2 Nginx插件安裝
------------pcre----------------- cd /usr/local/source wget http:// www.programming.cn/pcre/pcre-8.36.tar.gz tar -zxvf pcre-8.36.tar.gz cd pcre-8.36 ./configure make make install -----------zlib-------------- wget http:// zlib.net/zlib-1.2.7.tar.gz tar -zxvf zlib-1.2.7.tar.gz cd zlib-1.2.7 ./configure make make install -----------ssl-------------- wget https:// www.openssl.org/source/openssl-1.0.1t.tar.gz tar -zxvf openssl-1.0.1t.tar.gz
Nginx安裝的方法如代碼清單4-3所示。
代碼清單4-3 Nnigx安裝
wget http:// nginx.org/download/nginx-1.5.8.tar.gz tar -zxvf nginx-1.4.2.tar.gz cd nginx-1.4.2
下載Nginx包的頁面效果如圖4-2所示。

圖4-2 下載Nginx包
解壓Nginx包,如圖4-3所示。

圖4-3 解壓Nginx包
具體的Nginx參數配置,如代碼清單4-4所示。
代碼清單4-4 Nginx參數配置
./configure --sbin-path=/usr/local/nginx/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --pid-path=/usr/local/nginx/nginx.pid \ --with-http_ssl_module \ --with-pcre=/opt/app/openet/zachary/pcre-8.36 \ --with-zlib=/opt/app/openet/zachary/zlib-1.2.7 \ --with-openssl=/opt/app/openet/zachary/openssl-1.0.1t make make install
其中,make用于編譯,它從Makefile中讀取指令,然后編譯;make install用于安裝,它也從Makefile中讀取指令,將Nginx安裝到指定的位置;configure命令用于檢測安裝平臺的目標特征,它定義了系統的各個方面,包括Nginx被允許使用的連接處理的方法,比如它會檢測是不是有CC或GCC(并不是需要CC或GCC,它是個shell腳本,執行結束時,它會創建一個Makefile文件)。
Nginx的configure命令支持以下參數。
- --prefix=path:定義一個目錄,存放服務器上的文件,也就是Nginx的安裝目錄。默認使用/usr/local/nginx。
- --sbin-path=path:設置Nginx的可執行文件的路徑,默認為prefix/sbin/nginx。
- --conf-path=path:設置nginx.conf配置文件的路徑。Nginx允許使用不同的配置文件啟動,通過命令行中的-c選項實現。默認為prefix/conf/nginx.conf。
- --pid-path=path:設置nginx.pid文件,將存儲主進程的序號。安裝完成后,可以隨時改變文件名,在nginx.conf配置文件中使用。默認情況下,文件名為prefix/logs/nginx.pid。
- --error-log-path=path:設置主錯誤、警告和診斷文件的名稱。安裝完成后,可以隨時改變文件名,在nginx.conf配置文件中使用。默認情況下,文件名為prefix/logs/error.log。
- --http-log-path=path:設置主請求HTTP服務器的日志文件的名稱。安裝完成后,可以隨時改變文件名,在nginx.conf配置文件中使用。默認情況下,文件名為prefix/logs/access.log。
- --user=name:設置Nginx工作進程的用戶。安裝完成后,可以隨時更改名稱,在nginx.conf配置文件中使用。默認用戶名為nobody。
- --group=name:設置Nginx工作進程的用戶組。安裝完成后,可以隨時更改名稱,在nginx.conf配置文件中使用。默認為非特權用戶。
- --with-select_module --without-select_module:啟用或禁用構建一個模塊來允許服務器使用select()方法。如果平臺不支持kqueue、epoll、rtsig或/dev/poll,該模塊將自動建立。
- --with-poll_module --without-poll_module:啟用或禁用構建一個模塊來允許服務器使用poll()方法。如果平臺不支持kqueue、epoll、rtsig或/dev/poll,該模塊將自動建立。
- --without-http_gzip_module:不編譯壓縮的HTTP服務器的響應模塊。編譯并運行此模塊需要zlib庫。
- --without-http_rewrite_module:不編譯重寫模塊。編譯并運行此模塊需要PCRE庫支持。
- --without-http_proxy_module:不編譯http_proxy模塊。
- --with-http_ssl_module:使用HTTPS協議模塊。默認情況下,該模塊沒有被構建。必須建立并運行此模塊的OpenSSL庫。
- --with-pcre=path:設置PCRE庫的源碼路徑。PCRE庫的源碼(版本4.4-8.30)需要從PCRE網站下載并解壓。其余工作是由Nginx的./ configure和make來完成的。
- --with-pcre-jit:編譯PCRE,包含just-in-time compilation(即PCRE 1.1.12中的pcre_jit指令)。
- --with-zlib=path:設置zlib庫的源碼路徑。要從zlib(版本1.1.3~1.2.5)下載并解壓。其余的工作是由Nginx的./ configure和make完成的。ngx_http_gzip_module模塊需要使用zlib。
- --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"。
其中相關路徑說明如下:
- --with-pcre=/usr/src/source/pcre-8.36:pcre-8.36的源碼路徑。
- --with-zlib=/usr/src/source/zlib-1.2.7:zlib-1.2.7的源碼路徑。
安裝成功后,/usr/local/nginx目錄如下:
fastcgi.conf koi-win nginx.conf.default fastcgi.conf.default logs scgi_params fastcgi_params mime.types scgi_params.default fastcgi_params.default mime.types.default uwsgi_params html nginx uwsgi_params.default koi-utf nginx.conf win-utf
注意
Nginx默認端口是80,啟動之前應先檢查80端口的使用情況,使用的指令是netstat -ano|grep 80,如果查不到結果則說明該端口未占用,反之,有如下兩種處理方式:
- 更改Nginx默認80端口,通過指令whereis nginx.conf找到默認配置文件,更改方式為listen 80 default_server;
- 找到占用80端口的應用,然后kill掉該應用以釋放80端口。
溫馨提示:80端口默認可以隱藏,例如:zachary.sh.cn:80等同于zachary.sh.cn,同理80端口也非常容易受到攻擊。建議更換默認端口。