Linux最小化安装之安装nginx

nginx是一个高性能的HTTP和方向代理web服务器,在我们日常开发中进行会使用nginx实现相关的功能:如正向代理、反向代理、负载均衡等等。接下来我们将演示在Linux中安装NGINX。
安装NGINX的方式有很多种,在这里介绍两种常用的方式:安装包安装、yum安装

安装包安装

一、下载安装包

自动下载

使用wget命令下载:如下载1.20.0版本:wget http://nginx.org/download/nginx-1.20.0.tar.gz

手动下载

在nginx官方网站下载linux版本的nginx,如下图所示

图片.png

二、解压安装包

如果我们是手动下载的,我们需要把下载好的安装包传送到Linux服务器上。传输的方式有:xftp方式和scp命令方式。
tar -zxvf 压缩包:解压到当前路径下
tar -zxvf 压缩包 -C 指定路径:解压到指定的路径

三、运行配置文件

进入解压后的目录,运行命令:./configure,这种方式是按照默认方式进行安装,安装的目录为/usr/local/nginx
如果需要指定目录,我们可以在./configure后面指定安装目录
./configure --prefix=安装路径

问题一:提示C编译器没有找到,如下图所示

图片.png

解决方法:通过yum安装C编译器yum -y install gcc-c++

问题二:提示http的相关错误

解决方法:
1、nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。执行yum -y install pcre pcre-devel
2、nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。执行yum -y install zlib zlib-devel
3、nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。执行yum -y install openssl openssl-devel

图片.png

四、编译并安装

make && make install:编译安装

安装成功后截图.png

五、创建软链接【可以省略】

本次是通过默认安装的,安装的路径为/usr/local/nginx,所以为nginx创建软链接:
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin

六、启动nginx

如果执行过第五步,则直接运行:nginx
如果没有执行第五步,则运行:/usr/local/nginx/sbin/nginx

运行成功后,可以通过ps命令来查看nginx进程的状态
ps aux | grep nginx

成功运行后的截图.png

通过网址访问的nginx截图
nginx启动后的截图.png

如果访问失败,可以查看服务器的防火墙。

七、nginx常用命令

1、验证配置文件是否能正常启动:nginx -t

配置文件成功后的截图.png

2、启动nginx:nginx
3、正常停止nginx:nginx -s quit
4、快速停止nginx:/nginx -s stop
5、修改过配置文件后,重新加载nginx:nginx -s reload
6、查看nginx版本信息:nginx -v
查看nginx版本.png

八、设置nginx开机自启动

1、在/etc/init.d下创建文件nginx:vim /etc/init.d/nginx
2、脚本内容为nginx官网提供:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/,内容如下:

!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -n "$user" ]; then
      if [ -z "`grep $user /etc/passwd`" ]; then
         useradd -M -s /bin/nologin $user
      fi
      options=`$nginx -V 2>&1 | grep 'configure arguments:'`
      for opt in $options; do
          if [ `echo $opt | grep '.*-temp-path'` ]; then
              value=`echo $opt | cut -d "=" -f 2`
              if [ ! -d "$value" ]; then
                  # echo "creating" $value
                  mkdir -p $value && chown -R $user $value
              fi
          fi
       done
    fi
}

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $prog -HUP
    retval=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

需要修改
nginx="/usr/local/nginx/sbin/nginx"
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

3、设置/etc/init.d/nginx文件的执行权限:chmod a+x /etc/init.d/nginx
4、将脚本添加到chkconfig中进行管理【系统服务中】:chkconfig --add /etc/init.d/nginx
5、设置开机自启动:chkconfig nginx on

之后就可以通过以下方法进行控制:
centos7以下:

service nginx start # 开启nginx
service nginx stop # 停止nginx
service nginx restart # 重启nginx
service nginx reload # 重新加载nginx

centos7及其以上:

systemctl start nginx.service # 开启nginx
systemctl stop nginx.service # 停止nginx
systemctl restart nginx.service # 重启nginx
systemctl reload nginx.service # 重新加载nginx

问题一:-bash: /etc/init.d/nginx: /bin/bash^M:bad interpreter: No such file or directory

原因:可能是你的编码错误
解决方案:
1)打开nginx服务:vim /etc/init.d/nginx
2)在命令模式下查看编码,输入:set ff?
结果为fileformat=dos
3)修改fileformat,在命令模式下输入:set ff=unix
4)保存并退出:wq

总结:

1、gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc
yum install gcc-c++
2、PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
3、zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
4、openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
5、通过默认路径安装nginx时,解压到/usr/local路径下的nginx文件不能以nginx命名,这样的话与默认配置文件冲突了。

你可能感兴趣的:(Linux最小化安装之安装nginx)