Nginx的安装和配置,Nginx安装配置


以前装Nginx都是直接百度一下,装完了事,结果用的时候又有很多不明白的地方,所有今天打算把安装过程记录一下。

    首先是安装环境的准备,我的系统环境是Centos 7,用的是虚拟机。因为打算自己编译安装,所以先看一下编译安装所需要的工具是否都安装好了。

    编译安装Nginx需要GCC,PCRE,zlib和OpenSSL,如果这几样工具没有装好的话,要提前装一下,需要注意的是,PCRE,zlib和Openssl不仅要安装软件本身,还需要安装开发开发包。所以需要运行

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

    这些前置的软件和工具安装好以后,就可以进行到下一步。

    首先是从官网下载最新的稳定版的源码包,写这篇博客的时候是1.12.2版本了,将源码包下载并且解压

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

    解压完成以后进到目录下,还有三个步骤,第一个步骤是配置选项,如果要使用默认配置的话,就直接运行

./configure

    如果需要设置自定义的选项的话,就可以带上对应的参数,详细的选项列表可以自己去找一下资料,这里我们只加上一个简单的开启https的选项

./configure --with-http_ssl_module

    运行这个命令以后,会有一个验证的过程,来检测程序编译的前提条件是否都满足,如果有自定义的选项的话,还有检查选项是否配置正确。下一步使用

make

    命令对源码进行编译,如果第一步的验证通过的话,这里不会出现什么问题,然后输入

make install

    进行安装,默认的安装目录是/usr/local/nginx,所以如果不是root用户登陆的话,需要获取root权限。

    如果前面的准备工作都做好了的话,安装过程应该会比较顺利,接下来看一下一些简单的配置。

    一般情况下安装成功以后,可以执行/usr/local/nginx/sbin/nginx来开启Nginx的服务,Nginx默认是监听80端口

所以如果80端口被占用的话, 可能就无法正常启动,可以使用

ps aux | grep nginx

来查看nginx的相关进程,如果80端口被占用了,可以用

netstat -lnp | grep 80

    这命令来查看是哪个进程占用了80端口

    因为我之前没有启动例如apache等类似的服务器,所以正常启动了Nginx,这个3737就是进程号,如果是其他程序占用了80端口,可以将这个进程kill以后,再执行刚才的命令将Nginx启动。

    输入

/usr/local/nginx/sbin/nginx -h

    可以查看Nginx的相关操作命令

    但是每次都要输入完整的地址,很麻烦,所以有几个方法可以方便一点的,这里介绍两种,

    第一种是临时的,只在当前终端生效的,是创建一个别名来指向Nginx这个执行文件

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

    这样就可以在命令行中直接输入类似

nginx -s reload

命令来操作Nginx

    还有一种是永久的,那就是将Nginx的路径加入到环境变量中,使用vi打开/etc/profile文件,在文件末尾加上

PATH=$PATH:/usr/local/nginx/sbin
export PATH

    注意这里的路径到sbin就到头了,刚才创建别名是创建可执行文件的别名,所以要指定到nginx这个文件

然后source一下这个文件,就可以永久的在命令行直接输入nginx这个命令来操作Nginx了。

    到这一步Nginx的安装就基本结束了,但是我还想让Nginx作为守护进程运行,并且能够随着系统的启动而启动,所以需要一个shell脚本来做这件事。

    在/etc/init.d这个目录下新建一个名为nginx的文件,确保是在root用户或者有root权限下进行这些操作。然后在这个文件中输入以下内容

  #! /bin/bash

  # chkconfig:3 10 90

  # description:.

  set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
SCRIPTNAME=/etc/init.d/$NAME

# 如果文件不存在的话,就结束脚本
test -x $DAEMON || exit 0

# 下面是定义几个函数,用来操作Nginx
d_start() {
    $DAEMON || echo -n " Nginx is already running"
}

d_stop() {
    $DAEMON -s quit || echo -n " Nginx is not running"
}

d_reload() {
    $DAEMON -s reload || echo -n " Can not reload Nginx"
}

# $1表示第一个参数
case "$1" in
start)
    echo -n "Starting $DESC: $NAME"
    d_start
    echo "Started!"
;;
stop)
    echo -n "Stoping $DESC: $NAME"
    d_stop
  echo "Terminated!"
;;
reload)        
  echo -n "Reloading $DESC configuration..."        
  d_reload        
  echo "Reloaded!"
;;
restart)        
  echo -n "Restarting $DESC: $NAME"        
  d_stop        
  # 这里暂停2秒钟以确保Nginx已经完全停止了        
  sleep 2        
  d_start        
  echo "Restarted!"
;;
*)        
echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
;;
esac
exit 0

    然后将这个文件设置为可执行文件

chmod +x nginx

    在这一步之后,已经可以使用类似

service nginx start

的命令来操作Nginx,最后一步是让这个脚本可以在系统启动时自动启动,不同的操作系统添加服务的方式有所不同,在Centos下通过输入

chkconfig --add nginx

将nginx添加进服务,但是我在第一次操作的时候报了一个错

service nginx does not support chkconfig

    后来查了以下发现是在/etc/init.d/nginx文件中少写了两行注释

# chkconfig:3 10 90
# description:...

    其中在这个chkconfig 3 10 90 中,3的意思表示的是运行级别,Centos的默认启动级别是3,所以这里写3,关于系统运行级别的内容,可以去查一下资料。10代表启动优先级,90代表停止优先级,数字越大优先级越低。

    将这两行注释写在#! /bin/bash后面,然后再重新执行

chkconfig --add nginx

至此这篇博客的内容就介绍完了,后面将会记录一下Nginx在HTTP方面的使用和配置。

相关内容

    暂无相关文章