zoukankan      html  css  js  c++  java
  • Linux Nginx 安装配置

    安装前准备工作

    GCC编译器-程序代码编译工具!

    首先检验你的服务器环境是否安装gcc,方法如下:

    #gcc

    如果出现:gcc: no input files 证明已经安装过gcc编译工具!

    如果出现:gcc: command not found 说明还没有安装过gcc编译工具!

    # yum install gcc

    编译Nginx时需要用到PCRE,同时Nginx的Rewrite和http模块也要用到PCRE的语法!需要安装pcre包pcre-devel包.pcre包负责提供库的编译版本,pcre-devel包提供编译项目时用到的开发头文件和代码!

    # yum install pcre pcre-devel 或 #yum install pcre*,两个命令效果一样,安装的文件也一样!

    Zlib 软件包包含zlib 库,很多程序中的压缩或者解压缩函数都会用到这个库。Nginx的不同模块使用gzip压缩时会使用到,需要安装zlib和zlib-devel两个包!

    # yum install zlib zlib-devel

    Nginx提供安全网页服务时候需要使用到OpenSSL!需要安装openssl 和openssl-devel两个包!

    # yum install openssl openssl-devel

    #进入指定目录,下载安装包,默认下载到root目录下,下载后就是解压,编译,安装,Nginx默认安装在 /usr/local/nginx/ 文件夹下

    [root@rh-linux ~]# wget http://nginx.org/download/nginx-1.9.3.tar.gz

    [root@rh-linux ~]# tar -zxvf nginx-1.9.3.tar.gz

    [root@rh-linux ~]# cd /root/nginx-1.9.3

    [root@rh-linux nginx-1.9.3]# ./configure

    [root@rh-linux nginx-1.9.3]# make

    编译完后可以执行make check进行测试

    [root@rh-linux nginx-1.9.3]# make install

    启动Nginx

    [root@rh-linux ~]# /usr/local/nginx/sbin/nginx

    启动过程中报以下错误,则是apache或nginx已经是运行状态

    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

    所以,在启动前现检查下apache是否正在运行,如果在运行则关闭服务并取消开机启动

    # service httpd status

    httpd (pid  3162) is running...

    # service httpd stop  

    Stopping httpd: [  OK  ]

    # chkconfig --level 3 httpd off

    再次启动nginx

    # /usr/local/nginx/sbin/nginx

    指定加载配置文件可以使用如下:

    [root@rh-linux ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

    停止Nginx

    [root@rh-linux ~]# /usr/local/nginx/sbin/nginx -s stop

    #重新加载配置文件(改动了参数无需重启,只有执行重新加载即可)

    [root@rh-linux ~]# /usr/local/nginx/sbin/nginx -s reload

    如果提示下面的错误

    nginx: [error] invalid PID number "" in "/var/run/nginx.pid"

    则可以使用这个命令重启

    [root@rh-linux ~]# /etc/init.d/nginx restart

    退出停止

    [root@rh-linux ~]# /usr/local/nginx/sbin/nginx -s quit

    设置开机启动

    vi /etc/init.d/nginx (下载nginx代码

    设置权限访问权限

    chmod 750 /etc/init.d/nginx

    加入开机启动项

    vi /etc/rc.local

    加入一行  /etc/init.d/nginx start    保存并退出,下次重启会生效。

    测试nginx是否启动成功 

    # ps -A | grep nginx  // 有输出证明启动成功了

    通过向nginx进程发送信号停止步骤1:查询nginx主进程号

    # ps -ef | grep nginx

    [root@rh-linux ~]# ps -ef | grep nginx

    root      2994     1  0 01:28 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

    nobody    2995  2994  0 01:28 ?        00:00:00 nginx: worker process

    root      3013  2834  0 01:28 pts/1    00:00:00 grep nginx

    在进程列表里面找master进程,它的编号(2994)就是主进程号了。

    步骤2:发送信号
    从容停止Nginx:
    kill -QUIT 主进程号
    快速停止Nginx:
    kill -TERM 主进程号
    强制停止Nginx:
    pkill -9 nginx

    另外,若在nginx.conf配置了pid文件存放路径则该文件存放的就是Nginx主进程号,如果没指定则放在nginx的logs目录下。有了pid文件,我们就不用先查询Nginx的主进程号,而直接向Nginx发送信号了,命令如下:
    kill -信号类型 '/usr/local/nginx/logs/nginx.pid'

    平滑重启
    如果更改了配置就要重启Nginx,要先关闭Nginx再打开?不是的,可以向Nginx发送信号,平滑重启。
    平滑重启命令:
    kill -HUP 住进称号或进程号文件路径

    注意,修改了配置文件后最好先检查一下修改过的配置文件是否正确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
    nginx -t -c /usr/nginx/conf/nginx.conf

    or 

    /usr/nginx/sbin/nginx -t


    平滑升级
    如果服务器正在运行的Nginx要进行升级、添加或删除模块时,我们需要停掉服务器并做相应修改,这样服务器就要在一段时间内停止服务,Nginx可以在不停机的情况下进行各种升级动作而不影响服务器运行。
    步骤1:
    如果升级Nginx程序,先用新程序替换旧程序文件,编译安装的话新程序直接编译到Nginx安装目录中。
    步骤2:执行命令
    kill -USR2 旧版程序的主进程号或进程文件名
    此时旧的Nginx主进程将会把自己的进程文件改名为.oldbin,然后执行新版Nginx。新旧Nginx会同市运行,共同处理请求。
    这时要逐步停止旧版Nginx,输入命令:
    kill -WINCH 旧版主进程号
    慢慢旧的工作进程就都会随着任务执行完毕而退出,新版的Nginx的工作进程会逐渐取代旧版工作进程。

    此时,我们可以决定使用新版还是恢复到旧版。
    不重载配置启动新/旧工作进程
    kill -HUP 旧/新版主进程号
    从容关闭旧/新进程
    kill -QUIT 旧/新主进程号
    如果此时报错,提示还有进程没有结束就用下面命令先关闭旧/新工作进程,再关闭主进程号:
    kill -TERM 旧/新工作进程号

    这样下来,如果要恢复到旧版本,只需要上面的几个步骤都是操作新版主进程号,如果要用新版本就上面的几个步骤都操作旧版主进程号就行了。

    Nginx开启启动脚本

    这里使用的是编写shell脚本的方式来处理

    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: /usr/local/nginx/conf/nginx.conf
    nginxd=/usr/local/nginx/sbin/nginx
    nginx_config=/usr/local/nginx/conf/nginx.conf
    nginx_pid=/var/run/nginx.pid
    RETVAL=0
    prog="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 1
      fi
      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 /var/run/nginx.pid
    }
    # reload nginx service functions.
    reload() {
      echo -n $"Reloading $prog: "
      #kill -HUP `cat ${nginx_pid}`
      killproc $nginxd -HUP
      RETVAL=$?
      echo
    }
    # See how we were called.
    case "$1" in
      start)
        start
        ;;
      stop)
        stop
        ;;
      reload)
        reload
        ;;
      restart)
        stop
        start
        ;;
      status)
        status $prog
        RETVAL=$?
        ;;
    *)
      echo $"Usage: $prog {start|stop|restart|reload|status|help}"
      exit 1
    esac
    exit $RETVAL

    *************************************************************************************
    *************************************************************************************
     

    :wq 保存并退出

    设置文件的访问权限

    chmod a+x /etc/init.d/nginx (a+x ==> all user can execute 所有用户可执行)

    最后将ngix加入到rc.local文件中,这样开机的时候nginx就默认启动了
    vi /etc/rc.local
    添加
    /etc/init.d/nginx start
    保存并退出
    下次重启就会生效,实现nginx的自启动。

    文章内容来源:

    http://www.cnblogs.com/meteoric_cry/archive/2011/01/27/1945882.html 

    原百度空间地址:

    http://wenzhang.baidu.com/page/view?key=9e2b127f35da1a48-1427584025

  • 相关阅读:
    C# 图片与Base64的相互转化
    LeetCode 303. Range Sum Query – Immutable
    LeetCode 300. Longest Increasing Subsequence
    LeetCode 292. Nim Game
    LeetCode 283. Move Zeroes
    LeetCode 279. Perfect Squares
    LeetCode 268. Missing Number
    LeetCode 264. Ugly Number II
    LeetCode 258. Add Digits
    LeetCode 257. Binary Tree Paths
  • 原文地址:https://www.cnblogs.com/weiok/p/4681722.html
Copyright © 2011-2022 走看看