【001】Nginx学习笔记-Nginx简介与安装

1 简介

1.1 历史

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的.Igor Sysoev在建立的项目时,使用基于BSD许可.自Nginx 发布以来,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名.

在俄罗斯许多大网站都已经使用它, 且一直表现不凡.俄罗斯大约有20%左右的虚拟主机是由nignx服务或代理的.Google在线安全博客中统计Nginx服务或代理了大约所有Internet虚拟主机的4%.而Netcraft的统计显示,Nginx服务的主机在过去的一年里以四倍的速度增长并且在这几年里,它的排名还在不断上升

1.2 为什么用Nginx

Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 .它支持内核EPoll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数.

  1. Nginx具有很高的稳定性,其它HTTP服务器当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应只能重启服务器.例如当前Apache一旦上到200个以上进程,web响应速度就明显非常缓慢了.而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低.Nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对Nginx来说基本上是毫无用处的.就稳定性而言,nginx比lighttpd更胜一筹

  2. Nginx支持热部署,它的启动特别容易,
    并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动.你还能够在不间断服务的情况下,对软件版本进行进行升级.Nginx采用master-slave模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O的阻塞延迟.

  3. Nginx代码质量非常高,代码很规范,手法成熟, 模块扩展也很容易.

  4. Nginx采用了一些os提供的最新特性如对sendfile (Linux2.2+),acceptfilter(FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,从而大大提高了性能.

当然,nginx还很年轻,多多少少存在一些问题,比如:Nginx是俄罗斯人创建,目前文档方面还不是很完善.因为文档大多是俄语,所以文档方面这也是个障碍.尽管Nignx的模块比较多,但它们还不够完善.对脚本的支持力度不够.

2 安装

2.1 获取Nginx

Nginx的官方网站: http://nginx.org/en/download.html
Nginx官网提供了三个类型的版本

  • Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
  • Stable version:最新稳定版,生产环境上建议使用的版本
  • Legacy versions:老版本的稳定版

在这里我们选择nginx 1.18.0版本,因为后面讲学习平滑升级。
在这里插入图片描述

2.2 编译安装

准备一台的虚拟机
在这里插入图片描述

  1. 停止原有web服务器
    netstat 查看端口是否被占用
  2. 添加普通用户账号来运行nginx
   [root@nginx ~]# useradd -M -s /sbin/nologin nginx
  1. 解压并安装Nginx:
[root@nginx ~]# tar xf nginx-1.18.0.tar.gz
[root@nginx ~]# cd nginx-1.18.0
[root@nginx ~]# yum -y install gcc gcc-c++ pcre-devel vim openssl openssl-devel zlib zlib-devel

[root@nginx ~]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module  --with-http_ssl_module  


--prefix=/usr/local/nginx                 #指定安装路径
--with-http_stub_status_module     #启用service status页,默认不启用
--with-http_ssl_module                    #启用ssl模块,以支持https请求
--sbin-path=/usr/sbin/                     #指定二进制命令的路径

出现以下图片表表示成功
在这里插入图片描述

继续

[root@nginx ~]# make && make install

出现以下图片表示安装成功
在这里插入图片描述

  1. 启动:
[root@nginx nginx-1.18.0]# /usr/local/nginx/sbin/nginx
nginx命令常用选项:
    -v      查看版本号
    -V      查看版本号及编译选项
    -s      给主进程发送信号.可接 stop | quit | reopen | reload    
    -t      测试配置是否正确
    -c      指定配置文件,默认为 conf/nginx.conf

Tips:
为了避免每次启动都要输入绝对路径,我们创建如下脚本

[root@nginx nginx-1.18.0]# vim /etc/profile.d/nginx.sh

脚本输入如下
在这里插入图片描述
执行脚本

[root@nginx nginx-1.18.0]# . /etc/profile.d/nginx.sh
  1. 查看启动状态:
[root@nginx nginx-1.18.0]# netstat -tlnp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3891/nginx: master
  1. 测试主页是否可以访问

在这里插入图片描述

3 Nginx启动脚本练习

写一个nginx启动脚本,以实现可用service管理nginx服务,并可使用chkconfig来管理服务的开机启动。

  • 如果脚本执行时有参数错误,给出帮助信息(start、stop、restart、reload、status、reopen);
  • 如果启动或停止失败,给出具体原因(启动失败的原因可能有:端口被占用,配置文件错误,程序已在运行);
  • 如果配置文件有语法错误,不允许关闭服务。

(待完成)


yum安装的nginx(epel源)
主目录:/etc/nginx
主配置文件:/etc/nginx/nginx.conf
文档目录:/usr/share/nginx/html

Reference

  1. 课堂笔记
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值