redhat 5下源码安装nginx服务

首先确保机器中已安装 gcc c++,libtool等工具,保证可执行源码安装

A、为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装有 PCRE(Perl Compatible Regular Expressions)包。您可以到 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:

1、解压:tar -zxvf pcre-8.34.tar.gz

2、切换到目录:cd pcre-8.34/

3、指定安装路径:./configure --prefix=/usr/local/pcre

4、编译并安装:make && make install

B、为了确保能在 Nginx 中使用URL重写模块,安装之前需要确定系统是否安装有 openssl包。您可以到http://www.openssl.org/source/ 下载适合自己系统的 openssl 源码包,使用下面命令下载编译和安装openssl包:

1、解压:tar -zxvf openssl-0.9.8y.tar.gz

2、切换到目录:cd ./openssl-0.9.8y/

3、指定安装路径:./configure --prefix=/usr/local/openssl shared zlib-dynamic enable-camellia

4、编译并安装:make && make install

【PS:系统自带的openssl为其他软件的依赖项请勿轻易卸载】

使新安装的openssl发挥作用

a、将openssl安装路径加入到$PATH中:

  vi /etc/profile

  SSLPATH=/usr/local/openssl/bin  

  PATH=$SSLPATH:$PATH

export PATH

b、将路径/usr/bin/下openssl改名为openssl0.9.8(安装的软件包名)

切换到操作目录下(/usr/bin/):mv openssl openssl 0.9.8

c、将/usr/local/openssl/include/openssl内容拷贝到/usr/include/下,并更名为openssl0.9.8

切换到操作目录下(/usr/include/):cp -r /usr/local/openssl/include/openssl ./

C、开始安装nginx服务

1、解压:tar -zxvf nginx-1.4.7.tar.gz

2、切换到目录:cd ./nginx-1.4.7/

3、指定安装路径:./configure \

--prefix=/usr/local/nginx-1.4.7 \

--sbin-path=/usr/sbin/nginx \

         --conf-path=/etc/nginx/nginx.conf \

         --error-log-path=/var/log/nginx/error.log \

         --pid-path=/var/run/nginx/nginx.pid \

         --lock-path=/var/lock/nginx.lock \

         --user=nginx \

         --group=nginx \

         --with-http_ssl_module \

         --with-http_flv_module \

         --with-http_gzip_static_module \

         --http-log-path=/var/log/nginx/access.log \

         --http-client-body-temp-path=/var/tmp/nginx/client \

         --http-proxy-temp-path=/var/tmp/nginx/proxy \     

         --http-fastcgi-temp-path=/var/tmp/nginx/fcgi \

         --with-http_stub_status_module \

         --with-pcre=/home/andy/pcre-8.34 \

         --with-openssl=/home/andy/openssl-0.9.8y \

         --with-zlib=/home/andy/zlib-1.2.8

[

PS:注意事项。pcre,openssl,zlib依赖项的路径问题

  –with-pcre|--with-openssl|--with-zlib=DIR set path to PCRE library sources

  注意:set path to XX library sources是让你设置到源码目录,而不是编译安装后的目录。

]

4、编译并安装:make && make install

5、测试安装

  a、第一步:/usr/sbin/nginx -c /etc/nginx/nginx.conf  (提示/var/tmp/nginx/client目录不存在时,请自行建立该目录)

  b、第二步:nginx -c /etc/nginx/nginx.conf  (提示80端口已被占用,请先停止占用该端口的服务)

  c、第三步:ps -ef | grep nginx  (查看服务是否启动)

6、将nginx作为启动项的shell脚本

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemon

#

# chkconfig: - 85 15

# description: Nginx is an HTTP(S) server, HTTP(S) reverse \

# proxy and IMAP/POP3 proxy server

# processname: nginx

# config: /etc/nginx/nginx.conf

# config: /etc/sysconfig/nginx

# pidfile: /var/run/nginx.pid

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0

pidfile=/var/run/nginx/nginx.pid

nginx="/usr/sbin/nginx"

prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/nginx.lock

make_dirs() {

# make required directories

user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`

options=`$nginx -V 2>&1 | grep 'configure arguments:'`

for opt in $options; do

if [ `echo $opt | grep '.*-temp-path'` ]; then

value=`echo $opt | cut -d "=" -f 2`

if [ ! -d "$value" ]; then

# echo "creating" $value

mkdir -p $value && chown -R $user $value

fi

fi

done

}

start() {

[ -x $nginx ] || exit 5

[ -f $NGINX_CONF_FILE ] || exit 6

make_dirs

echo -n $"Starting $prog: "

daemon $nginx -c $NGINX_CONF_FILE

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n $"Stopping $prog: "

killproc $prog -QUIT

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

configtest || return $?

stop

sleep 1

start

}

reload() {

configtest || return $?

echo -n $"Reloading $prog: "

killproc $nginx -HUP

RETVAL=$?

echo

}

force_reload() {

restart

}

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

case "$1" in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart|configtest)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit 0

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

exit 2

esac

使用chkconfig加载shell设置成服务:

Shell代码

  1. [root@localhost ~]# cp nginx /etc/init.d/nginx
  2. [root@localhost ~]# cd /etc/init.d
  3. [root@localhost init.d]# chmod 755 nginx
  4. [root@localhost init.d]# chkconfig --add nginx

下边启动nginx:

Shell代码

  1. [root@localhost init.d]# service nginx start
  2. Starting nginx: [ok]

shell里还有其他的命令用起来都很方便,希望能帮助大家: