Nginx编译安装

Linux系统下Nginx的源码编译安装模块依赖性,需要依赖下面3个安装包(下面的演示版本不是最新版本,你也可以下载最新的版本,只要把版本号修改一下即可):

一般yum安装以下几个插件:

yum -y install pcre-devel zlib-devel openssl openssl-devel

但这里我们选择编译安装:

1:ssl 功能需要 openssl 库 ( 下载:http://www.openssl.org/source) 

wget http://www.openssl.org/source/openssl-fips-1.0.2l.tar.gz

2:gzip 模块需要 zlib 库 ( 下载:http://www.zlib.net/)

wget http://zlib.net/zlib-1.2.11.tar.gz

3:rewrite 模块需要 pcre 库 ( 下载:http://www.pcre.org/ )

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz

############## 一、安装OpenSSL ######################

下载地址 https://www.openssl.org/source/

wget https://www.openssl.org/source/openssl-1.0.2l.tar.gztar zxvf openssl-1.0.2l.tar.gzcd openssl-1.0.2l/./config --prefix=/usr/ --openssldir=/usr/ shared; make && sudo make install

################ 二、安装PCRE ########################

下载地址 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gztar zxvfpcre-8.41.tar.gz./configure --prefix=/opt/pcre-8.41 ; make && sudo make install

################ 三、安装ZLIB ########################

tar -zxvf zlib-1.2.11.tar.gzcd zlib-1.2.11./configuremakemake install

################ 三、安装Nginx ########################

下载Nginx源码包(stable version)

wget http://nginx.org/download/nginx-1.12.2.tar.gz

创建用户与组:

groupadd nginxuseradd -s /sbin/nologin -g nginx -M nginx

解压

tar -zxvf nginx-1.12.2.tar.gzcd nginx-1.12.2/

配置编译环境(--with-pcre、--with-openssl的路径是源码路径,pcre、openssl的安装路径在/opt,但这里只需要源码路径)

./configure \--prefix=/opt/nginx \--user=nginx \--group=nginx \--error-log-path=/opt/nginx/logs/nginx/error.log \--http-log-path=/opt/nginx/logs/nginx/access.log \--pid-path=/opt/nginx/run/nginx/nginx.pid \--lock-path=/opt/nginx/var/lock/nginx.lock \--with-http_ssl_module \--with-http_flv_module \--with-http_stub_status_module \--with-http_gzip_static_module \--with-pcre=../pcre-8.41 \(默认路径就--with-pcre即可)--with-http_realip_module \(更方便的获取真实客户端IP,可以使用nginx http_realip_module模块解决)--with-openssl (#编译路径指定--with-openssl=/opt/openssl-1.0.21)

#以上编译安装nginx后,--http-client-body-temp-path、--http-proxy-temp-path、--http-fastcgi-temp-path、--http-uwsgi-temp-path、--http-scgi-temp-path默认的路径就在/usr/local/nginx下,分别是client_body_temp、proxy_temp、fastcgi_temp、scgi_temp、uwsgi_temp

rhel7.4中nginx编译安装:./configure \--prefix=/web/nginxserver/nginx \--user=nginx \--group=nginx \--sbin-path=/usr/local/sbin/nginx \    生成可执行文件--error-log-path=/web/nginxserver/nginx/logs/nginx/error.log \--http-log-path=/web/nginxserver/nginx/logs/nginx/access.log \--pid-path=/web/nginxserver/nginx/run/nginx/nginx.pid \--lock-path=/web/nginxserver/nginx/var/lock/nginx.lock \--with-http_ssl_module \--with-http_flv_module \--with-http_stub_status_module \--with-http_gzip_static_module \--with-pcre \--with-http_realip_module

make && make install如果编译的时候没有指定“--sbin-path=path”sbin路径,会在你指定的安装路径生成sbin目录自己添加一个nginx主程序的符号链接ln -s /web/nginx/sbin/nginx /usr/local/sbin//bin  存放所有用户皆可用的系统程序,系统启动或者系统修复时可用(在没有挂载 /usr 目录时就可以使用)/sbin 存放超级用户才能使用的系统程序/usr/bin 存放所有用户都可用的应用程序(都是系统预装的可执行程序,会随着系统升级而改变)/usr/sbin 存放超级用户才能使用的应用程序 /usr/local/bin 存放所有用户都可用的与本地机器无关的程序(目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件)/usr/local/sbin 存放超级用户才能使用的与本地机器无关的程序

配置参数描述:

--with-xxx    代表默认没有打开的功能

--without-xxx 代表默认打开的功能

--prefix=path 代表安装路径

--sbin-path=path  sbin路径
--conf-path  配置文件
--pid-path 代表进程号保存文件
--error-log-path错误日志
--lock-path  锁文件
--user   ps看到的启动进程用户
--group ps看到的启动进程用户所在组
--with-http_ssl_module
--with-http_flv_module

将nginx加入service来管理启动与停止:

vi /etc/init.d/nginx#!/bin/bash# nginx Startup script for the Nginx HTTP Server# it is v.0.0.2 version.# chkconfig: - 85 15# description: Nginx is a high-performance web and proxy server.# It has a lot of features, but it's not for everyone.# processname: nginx# pidfile: /var/run/nginx.pid# config: /opt/nginx/conf/nginx.confnginxd=/opt/nginx/sbin/nginxnginx_config=/opt/nginx/conf/nginx.confnginx_pid=/opt/nginx/run/nginx/nginx.pidRETVAL=0prog="nginx"# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ ${NETWORKING} = "no" ] && exit 0[ -x $nginxd ] || exit 0# Start nginx daemons functions.start() {if [ -e $nginx_pid ];then echo "nginx already running...." exit 1fi echo -n $"Starting $prog: " daemon $nginxd -c ${nginx_config} RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx return $RETVAL}# Stop nginx daemons functions.stop() { echo -n $"Stopping $prog: " killproc $nginxd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /opt/nginx/run/nginx/nginx.pid #这里也要注意修改你的nginx的pid路径}# reload nginx service functions.reload() { echo -n $"Reloading $prog: " killproc $nginxd -HUP RETVAL=$? echo}# See how we were called.case "$1" instart) start ;;stop) stop ;;reload) reload ;;restart) stop start ;;status) status $prog RETVAL=$? ;;*) echo $"Usage: $prog {start|stop|restart|reload|status|help}"        exit 1esacexit $RETVAL

chmod +x /etc/init.d/nginxchkconfig --add nginxchkconfig nginx onchkconfig --list nginxnginx           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭