zoukankan      html  css  js  c++  java
  • 编译安装nginx时配置开机自启

    q==详细编译安装nginx请参考【Nginx目录结构与配置文件详解】以及【Nginx安装部署】,在这里就进行简单安装==

    安装Nginx

    环境介绍

    操作系统:

    [root@localhost ~]# cat /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core) 
    [root@localhost ~]# uname -a
    Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    

    nginx软件版本: nginx-1.17.6.tar.gz

    安装依赖

    注意:编译安装一定要安装开发工具,否则无法进行安装或安装报错

    [root@localhost opt]# yum -y install openssl openssl-devel zlib zlib-devel pcre pcre-devel make gcc gcc-c++
    

    安装nginx

    [root@localhost ~]# cd /opt/
    [root@localhost opt]# wget http://nginx.org/download/nginx-1.17.6.tar.gz
    [root@localhost opt]# tar zxf nginx-1.17.6.tar.gz 
    [root@localhost opt]# cd nginx-1.17.6/
    [root@localhost opt]# cd nginx-1.17.6/
    [root@localhost nginx-1.17.6]# 
    [root@localhost nginx-1.17.6]# ls
    auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
    [root@localhost nginx-1.17.6]# ./configure --prefix=/usr/local/nginx && make && make install
    

    启动测试nginx

    [root@localhost nginx-1.17.6]# cd /usr/local/nginx/
    [root@localhost nginx]# ls
    conf  html  logs  sbin
    [root@localhost nginx]# cd sbin/
    [root@localhost sbin]# ./nginx 
    [root@localhost sbin]# netstat -anpl | grep nginx		//查看端口
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11881/nginx: master 
    unix  3      [ ]         STREAM     CONNECTED     53405    11881/nginx: master  
    unix  3      [ ]         STREAM     CONNECTED     53404    11881/nginx: master  
    [root@localhost sbin]# ps aux | grep nginx		//查看进程
    jia       5496  0.0  0.0 302400   852 ?        Sl   10:58   0:00 /usr/libexec/ibus-engine-simple
    root     11881  0.0  0.0  20560   620 ?        Ss   11:23   0:00 nginx: master process ./nginx
    nobody   11882  0.0  0.1  23080  1632 ?        S    11:23   0:00 nginx: worker process
    root     11896  0.0  0.1 112728   988 pts/0    S+   11:24   0:00 grep --color=auto ngin
    

    设置为系统命令

    [root@localhost sbin]# ln nginx /usr/local/sbin/
    [root@localhost ~]# 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
    [root@localhost ~]# nginx -s stop		//停止nginx
    [root@localhost ~]# which nginx		//查看启动程序位置
    /usr/local/sbin/nginx
    

    方法一利用rc.local脚本

    rc.local是启动加载文件,在linux中要把一个程序加入开机启动,一般可以通过修改rc.local来完成,这个文件时开机就要加载的文件,所以我们就可以利用linux这个文件设置nginx开机自启动

    [root@localhost ~]# cat /etc/rc.local 		//文件存放在/etc目录下
    
    下面时rc.local的文件内容:
    
    #!/bin/bash
    # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
    #
    # It is highly advisable to create own systemd services or udev rules
    # to run scripts during boot instead of using this file.
    #
    # In contrast to previous versions due to parallel execution during boot
    # this script will NOT be run after all other services.
    #
    # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
    # that this script will be executed during boot.
    touch /var/lock/subsys/local
    

    利用这个文件可以设置自己想在开机时启动的命令,直接把自己想执行的命令写到rc.local中就可以了
    我们把nginx启动命令加入此文件中

    [root@localhost ~]# echo sh /usr/local/nginx/sbin/nginx >> /etc/rc.local 
    [root@localhost ~]# cat /etc/rc.local 
    #!/bin/bash
    # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
    #
    # It is highly advisable to create own systemd services or udev rules
    # to run scripts during boot instead of using this file.
    #
    # In contrast to previous versions due to parallel execution during boot
    # this script will NOT be run after all other services.
    #
    # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
    # that this script will be executed during boot.
    touch /var/lock/subsys/local
    /usr/local/nginx/sbin/nginx
    如果你上面把nginx设置为系统命令那你就可以直接写命令就好了
    nginx
    

    然后让我们重启系统再次查看端口和进程

    [root@localhost ~]# reboot
    重启后发现nginx自动启动了
    [root@localhost ~]# netstat -anpl | grep nginx
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4847/nginx: master  
    unix  3      [ ]         STREAM     CONNECTED     39265    4847/nginx: master   
    unix  3      [ ]         STREAM     CONNECTED     39264    4847/nginx: master   
    [root@localhost ~]# ps aux | grep nginx
    root      4847  0.0  0.0  20560   612 ?        Ss   11:45   0:00 nginx: master process /usr/local/nginx/sbin/nginx
    nobody    4848  0.0  0.1  23080  1388 ?        S    11:45   0:00 nginx: worker process
    root      4860  0.0  0.1 112724   988 pts/0    S+   11:45   0:00 grep --color=auto nginx
    [root@localhost ~]# 
    

    方法二设置系统服务

    推荐设置开机自启

    配置启动生成pid文件

    pid文件是进程文件里面存放的是程序运行的进程ID也就是进程号
    nginx生成pid文件需要修改配置文件
    修改内容如下:

    默认配置文件有这一条,如果没有请在nginx.conf中找到这一条然后将前面注释删除就可以了
    pid        logs/nginx.pid;
    

    在/usr/lib/systemd/system路径下添加nginx.service文件

    /usr/lib/systemd/system 此目录是用来存放一些系统服务的
    nginx文件内容:

    [root@localhost system]# cat nginx.service 
    [Unit]
    Description=nginx		//描述
    After=syslog.target network.target remote-fs.target nss-lookup.target		\\描述服务类别
    
    [Service]
    Type=forking		//设置运行方式,后台运行
    PIDFile=/usr/local/nginx/logs/nginx.pid		//设置PID文件
    ExecStart=/usr/local/nginx/sbin/nginx		//启动命令
    ExecReload=/bin/kill -s HUP $MAINPID		//重启命令
    ExecStop=/bin/kill -s QUIT $MAINPID			//关闭命令
    PrivateTmp=true		//分配独立的临时空间
    *注意命令需要写绝对路径
    [Install]		///服务安装的相关设置,可设置为多用户
    WantedBy=multi-user.target		
    

    注意:此文件需要754的权限

    测试启动关闭

    [root@localhost ~]# systemctl start nginx		//启动服务
    [root@localhost ~]# netstat -anpl | grep nginx
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5249/nginx: master  
    unix  3      [ ]         STREAM     CONNECTED     42458    5249/nginx: master   
    unix  3      [ ]         STREAM     CONNECTED     42459    5249/nginx: master  
    [root@localhost ~]# systemctl stop nginx			//关闭服务
    [root@localhost ~]# netstat -anpl | grep nginx
    [root@localhost ~]# systemctl restart nginx			//重新启动服务
    [root@localhost ~]# netstat -anpl | grep nginx
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5289/nginx: master  
    unix  3      [ ]         STREAM     CONNECTED     45346    5289/nginx: master   
    unix  3      [ ]         STREAM     CONNECTED     45347    5289/nginx: master   
    

    需要注意的是使用之前执行脚本来启动服务的,无法使用此方法关闭服务

    设置开机自启动

    [root@localhost ~]# systemctl enable nginx
    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
    [root@localhost ~]# systemctl enable nginx
    

    重启看效果

    [root@localhost ~]# netstat -anpl | grep nginx
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4081/nginx: master  
    unix  3      [ ]         STREAM     CONNECTED     32429    4081/nginx: master   
    unix  3      [ ]         STREAM     CONNECTED     32428    4081/nginx: master  
    

    init.d设置开机启动

    init启动方式在centos7系统版本已经不推荐使用了

    在/etc/init.d目录中创建启动文件nginx

    文件内容如下:

    #!/bin/bash
    # chkconfig: 345 80 20	//启动顺序
    # description: start the nginx deamon		//说明
    # Source function library
    . /etc/rc.d/init.d/functions
    
    prog=nginx
    # 根据自己的路径改写CATALANA_HOME
    CATALANA_HOME=/usr/local/nginx
    export CATALINA_HOME
    
    case "$1" in
    start)
        echo "Starting nginx..."
        $CATALANA_HOME/sbin/nginx
        ;;
    
    stop)
        echo "Stopping nginx..."
        $CATALANA_HOME/sbin/nginx -s stop
        ;;
    
    restart)
        echo "Stopping nginx..."
        $CATALANA_HOME/sbin/nginx -s stop
        sleep 2
        echo
        echo "Starting nginx..."
        $CATALANA_HOME/sbin/nginx
        ;;
    *)
        echo "Usage: $prog {start|stop|restart}"
        ;;
    esac
    exit 0
    

    设置权限

    [root@localhost ~]# chmod +x /etc/init.d/nginx		//设置执行权限
    

    测试启动

    [root@localhost init.d]# service nginx start			//启动nginx
    Starting nginx (via systemctl):                            [  确定  ]
    [root@localhost init.d]# netstat -anpl | grep nginx
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4081/nginx: master  
    unix  3      [ ]         STREAM     CONNECTED     38534    4081/nginx: master   
    unix  3      [ ]         STREAM     CONNECTED     38535    4081/nginx: master 
    [root@localhost init.d]# service nginx stop			//关闭nginx
    Stopping nginx (via systemctl):                            [  确定  ]
    [root@localhost init.d]# netstat -anpl | grep nginx
    [root@localhost init.d]# service nginx restart 			//重新启动nginx
    Restarting nginx (via systemctl):                          [  确定  ]
    [root@localhost init.d]# netstat -anpl | grep nginx
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5304/nginx: master  
    unix  3      [ ]         STREAM     CONNECTED     43218    5304/nginx: master   
    unix  3      [ ]         STREA  
    

    在centos7中init.d中的服务默认也会在system目录中

    【华为云-精选30+云服务产品助力好友上云】
    在这里插入图片描述

  • 相关阅读:
    MD5加密
    input text 只能输入数字
    input date 支持placeholder属性
    实例表单的增改删
    jQuery 框架中$.ajax()的常用参数有哪些?
    jquery的相关属性和方法
    JS中实现继承的六种方式及优缺点
    c++类型转换
    c++动态内存与智能指针
    c++类的构造函数
  • 原文地址:https://www.cnblogs.com/blxt/p/14501221.html
Copyright © 2011-2022 走看看