Ngnix 安装与使用

高性能web服务器-ngnix

MySQL读写分离技术

sphinx和mongodb

课程内容简介

一般都是拿nginx作为负载均衡器使用。Apache还是web市场老大。全球的市场份额大概在(60%),但是全球前 top1000 的web网站中,nginx占据首位。

内容

重要性

nginx简介

常见web服务器分类

哪些地方在用nginx

ngnix的安装(Linux下)

※※

lnmp搭建(lamp

※※

ngnix负载均衡器配置(工作)

※※

扩展知识(tengine 淘宝)

nginx简介

nginx是一个高性能的web服务器,同时也是一个邮件代理服务器,同时还是一个负载均衡器

1. web服务器:类似Apache(httpd)提供web服务器(用的其次)

2. 邮件代理服务器:主要用来做邮件的转发(nginx早起的设计也是为了邮件转发,初衷,用的最少)

3. 负载均衡器:用来转发用户的web请求,给web服务器来处理(尤其是在均衡器的时候,有其独特的优势,这也是目前互联网用它最多的地方)

负载均衡器:软件和硬件

软件:nginx(七层,简单配置)和lvs(四层,功能强大)

硬件:f5 (游戏和银行)

负载均衡集群:由负载均衡器组成的集群就是负载均衡集群

集群:就是多台服务器为了完成某一个相同的任务而组成的架构。(多台服务器完成)

如果给服务器集群增加一个备用的监控(高可用集群)

高可用集群衡量的标准:一年中无故障的时间/(一年中无故障的时间+修复的时间)

一般是9的数量来衡定。如果没有修复(100%) 99.9% 99.99% 99.999%

如果是5个9 一年下来故障的时间大概就是 5 分钟。

建议:游戏公司、电商公司

游戏公司:转岗(php开发、Linux管理、MySQL、自动化运维、erlang 热备份)-》大数据

电商公司:纯开发新的系统,主要是功能的开发和维护。

建站公司:如果技术相对来说较弱。

微信:相对来说不建议去了。(微信分销系统)

【------内存----】 软件(操作系统)开机--- 自举 BIOS(cmos硬件设备---生产商写入一段代码 读)---硬盘(分区 MBR 主引导记录--- 分区信息--操作系统C盘)

格式化磁盘(数据全部存在)----- 使用专门的工具--- 0 1 重写

nginx是由俄国人开发,也开发卡巴斯基杀毒软件。还开发了一个叫做sphinx的软件(中文分词搜索)。

由于其性能非常优越,所以在中国的淘宝公司对其做了二次开发,形成了一款更适合在国内使用的web服务器,叫做tengine(web服务器)。目前很多国内大型站点,基本都是使用的tengine。

网站:http://tengine.taobao.org/

http://hustskyking.cnblogs.com/

问题:为什么nginx(tengine)能够有非常好的性能,支撑更大的并发访问?

对于1u服务器(2w---dell服务器 性价比最高)这样的服务器使用nginx支撑静态的并发请求大概在3-5w并发没问题。

主要由于其架构设计的合理。并且由于Apache是早起的web服务器,压根就没有考虑大并发。而nginx是后期之秀,其设计的初衷也是为了大并发,主要解决了c10k的问题。

设计:epoll event 基于事件回调模型

问题:什么是C10k?

答:c:并发,意思就是当网站的并发数量达到10k以上,这个时候网站整体的性能就会急剧下降,需要使用新的的架构来设计(基于事件模型 event),nginx应用而生。

参考:http://blog.csdn.net/jysg9/article/details/7901321

http://rdc.gleasy.com/%E5%A6%82%E4%BD%95%E5%81%9A%E5%88%B0c100k_1.html

http://joyexpr.com/2013/11/22/c100k-4-kernel-tuning/

常见web服务器的分类

  1. httpd:Apache,是一款非常稳定的web服务器,并且它是基于模块而设计(php,rewrite。。。),但是有一个弊端,就是使用的内存开销非常大
  2. nginx:后期,其主要特性还是用于负载均衡器和web服务器。在处理并发的问题上,尤其独特的优势,但是有一个弊端,相对不是很稳定。使用的内存开销非常小,处理1000个非活动的链接,大概需要不要2M的内存。
  3. lighttpd(小型):主要用于做图片服务器。早期的豆瓣是有使用。
  4. tomcat:这个是Java
  5. IIS:Windows的一个web服务器,常和Windows server 和sql server一起使用

     

    Apache为什么这么流行:主要

  6. 早期开发的,很多系统基于它开发,不便于做更换。
  7. 早期开发,模块众多(php 、Rewrite、header。。。。),文档齐全
  8. Apache非常的稳定。

    明白:很多公司在效率和稳定性需要选择的情况下,有限考虑的是稳定性。

     

    问题:nginx可以取代Apache服务器吗?

    问题:nosql数据库能取代关系型数据库(MySQL)吗?

    答:nginx从目前来看,是无法取代Apache这类web服务器。主要是由于Apache非常稳定模块众多,并且已经拥有强大的市场。只能说着两个产品可以相辅相成的工作。谁都离不开谁了。

     

    哪些地方在使用?

  9. 淘宝(tengine)
  10. 搜狐
  11. 网易
  12. 赶集

    cdn的使用

    tengine使用

    淘宝使用

    nginx搭建使用

    在Linux下做源码编译安装

    注意:

  13. nginx的安装需要依赖pcre库,所以需要先安装

    # pcre库安装下,需要注意,安装这个库文件的时候,不需要指定安装路径 ./configure 即可

  14. 检测一下操作系统的80端口是否被占用

    # netstat -tunple | grep 80

    # ps aux | grep httpd

  15. 关闭一下防火墙和selinux

    # iptbales -F (flush 刷新)

    # setenforce 0

    上面两种方式都是暂时关闭

     

    编译安装

  16. 下载代码

    官网:http://nginx.org/en/

  17. 上传nginx源码和pcre库源码

    注意:a. vsftpd是否开启

    # service vsftpd status

    # service vsftpd start | stop

     

    b. 防火墙是否关闭

    # iptables -L 查看

    # iptables -F 关闭(F -- flush)

    # service iptables stop 关闭

    # service iptables stop 关闭防火墙

    c. selinux是否关闭

    selinux 是Linux下的一个安全管理软件,由于其安全级别非常高。(建议关闭使用)

    # getenforce 查看

    # setenforce 0 关闭

    注意:这个关闭时基于会话。(只针对当前用户生效)

    有时候需要全局生效,对所有的用户全部生效

    解决方案:更改配置文件即可

    可以使用

    # file fileName 查看文件类型

    关闭selinux

    # cd /etc/selinux/

    # ls

    # vim config

    查看

    修改

     

    1. 上传文件

       

    1. 将源码文件移动到(/usr/local/src/)

      # cd /home/NAME

      #cp nginx-1.8.0.tar.gz pcre-8.34.tar.gz /usr/local/src/

      源码目录:

    2. 编译安装,pcre库,解压

      查看

    3. 编译安装pcre (不需要指定安装路径

      # ./configure

      # make 编译

      # make install

    4. 安装nginx软件

      解压

      # tar -zxvf nginx-1.8.0.tar.gz

      编译安装

      # ./configure --prefix=/usr/local/nginx 收集操作的信息(检查c++编译器是否存在)

    # make

        # make install

    安装成功,查看

     

        8. 启动服务

    注意:启动的时候需要检查 80 端口是否占用

    浏览器查看

    注意:没有浏览器的情况下,可以使用

    # curl -I http://localhost

    -I 响应头

    目录简介

    注意:一旦这个服务启动,会额外生成很多文件和文件夹

    注意:如果服务器启动后,再其次启动会怎么样?

    解决方案:关闭或者重启

    目录相关:

    备份配置文件

    查看配置文件内容(格式)

    mime.types

    ActiveX脚本还有flash

    长连接

    虚拟主机配置:

    目录

    httpd段:

    安全传输

    虚拟主机的配置(基于IP的虚拟主机)

    注意:互联网上所有的服务都是基于TCP/IP的链接,然后根据端口区分服务

  18. 输入地址
  19. 做DNS解析
  20. 根据IP地址访问主机(建立TCP/IP链接)
  21. 然后访问端口
  22. 开始根据协议传递文件(http)
  23. 服务器端构建响应报文
  24. 传递
  25. 浏览器解析
  26. 浏览器渲染
  27. 见到信息
  28. 增加server段配置

  29. 语法检测

    # /usr/local/nginx/sbin/nginx -t    

  30. 重启nginx

    注意:nginx的好处在于,重启可以直接不关闭服务器情况下,直接读取配置文件信息。

    # /usr/local/nginx/sbin/nginx -s reload 重新加载配置文件,但是不关闭服务

  31. 创建网站根目录

     

  32. 浏览器访问

     

    lnmp搭建

    注意:php也能作为一个单独的服务来运行,这种运行的模式叫做php-fpm模式,不在作为Apache一个模块使用。有单独的进程,端口,相当于一个软件运行。

    php的fpm运行方式:使得php可以单独的作为一个服务运行,而不用作为一个模块被加载后才能使用。作为独立服务的时候,使用的端口是 9000 端口。nginx请求动态文件和 php-fpm服务通信的时候 使用的协议为 fast-cgi 协议

    cgi:common getway interface

  33. Linux
  34. nginx
  35. MySQL(不用)
  36. php搭建

    php-fpm运行方式搭建

    注意:php-fpm需要 php-5.3.12以后的版本默认是支持

    之前其他的版本需要打补丁。

  37. 下载php源码
  38. 上传(/usr/local/src/)

  39. 解压和安装

    编译

    # ./configure --prefix=/usr/local/php --enable-fpm

    # make

    #make install

    修改nginx的配置文件,可以去调用php-fpm方式

  40. 修改nginx配置文件

    php脚本的动态文件目录是自己可以随意的设定的。

  41. 重新读取配置文件

    -s signal 信号 reload 信号

    # /usr/local/nginx/sbin/nginx -s reload

  42. php-fpm目录查看

    注意:直接启动报错,需要知道配置文件信息

    解决方案:

  43. 启动php-fpm模式

     

    查看是否成功启动

  44. 修改nginx的配置文件,并且重新载入

  45. 创建动态脚本的访问目录

  46. 浏览器查看

    注意:有一个php.ini配置的问题

    解决:去源代码包copy即可

    解决现实:

    负载均衡器使用

    可以去处理web请求,将web请求分发给多个web服务器来响应的软件或者硬件

  47. 创建两台虚拟主机

    基于IP的

    81端口

    82端口

    注意:理论上来说,81主机和82主机的网站根目录里面的内容应该一致。默认是基于轮询的方式

    可以修改为基于ip_hash的方法

    tengine的搭建使用

    tengine是由淘宝发起一个基于nginx的web服务器,做了二次开发

    官网:http://tengine.taobao.org/

    参考文档:http://tengine.taobao.org/book/chapter_05.html

    安装

  48. 下载

  49. 上传

  50. 编译安装

  51. 使用

    目录查看

  52. 启动

    注意:检测端口 80

    查看

    网站根目录

    其他命令和nginx完全一样

    扩展

  53. lnmp搭建相对来说比较复杂

    网站:http://lnmp.org/

  54. 中文文档
  55. 看淘宝的tengine:http://tengine.taobao.org/
  56. 中文站点:http://www.nginx.cn/doc/

  57. tengine 目前在国内的市场很大

    网站:http://tengine.taobao.org/

     

     

     

原文地址:https://www.cnblogs.com/nyxd/p/5381098.html