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命名,这样的话与默认配置文件冲突了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容