本系列的lnmp的大框架基本上是按照http://www.linuxzen.com/lnmphuan-jing-da-jian-wan-quan-shou-ce-si-lnmpda-jian-yuan-ma-an-zhuang.html來寫的html
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名,其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好,著名的使用nginx網站用戶有:百度、新浪、網易、騰訊等。linux
Nginx代碼徹底用C語言從頭寫成,已經移植到許多體系結構和操做系統,包括:linux、freebsd、OS X、windows等。Nginx有本身的函數庫,而且除了zlib、pcre和openssl以外,標準模塊只使用系統C庫函數。並且,若是不須要或者考慮到潛在的受權衝突,能夠不使用這些第三方庫。nginx
從上面能夠看到nginx是依賴於三個庫的:zlib、pcre和openssl。nginx的安裝相對來講還算簡單,我在安裝過程當中只遇到了一個問題,運氣比較好。今天原本想搞個vim+ycm+clang自動補全的裝了一天還沒成功,結果問題都是莫名其妙的,果斷放棄。好了,說了這麼多廢話,下面開幹吧。正則表達式
一、選擇nginx源碼目錄vim
你能夠選擇任何地方,我選的是/usr/local/srcwindows
二、安裝pcre庫瀏覽器
在ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下有pcre的源碼包,你能夠直接點擊下載,也能夠wget下載,我選的是wget下載,並使用下面的命令下載編譯安裝pcre包:服務器
cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
tar -xvzf pcre-8.36.tar.gz
cd pcre-8.36.tar.gz
sudo ./configure(注意,必須使用sudo才能夠,否則出錯,由於在/usr/local下 不是用戶目錄下)
sudo make
sudo make install
(pcre庫會更新的,選擇合適的便可,儘可能選擇pcre而不是pcre2庫,由於有人選了pcre2出現問題)併發
三、安裝zlib庫框架
在http://zlib.net/下看current version是多少,而後,wget下載,我下載時是1.2.8版本,並使用下面的命令下載編譯安裝zlib包:
cd /usr/local/src
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
sudo ./configure
sudo make
sudo make install
四、安裝openssl庫
openssl的源碼在http://www.openssl.org/source/ 下,能夠直接進入下載,也能夠wget下載,並使用下面的命令下載編譯安裝openssl包:
cd /usr/local/src
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -xvzf openssl-1.0.1c.tar.gz
cd openssl-1.0.1c.tar.gz
sudo ./configure sudo make sudo make install
此時基本上全部nginx須要的庫都已經安裝好,/usr/local/src的目錄結構是這樣的(版本可能不一樣,這個無所謂):
五、安裝nginx
nginx的源碼在http://nginx.org/download/ 下,想要什麼版本直接下載就好了,並使用下面的命令下載編譯安裝nginx包:
cd /usr/local/src
wget http://nginx.org/download/nginx-1.4.2.tar.gz
tar -zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2
sudo ./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=/usr/local/src/pcre-8.36 --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.1c
sudo make
sudo make install
記住,sudo ./configure後面跟的參數只要是和以前安裝的庫有關的都是以本身下載的庫的版本爲準!
在這邊./configure後面跟了不少參數,具體參數含義以下:
--prefix=<path> - Nginx安裝路徑。若是沒有指定,默認爲 /usr/local/nginx。
--sbin-path=<path> - Nginx可執行文件安裝路徑。只能安裝時指定,若是沒有指定,默認爲<prefix>/sbin/nginx。
--conf-path=<path> - 在沒有給定-c選項下默認的nginx.conf的路徑。若是沒有指定,默認爲<prefix>/conf/nginx.conf。
--pid-path=<path> - 在nginx.conf中沒有指定pid指令的狀況下,默認的nginx.pid的路徑。若是沒有指定,默認爲 <prefix>/logs/nginx.pid。
--lock-path=<path> - nginx.lock文件的路徑。
--error-log-path=<path> - 在nginx.conf中沒有指定error_log指令的狀況下,默認的
錯誤日誌的路徑。若是沒有指定,默認爲 <prefix>/logs/error.log。
--http-log-path=<path> - 在nginx.conf中沒有指定access_log指令的狀況下,默認的訪問日誌的路徑。若是沒有指定,默認爲 <prefix>/logs/access.log。
--user=<user> - 在nginx.conf中沒有指定user指令的狀況下,默認的nginx使用的用戶。若是沒有指定,默認爲 nobody。
--group=<group> - 在nginx.conf中沒有指定user指令的狀況下,默認的nginx使用的組。若是沒有指定,默認爲 nobody。
--builddir=DIR - 指定編譯的目錄
--with-rtsig_module - 啓用 rtsig
模塊
--with-select_module --without-select_module - 啓用或禁用構建一個模塊來容許服務器使用select()方法,該模塊將自動創建,若是平臺不支持的kqueue,epoll,rtsig或/dev/poll
--with-poll_module --without-poll_module - 啓用或禁用構建一個模塊來容許服務器使用poll()方法。該模塊將自動創建,若是平臺不支持的kqueue,epoll,rtsig或/dev/poll
--with-http_ssl_module -開啓HTTP SSL模塊,使NGINX能夠支持HTTPS請求。這個模塊須要已經安裝了OPENSSL,在DEBIAN上是libssl
--with-http_realip_module - 啓用 ngx_http_realip_module
--with-http_addition_module - 啓用 ngx_http_addition_module
--with-http_sub_module - 啓用 ngx_http_sub_module
--with-http_dav_module - 啓用 ngx_http_dav_module
--with-http_flv_module - 啓用 ngx_http_flv_module
--with-http_stub_status_module - 啓用 "server status" 頁
--without-http_charset_module - 禁用 ngx_http_charset_module
--without-http_gzip_module - 禁用 ngx_http_gzip_module. 若是啓用,須要 zlib。
--without-http_ssi_module - 禁用 ngx_http_ssi_module
--without-http_userid_module - 禁用 ngx_http_userid_module
--without-http_access_module - 禁用 ngx_http_access_module
--without-http_auth_basic_module - 禁用 ngx_http_auth_basic_module
--without-http_autoindex_module - 禁用 ngx_http_autoindex_module
--without-http_geo_module - 禁用 ngx_http_geo_module
--without-http_map_module - 禁用 ngx_http_map_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_limit_zone_module - 禁用 ngx_http_limit_zone_module
--without-http_empty_gif_module - 禁用 ngx_http_empty_gif_module
--without-http_browser_module - 禁用 ngx_http_browser_module
--without-http_upstream_ip_hash_module - 禁用 ngx_http_upstream_ip_hash_module
--with-http_perl_module - 啓用 ngx_http_perl_module
--with-perl_modules_path=PATH - 指定 perl
模塊的路徑
--with-perl=PATH - 指定 perl 執行文件的路徑
--http-log-path=PATH - Set path to the http access log
--http-client-body-temp-path=PATH - Set path to the http client request body temporary files
--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-cc=PATH - 指定 C
編譯器的路徑
--with-cpp=PATH - 指定 C
預處理器的路徑
--with-cc-opt=OPTIONS - 設置額外的參數將被添加到CFLAGS變量。例如,當你在FreeBSD上使用PCRE庫時須要使用:
--with-cc-opt="-I /usr/local/include。
.如須要須要增長
select()支持的文件數量
:
--with-cc-opt="-D FD_SETSIZE=2048".
--with-ld-opt=OPTIONS - 設置附加的參數,將用於在連接期間。例如,當在FreeBSD下使用該系統的PCRE庫,應指定:
--with-ld-opt="-L /usr/local/lib"
.
--with-cpu-opt=CPU - 爲特定的 CPU 編譯,有效的值包括:pentium,pentiumpro,pentium3,pentium4,athlon,opteron,amd64,sparc32,sparc64,ppc64
--without-pcre - 禁止 PCRE 庫的使用。同時也會禁止 HTTP rewrite 模塊。在 "location" 配置指令中的
正則表達式也須要 PCRE。
--with-pcre=DIR - 指定 PCRE 庫的源代碼的路徑。
--with-pcre-opt=OPTIONS - Set additional options for PCRE building.
--with-md5=DIR - Set path to md5 library sources.
--with-md5-opt=OPTIONS - Set additional options for md5 building.
--with-md5-asm - Use md5 assembler sources.
--with-sha1=DIR - Set path to sha1 library sources.
--with-sha1-opt=OPTIONS - Set additional options for sha1 building.
--with-sha1-asm - Use sha1 assembler sources.
--with-zlib=DIR - Set path to zlib library sources.
--with-zlib-opt=OPTIONS - Set additional options for zlib building.
--with-zlib-asm=CPU - Use zlib assembler sources optimized for specified CPU,valid values are: pentium,pentiumpro
--with-openssl=DIR - Set path to OpenSSL library sources
--with-openssl-opt=OPTIONS - Set additional options for OpenSSL building
--with-debug - 啓用調試日誌
--add-module=PATH - Add in a third-party module found in directory PATH
在不一樣版本間,選項可能會有些許變化,請老是使用 ./configure --help 命令來檢查一下當前的選項列表。
nginx安裝完以後看一下/usr/local/下有沒有生成nginx這個文件夾,若是生成了且你在nginx編譯安裝時都沒有報錯那麼恭喜你,基本上成功了。個人/usr/local/nginx目錄結構是這樣的(僅供參考,可能會不同):
即便是這樣,你也不能100%肯定你真的安裝成功了,還差最後一步就能知道你是否成功了。
六、驗證
確保系統的 80 端口沒被其餘程序佔用,運行/usr/local/nginx/nginx 命令來啓動 Nginx。
netstat -ano|grep 80 查看80端口
sudo /usr/local/nginx/nginx
打開瀏覽器,輸入localhost:80
安裝成功!
附:可能遇到的問題和幫助信息
在你安裝配置的過程當中可能隨着安裝庫的版本不一樣而致使不一樣的問題,我在使用上述庫中只在最後nginx的make遇到了問題,問題如圖
出現這個問題多是安裝openssl時出了問題,後來發現openssl沒有make和make install,因而在root權限下,執行sudo rm -f /usr/bin/pod2man,再make和make install