LNMP环境搭建之Nginx

这里写图片描述

1.Nginx配置文件测试

root@kallen:/usr/local/nginx/sbin# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 
nginx: configuration file /etc/nginx/nginx.conf test is successful

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

2.Nginx启动

[root@kallen ~]# /usr/local/nginx/sbin/nginx 

 

 
 
  
  
  
  
  • 1

3.Nginx负载均衡

Nginx Architecture:
LNMP环境搭建之Nginx_第1张图片
Nginx LoadBalance:
LNMP环境搭建之Nginx_第2张图片
Nginx High Availability:
LNMP环境搭建之Nginx_第3张图片
Nginx Access Process:
LNMP环境搭建之Nginx_第4张图片
Nginx 的 upstream 目前支持4 种方式的分配——

(1)轮询(默认) :

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

(2)weight :

指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。

(3)ip_hash :

每个请求按访问ip 的hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session 的问题。可以针对同一个C 类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。

(4)fair(第三方):

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

(5)url_hash(第三方):

按访问url 的hash 结果来分配请求,使每个url 定向到同一个后端服务器,后端服务器为缓存时比较有效。

4.Nginx安装及配置

(1) nginx源码安装

[root@kallen ~]# cd /usr/local/src/

 

 
 
  
  
  
  
  • 1

[root@kallen ~]# wget http://syslab.comsenz.com/downloads/linux/nginx-0.9.6.tar.gz[root@kallen ~]# tar zxvf nginx-0.9.6.tar.gz[root@kallen ~]# cd nginx-0.9.6

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

./configure --prefix=/usr/local/nginx 
--sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --pid-path=/usr/local/nginx/var/nginx.pid --lock-path=/usr/local/nginx/var/nginx.lock --http-client-body-temp-path=/dev/shm/nginx_temp/client_body --http-proxy-temp-path=/dev/shm/nginx_temp/proxy --http-fastcgi-temp-path=/dev/shm/nginx_temp/fastcgi --user=www --group=www --with-cpu-opt=pentium4F --without-select_module --without-poll_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --without-http_ssi_module --without-http_userid_module --without-http_geo_module --without-http_memcached_module --without-http_map_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-pcre=/usr/local/src/pcre-8.32/ --with-zlib=/usr/local/zlib

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

[root@kallen ~]# make && make install [root@kallen ~]# mkdir /dev/shm/nginx_temp

 

 
 
  
  
  
  
  • 1

  • 2

有的nginx版本编译时会因为pcre编译不过去,需要修改一下
--with-pcre=/usr/local/src/pcre-8.32,前提是已经下载了pcre源码包pcre-7.8.tar.gz,并解压到/usr/local/src/pcre-8.32,不需要编译pcre.

在实际安装过程中可能需要手动安装以下依赖包:

a. 安装依赖软件

apt-get --install-suggests install gcc g++ make

 

 
 
  
  
  
  
  • 1

b. 下载相关软件

wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gzwget http://zlib.net/zlib-1.2.8.tar.gzwget http://www.openssl.org/source/openssl-1.0.1g.tar.gzwget http://www.canonware.com/download/jemalloc/jemalloc-3.6.0.tar.bz2
wget http://tengine.taobao.org/download/tengine-2.0.2.tar.gz

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

  • 4

  • 5

c. 安装Pcre

  tar zxvf pcre-8.35.tar.gz
  cd pcre-8.35
 ./configure --prefix=/usr/local/pcre-8.35
  make && make install

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

  • 4

d. 安装Zlib

  tar zxvf zlib-1.2.8.tar.gz
  cd zlib-1.2.8
  ./configure --prefix=/usr/local/zlib-1.2.8
  make && make install

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

  • 4

[ERROR]-1:

./configure: error: the HTTP gzip module requires the zlib library. 
You can either disable the module by using --without-http_gzip_module option, or install the zlib library into the system, or build the zlib library 
statically from the source with nginx by using --with-zlib=<path> opti

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

  • 4

[ERROR]-2:

configure: error: You need a C++ compiler for C++ support.
make[1]: *** [/usr/local/src/pcre-8.32/Makefile] Error 1
make[1]: Leaving directory `/home/kallen/MyDOC/nginx-1.8.0'make: *** [build] Error 2

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

  • 4

安装完成后的配置信息如下:

[Nginx Configuration Summary]Configuration summary
+ using PCRE library: /usr/local/src/pcre-8.32+ OpenSSL library is not used
+ using builtin md5 code
+ sha1 library is not found
+ using zlib library: /usr/local/zlib
  nginx path prefix:"/usr/local/nginx"
  nginx binary file:"/usr/local/nginx/sbin/nginx"
  nginx configuration prefix:"/usr/local/nginx/conf"
  nginx configuration file:"/usr/local/nginx/conf/nginx.conf"
  nginx pid file:"/usr/local/nginx/var/nginx.pid"
  nginx error log file:"/usr/local/nginx/logs/error.log"
  nginx http access log file:"/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files:"/dev/shm/nginx_temp/client_body"
  nginx http proxy temporary files:"/dev/shm/nginx_temp/proxy"
  nginx http fastcgi temporary files:"/dev/shm/nginx_temp/fastcgi"
  nginx http uwsgi temporary files:"uwsgi_temp"
  nginx http scgi temporary files:"scgi_temp"

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

(2) 编写nginx启动脚本

[root@kallen init.d]# vi /etc/init.d/nginx

 

 
 
  
  
  
  
  • 1

写入以下内容:

#!/bin/bash#        # Startup script for the Nginx HTTP Server## Kallen Ding, Apr 23 2015NGINX_PATH="/usr/local/nginx/"OPTIONS="-c ${NGINX_PATH}conf/nginx.conf"prog=nginx
nginx=${NGINX_PATH}sbin/nginx
pidfile=/var/run/nginx.pid# Source function library.. /etc/rc.d/init.d/functionsstart() {    echo -n "Starting $prog: "
    daemon --pidfile=${pidfile} $nginx $OPTIONS
    RETVAL=$?    echo
    return $RETVAL}stop() {    echo -n "Stopping $prog: "
    killproc -p ${pidfile} $nginx
    RETVAL=$?    echo}reload() {    echo -n $"Reloading $prog: "
    killproc -p ${pidfile} $nginx -HUP
    RETVAL=$?    echo}# See how we were called.case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  reload)
        reload
    ;;
  status)
    status $prog
    RETVAL=$?
    ;;
  *)    echo "Usage: $prog {start|stop|restart|reload|status}"
    RETVAL=3esacexit $RETVAL

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

  • 37

  • 38

  • 39

  • 40

  • 41

  • 42

  • 43

  • 44

  • 45

  • 46

  • 47

  • 48

  • 49

  • 50

  • 51

  • 52

  • 53

  • 54

  • 55

  • 56

  • 57

  • 58

  • 59

  • 60

  • 61

  • 62

保存后,更改/etc/init.d/nginx的权限

[root@kallen ~]# chmod 755 /etc/init.d/nginx[root@kallen ~]# chkconfig --add nginx[root@kallen ~]# chkconfig nginx on

 

 
 
  
  
  
  
  • 1

  • 2

  • 3

】文中所有图片均来自Nginx官网.

你可能感兴趣的:(nginx,LNMP)