zoukankan      html  css  js  c++  java
  • 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/

       

       

       

  • 相关阅读:
    一起talk C栗子吧(第九十回:C语言实例--使用管道进行进程间通信三)
    集群技术(三)MySQL集群深度解析
    ZOJ 3609 Modular Inverse(扩展欧几里德)
    8,16小感
    Dagger2----一个最简单的Dagger2依赖的实现
    android:模拟水波效果的自己定义View
    SQL Server 运行计划操作符具体解释(1)——断言(Assert)
    参数类型 (实体类层)eneity或pojo 常用参数类型
    参数类型 (@Controller层)
    参数类型 (@Service层) impl
  • 原文地址:https://www.cnblogs.com/nyxd/p/5381098.html
Copyright © 2011-2022 走看看