1、下载版本

  

其中Mainline version 为开发版、Stable version为稳定版、Legacy versions为历史版本, 我们选择稳定版复制此链接


# cd /mydata/

# wget http://nginx.org/download/nginx-1.16.0.tar.gz

 

最后出现:[1032345/1032345] 下载完整

2、安装依赖


# yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre*

 

//下载并解压pcre-8.42.zip  (上面已经包含了 pcre*,这里也可以不安装)

# cd /mydata

# wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.zip

//解压到 /usr/local/src/

# unzip pcre-8.42.zip -d /usr/local/src/    //-d参数表示按原名称创建一个包

3、创建nginx用户


// 创建nginx用户,

# useradd -M -s /sbin/nologin nginx   创建用户nginx,并且没有登录权限 -M 不创建家目录

# cat /etc/passwd 

# cat /etc/group

4、编辑配置项生成安装文件 Makefile


# cd /mydata

# tar -zxvf nginx-1.16.0.tar.gz          //解压nginx

# cd nginx-1.16.0/

# ls -al

# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.42

--prefix=/usr/local/nginx  定义安装路径

--user=nginx    指定用户

--group=nginx  指定用户组

--with-pcre=/usr/local/src/pcre-8.42    #这个是可选项,和上面解压到的路径一致,如果yum安装了依赖包这里也可以不用(例如上面已经安装了pcre*系列)

最后出现如图:


编辑完成后:再次  # ls -al ,此时就多了一个 Makefile的文件 (还有一个objs目录,),如果出错,解决错误后将这两个删除再重新执行即可。


5、编辑安装nginx


# make 

出现如下:

...

objs/ngx_modules.o \

-ldl -lpthread -lcrypt /usr/local/src/pcre-8.42/.libs/libpcre.a -lssl -lcrypto -ldl -lpthread -lz \

-Wl,-E

sed -e "s|%%PREFIX%%|/usr/local/nginx|" \

        -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \

        -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \

        -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \

        < man/nginx.8 > objs/nginx.8

make[1]: Leaving directory `/mydata/nginx-1.16.0'

//继续 

# make install 

出现如下:

...

test -d '/usr/local/nginx/logs' \

        || mkdir -p '/usr/local/nginx/logs'

test -d '/usr/local/nginx/html' \

        || cp -R html '/usr/local/nginx'

test -d '/usr/local/nginx/logs' \

        || mkdir -p '/usr/local/nginx/logs'

make[1]: Leaving directory `/mydata/nginx-1.16.0'

 

OK 完成

最后 在 /usr/local/下有nginx目录生成。并且里面包含以下几个目录


说明已经成功安装了 nginx


其中:

/usr/local/nginx/    为nginx的安装目录

/usr/local/nginx/conf   为nginx的配置文件目录

/usr/local/nginx/html  为nginx的默认站点目录

/usr/local/nginx/sbin  为nginx的可执行目录

/usr/local/nginx/logs 为nginx的日志目录


6、Nginx的启动与停止  

        nginx安装完成后启动文件为/usr/local/nginx/sbins/nginx ,此为一个二进制文件。在没有设置启动文件和环境变量之前,只能通过此文件进行启动、停止等

(1)启动nginx  


启动nginx

# /usr/local/nginx/sbin/nginx                          //启动nginx

浏览器访问:http://106.12.2.195/ 出现



OK默认站点可以方法,nginx服务已经启动


(2)查看nginx的运行状态


查看nginx的运行状态

# ps aux | grep nginx                //ps aux  列出系统所有的进程

出现如下:

root      3228  0.0  0.0  46088  1136 ?        Ss   01:21   0:00 nginx: master process /usr/local/nginx/sbin/nginx

nginx     3229  0.0  0.0  48628  1996 ?        S    01:21   0:00 nginx: worker process

root      3231  0.0  0.0 112708   980 pts/0    S+   01:21   0:00 grep --color=auto nginx

说明启动成功

其中第一行为nginx的主进程(master) 进程PID为3228

 

查看端口占用情况

# netstat -tlnp

出现

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3228/nginx: master

也说明nginx正常工作

(3)停止nginx


# /usr/local/nginx/sbin/nginx -s top        //强制停止 立即停止

# /usr/local/nginx/sbin/nginx -s quit        //从容停止,在完成当前任务后再停止

# kill  3228                            //杀死进程平滑停止 3228为nginx主进程的PID(可以通过ps aux | grep nginx 命令查看,第一条master对应的是)

或 killall nginx                        //杀死进程平滑停止

(4)重启nginx


# /usr/local/nginx/sbin/nginx -s reload   //平滑重启,必须在nginx已经启动的状态下才能执行。

7、添加环境变量

到此,我们每次启动nginx,必须使用/usr/local/nginx/sbin/nginx   输入太繁琐,把这个nginx加入到环境变量里,在任何地方通过nginx 就可以直接启动了。


# /usr/local/nginx/sbin/nginx -t                    #检查nginx配置文件的语法是否正确

出现:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

 

// 编辑添加到环境变量

# vim /etc/profile                        #添加环境变量

把 export PATH=$PATH:/usr/local/nginx/sbin  添加到此文件的最后

# source /etc/profile       //立即生效

查看

# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/nginx/sbin  添加进来了

 

# nginx   直接启动

 

# netstat -antup|grep nginx      //查看端口

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      27452/nginx: master

 

OK nginx服务已经运行了

测试:


//现在重启系统

#shutdown -r now 

#[root@localhost ~]# netstat -antup | grep nginx  //下面什么都没有,站点http://106.12.2.195/也无法访问

 

[root@localhost ~]# nginx   //使用我们设置的好的环境变量启动nginx,现在http://106.12.2.195/可以访问了

#[root@localhost ~]# netstat -antup | grep nginx  可以出现端口信息了

8、设置可执行文件、加入开启重启

(更多请见 https://blog.csdn.net/fsx2550553488/article/details/81039796)


# vim /etc/init.d/nginx

# ======================== 粘贴内容 start ========================

 

#!/bin/bash

# chkconfig: - 85 15

# description: nginx is a World Wide Web server. It is used to serve

 

#加载函数库

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

 

#加载网络配置文件

. /etc/sysconfig/network

 

#检查网络是否启动

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

 

#定义变量

nginx=/usr/local/nginx/sbin/nginx

prog=$(basename $nginx)

NGINX_CONFIG_NAME="/usr/local/nginx/conf/nginx.conf"

#LOCKFILE="/var/lock/nginx/nginx.lock"

 

#测试nginx主配置文件是否有语法错误

configtest() {

    $nginx -t

}

 

#启动函数

start() {

    configtest

    #-x:检测nginx的二进制系统文件是否存在,如果不存在直接退出

    test -x $nginx || exit 5

    #-f:检测nginx的主配置文件是否存在,如果不存在直接退出

    test -f $NGINX_CONFIG_NAME || exit 6

 

    #如果不存在pid目录、lock目录,则创建

    mkdir -p /var/run/nginx

    mkdir -p /var/lock/nginx

    #输出提示语句,表明nginx服务即将启动

    echo -n $"Starting $prog :"

    #使用nginx二进制系统文件启动nginx服务

    daemon $nginx -c $NGINX_CONFIG_NAME

    #获取nginx启动的返回状态值,存入变量retval

    retval=$?

    echo

    #如果返回状态值为0.表示启动成功,并创建锁文件

    test $retval -eq 0 && touch $LOCKFILE

    return $retval

}

 

#停止函数

stop() {

    #输出提示语句,表示nginx服务即将关闭

    echo "Stoping $prog :"

    #使用functions文件中定义的killproc函数,杀死nginx对应的进程

    killproc $prog  -QUIT

    #获取nginx关闭的返回状态值,存入变量retval(就是上一条命令执行是否成功的值)

    retval=$?

    echo

    #如果返回状态值为0表示关闭成功,删除锁文件

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

    return $retval

}

 

#重启函数

restart() {

    configtest || return $?

    stop

    sleep 3

    start

}

 

#热加载

reload() {

    configtest || return $?

    echo -n $"Reloading $prog :"

    #同stop,参数不同,这个表示重启进程

    killproc $nginx -HUP

 

    retval=$?

    echo

}

 

#强制重启

force_reload() {

    restart

}

 

#状态查询

rt_status() {

    #functions中的status函数,获取对应进程的状态

    status $prog

    #如果获取状态为runing,则显示配置文件检测结果,更加细化

    [ $? -eq 0 ] && echo -n `configtest`

    }

 

case $1 in

    status)

        rt_status

        ;;

    start)

        start

        ;;

    stop)

        stop

        ;;

    restart)

        restart

        ;;

    reload)

        reload

        ;;

    force_reload)

        force_reload

        ;;

    *)

        #如果输入的$1不是上面的,则输出提示信息

        echo "Usage:$prog {start|stop|status|reload|force_reload|restart}"

        exit 1

        ;;

esac

 

# ======================== 粘贴内容  end =========================

 

// 赋予脚本执行权限。

# chmod +x /etc/init.d/nginx

 

加入开机重启


// 添加至服务管理列表,设置开机自启。

# chkconfig --add nginx

# chkconfig  nginx on

// 启动nginx

# service nginx start      (nginx关闭状态下才可以)

 

// 重启服务器测试:

# shutdown -r now  

OK 开机重启完成。


到此,整个安装完成


附:nginx常用命令


//初始安装后没有加载环境变量前只能使用

# /usr/local/nginx/sbin/nginx 来启动服务

# /usr/local/nginx/sbin/nginx -s stop  停止服务

# /usr/local/nginx/sbin/nginx -s reload  平滑重启(必须在开启的状态下才可以)

# /usr/local/nginx/sbin/nginx -t   查看nginx配置是否正确

//设置环境变量后,直接通过

# nginx  来代替上面的 /usr/local/nginx/sbin/nginx 即可

 

 

//设置启动脚本,并且通过chkconfig --add nginx 加到service服务后,可以通过

# service nginx start     (systemctl start nginx.service)

# service nginx stop        (systemctl stop nginx.service)

# service nginx restart    (systemctl restart nginx.service)

# service nginx status    (systemctl status nginx.service)

来操作

 

 

也可以使用:

# /etc/init.d/nginx start

# /etc/init.d/nginx stop

# /etc/init.d/nginx restart

# /etc/init.d/nginx status

 

# netstat -tlnp      //查看端口,仅显示服务中的

# netstat -antup      //查看所有端口

# netstat -antup|grep nginx      //查看nginx端口

# ps aux               //查看所有进程

# ps aux | grep nginx     //查看nginx的进程

# kill  3228                            //杀死进程平滑停止 3228为nginx主进程的PID(可以通过ps aux | grep nginx 命令查看,第一条master对应的是)

或 killall nginx