若是你據說過apache軟件,那麼就會很快熟悉nginx軟件,與apache軟件相似,nginx(engine x)是一個開源的,支持高性能,高併發的www的服務和代理服務軟件linux
nginx因具備高併發(特別是靜態資源)、佔用系統資源少等,且功能豐富nginx
在功能應用方面,nginx不可是一個優秀的web服務軟件,還具備反向代理負載均衡和緩存服務功能,在反向代理、負載均衡方面,它相似於大名鼎鼎的LVS負載均衡及HAPROXY等專業代理軟件,可是NGINX部署起來更方便,在緩存服務功能方面,它又相似於Squid等專業的緩存服務軟件c++
總結一下nginx的幾大功能:
web
1)www web服務正則表達式
2)負載均衡(也能夠叫作反向代理,也能夠叫作proxy)express
3)web 緩存(至關於squid,CDN主要使用squid) apache
nginx特色:瀏覽器
一、配置簡單、靈活、輕量緩存
二、高併發(靜態小文件),幾萬的併發
併發
三、佔用資源少 2W併發,開10個線程服務,內存才消耗幾百M
nginx安裝
1.安裝nginx須要安裝pcre庫與openssl
pcre的全稱爲 perl compatible regular expressions ,中文譯爲「perl兼容正則表達式」,安裝pcre庫是爲了使nginx支持具有URL重寫功能的rewrite模塊,若是不安裝pcre庫,則nginx沒法使用rewrite功能,nginx的rewrite模塊功能幾乎是企業應用必須的
yum install -y pcre pcre-devel
rpm -qa pcre pcre-devel
備註:rpm安裝的pcre版本有些低,不過通常狀況下不影響使用
openssl是加密的做用,nginx在使用https服務的時候會使用到此模塊
yum install openssl openssl-devel
rpm -qa openssl openssl-devel
依賴包安裝
yum -y install gcc gcc-c++ automake autoconf zlib zlib-devel openssl openssl-devel pcre pcre-devel
yum install libjpeg libjpeg-devel -y
yum install libxml2 libxml2-devel zlib zlib-devel ncurses ncurses-devel curl curl-devel -y
yum install gd gd2 gd-devel gd2-devel -y
有一些包是爲了之後作nginx負載均衡而安裝的
2.選擇並下載合適的nginx版本
nginx官方網站爲:www.nginx.org 能夠看到nginx的全部版本
nginx的軟件有三種版本,穩定版、開發版、及歷史穩定版
選擇標準以下:
開發版更新快,新功能多,但bug多
穩定版的更新很慢,可是bug較少,能夠作爲企業生產環境的首選。
可是在實際工做中,儘可能避免使用最新的穩定版,應該選擇比已出版原本的最新版本晚6-10個月的版本比較好
官網的解釋是這樣的:
Nginx官網提供了三個類型的版本
Mainline version:Mainline 是 Nginx 目前主力在作的版本,能夠說是開發版
Stable version:最新穩定版,生產環境上建議使用的版本
Legacy versions:遺留的老版本的穩定版
綜上所述,咱們選擇 1.8.1
3.開始安裝nginx
mkdir -p /app/3rd/nginx
cd /app/3rd/nginx
wget http://nginx.org/download/nginx-1.8.1.tar.gz
4.nginx優化選項
內存優化jemalloc
wget -P /opt http://mirrors.linuxeye.com/oneinstack/src/jemalloc-4.2.1.tar.bz2
cd /app/packages
tar jxf jemalloc-4.2.1.tar.bz2
cd jemalloc-4.2.1
./configure && make -j `grep processor /proc/cpuinfo|wc -l` && make install
echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
ldconfig
查看jemalloc運行狀況
lsof -n | grep jemalloc
(此項須要nginx安裝啓動完畢後纔會能夠看到)
5.編譯
useradd -M -s /sbin/nologin www
./configure --help 查看編譯選項
./configure --prefix=/app/zpy/nginx/ \
--user=www \
--group=www \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_flv_module \
--with-pcre \
--with-pcre-jit \
--with-ld-opt='-ljemalloc'
查看編譯結果:
echo $?
0
安裝
make
make install
6.啓動nginx
1)檢查nginx的配置文件及語法:
/app/zpy/nginx/sbin/nginx -t
nginx: the configuration file /app/zpy/nginx-1.8.1//conf/nginx.conf syntax is ok
nginx: configuration file /app/zpy/nginx-1.8.1//conf/nginx.conf test is successful
2)檢查80端口是否被佔用:
[root@elkzabbix01 zpy]# netstat -tunpl | grep 80
tcp 0 0 :::80 :::* LISTEN 20804/httpd
發現80已經被httpd apache佔用了,因此咱們中止 httpd
service httpd stop
chkconfig httpd off
3)啓動
/app/zpy/nginx/sbin/nginx
[root@elkzabbix01 zpy]# netstat -tunpl | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8398/nginx
瀏覽器輸入http://10.0.70.3能夠看到nginx頁面
或者 curl 10.0.70.3
若是你去一個公司以後發現nginx已經部署好了,你想知道nginx版本或者想知道nginx安裝的時候使用了哪些模塊怎麼辦??
執行以下命令: /app/zpy/nginx/sbin/nginx -V
輸出:
nginx version: nginx/1.8.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/app/zpy/nginx/ --with-http_stub_status_module --with-http_ssl_module