欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Nginx的安装和配置

程序员文章站 2022-07-01 18:30:39
以前装Nginx都是直接百度一下,装完了事,结果用的时候又有很多不明白的地方,所有今天打算把安装过程记录一下。 首先是安装环境的准备,我的系统环境是Centos 7,用的是虚拟机。因为打算自己编译安装,所以先看一下编译安装所需要的工具是否都安装好了。 编译安装Nginx需要GCC,PCRE,zlib ......

以前装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端口

Nginx的安装和配置

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

    输入

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

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

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方面的使用和配置。