CentOS7.3编译安装LNMP之(一)Nginx-1.16.0安装

1、下载版本
CentOS7.3编译安装LNMP之(一)Nginx-1.16.0安装_第1张图片  CentOS7.3编译安装LNMP之(一)Nginx-1.16.0安装_第2张图片
其中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*系列)
最后出现如图:
CentOS7.3编译安装LNMP之(一)Nginx-1.16.0安装_第3张图片
编辑完成后:再次  # 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                        //杀死进程平滑停止

友情推荐
CentOS7.3编译安装LNMP之(二)MySQL-5.7.26安装
CentOS7.3编译安装LNMP之(三)PHP-7.2.18安装
Nginx配置详情
 

你可能感兴趣的:(Linux,Nginx)