1. 程式人生 > 實用技巧 >nginx安裝(詳解)

nginx安裝(詳解)

Nginx安裝


nginx可以使用各平臺的預設包來安裝,本文是介紹使用原始碼編譯安裝,包括具體的編譯引數資訊。

正式開始前,編譯環境gcc g++ 開發庫之類的需要提前裝好,這裡預設你已經裝好。

ububtu平臺編譯環境可以使用以下指令

1 2 apt-get install build-essential apt-get install libtool

centos平臺編譯環境使用如下指令

安裝make:

1 yum -y install gcc automake autoconf libtool make

安裝g++:

1 yum install gcc gcc-c++

下面正式開始
---------------------------------------------------------------------------
一般我們都需要先裝pcre, zlib,前者為了重寫rewrite,後者為了gzip壓縮。
1.選定原始碼目錄
可以是任何目錄,本文選定的是/usr/local/src

1 cd /usr/local/src

2.安裝PCRE庫
https://ftp.pcre.org/pub/pcre/下載最新的 PCRE 原始碼包,使用下面命令下載編譯和安裝 PCRE 包:

1 2 3 4 5 6 7 cd /usr/local/src wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz tar -zxvf pcre-8.44.tar.gz cd pcre-8.44 ./configure make make install

3.安裝zlib庫
http://zlib.net/zlib-1.2.11.tar.gz 下載最新的 zlib 原始碼包,使用下面命令下載編譯和安裝 zlib包:

1 2 3 4 5 6 7 8 cd /usr/local/src wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 ./configure make make install

4.安裝ssl(某些vps預設沒裝ssl)

1 2 3 cd /usr/local/src wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz tar -zxvf openssl-1.1.1g.tar.gz

5.安裝nginx

Nginx 一般有兩個版本,分別是穩定版和開發版,您可以根據您的目的來選擇這兩個版本的其中一個,下面是把 Nginx 安裝到 /usr/local/nginx 目錄下的詳細步驟:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 cd /usr/local/src wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -zxvf nginx-1.18.0.tar.gz cd nginx-1.18.0 ./configure --sbin-path=/usr/local/nginx/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --pid-path=/usr/local/nginx/nginx.pid \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-file-aio \ --with-http_realip_module \ --with-http_ssl_module \ --with-pcre=/usr/local/src/pcre-8.44 \ --with-zlib=/usr/local/src/zlib-1.2.11 \ --with-openssl=/usr/local/src/openssl-1.1.1g make -j2 make install

--with-pcre=/usr/local/src/pcre-8.44 指的是pcre-8.44 的原始碼路徑。
--with-zlib=/usr/local/src/zlib-1.2.11指的是zlib-1.2.11 的原始碼路徑。

安裝成功後 /usr/local/nginx 目錄下如下

1 2 3 4 5 6 fastcgi.confkoi-win nginx.conf.default fastcgi.conf.defaultlogsscgi_params fastcgi_paramsmime.typesscgi_params.default fastcgi_params.defaultmime.types.defaultuwsgi_params htmlnginx uwsgi_params.default koi-utf nginx.confwin-utf

6.啟動
確保系統的 80 埠沒被其他程式佔用,執行/usr/local/nginx/nginx 命令來啟動 Nginx,

1 netstat -ano|grep 80

如果查不到結果後執行,有結果則忽略此步驟(ubuntu下必須用sudo啟動,不然只能在前臺執行)

1 sudo/usr/local/nginx/nginx

開啟瀏覽器訪問此機器的 IP,如果瀏覽器出現 Welcome to nginx! 則表示 Nginx 已經安裝並執行成功。

-----------------------------------------------------
到這裡nginx就安裝完成了,如果只是處理靜態html就不用繼續安裝了

如果你需要處理php指令碼的話,還需要安裝php-fpm

下面安裝排錯

附:可能遇到的錯誤和一些幫助資訊

1.1編譯pcre錯誤

1 2 3 4 5 libtool: compile: unrecognized option `-DHAVE_CONFIG_H' libtool: compile: Try `libtool --help' for more information. make[1]: *** [pcrecpp.lo] Error 1 make[1]: Leaving directory `/usr/local/src/pcre-8.34' make: *** [all] Error 2

解決辦法:安裝g++,別忘了重新configure

1 2 3 4 5 apt-get install g++ apt-get install build-essential make clean ./configure make

1.2 make出錯

1 2 3 4 5 make:***Noruletomaketarget`build',neededby`default'.Stop. ./configure:error:SSLmodulesrequiretheOpenSSLlibrary. Youcaneitherdonotenablethemodules,orinstalltheOpenSSLlibrary intothesystem,orbuildtheOpenSSLlibrarystaticallyfromthesource withnginxbyusing--with-openssl=option.

按照第4步的安裝方法或
ubuntu下

1 2 apt-getinstallopenssl apt-getinstalllibssl-dev

centos下

1 yum -y install openssl openssl-devel

2.nginx編譯選項

make是用來編譯的,它從Makefile中讀取指令,然後編譯。

make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。

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配置檔案中使用 PID指令。預設情況下,檔名 為prefix/logs/nginx.pid.
  • --error-log-path=path設定主錯誤,警告,和診斷檔案的名稱。安裝完成後,可以隨時改變的檔名 ,在nginx.conf配置檔案中 使用 的error_log指令。預設情況下,檔名 為prefix/logs/error.log.
  • --http-log-path=path 設定主請求的HTTP伺服器的日誌檔案的名稱。安裝完成後,可以隨時改變的檔名 ,在nginx.conf配置檔案中 使用 的access_log指令。預設情況下,檔名 為prefix/logs/access.log.
  • --user=name 設定nginx工作程序的使用者。安裝完成後,可以隨時更改的名稱在nginx.conf配置檔案中 使用的 user指令。預設的使用者名稱是nobody。
  • --group=name設定nginx工作程序的使用者組。安裝完成後,可以隨時更改的名稱在nginx.conf配置檔案中 使用的 user指令。預設的為非特權使用者。
  • --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來完成。正則表示式使用在location指令和 ngx_http_rewrite_module 模組中。
  • --with-pcre-jit—編譯PCRE包含“just-in-time compilation”(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".

典型例項(下面為了展示需要寫在多行,執行時內容需要在同一行)

1 2 3 4 5 6 7 ./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=../pcre-4.4 --with-zlib=../zlib-1.1.3