Nginx概念及基础安装--详细讲解

时间:2022-09-10 10:27:57

1.主要内容:

Nginx的基础
           特性
           配置部署
           优化(了解)

2.Nginx 是什么?

Nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件---web服务软件。
    它是由俄罗斯人Igor Sysoev 开发的,
    优点:

        性能:占用的系统资源更少,3万并发开启10个线程小号内存200MB
支持更多的并发连接,几万并发小事情
达到更高的访问效率
支持异步网络I/O事件模型epoll(linux 2.6+)
        功能:优秀的web服务软件,支持反向代理负载均衡及缓存服务
代理软件有:lvs, Haproxy等软件,为什么选择呢?
nginx部署更简单,方便啊
缓存:他又类似缓存服务软件(很少用)
利用自身的proxy_cache 模块实现类Squid等专业缓存功能
        安装配置:更方便,简单,灵活
支持的操作系统:
UNIX,BSD,Mac OS X, Solaris,linux, Microsoft等操作系统
常用的组合环境:LNMP 或LEMP(E 取自nginx的engine x)

2015年web服务软件排名:
    1.apache  32.40%
    2.Nginx   14.29%
    3.microsoft  [laɪt] [spiːd] 31.65% iis
    4.google servers 2.07%
    5.tomcat 0.4%

3.Nginx的基本特性

    a)可针对静态资源高速高并发访问及缓存
b)可使用反向代理加速,并且可进行数据缓存。
c)据有简单负载均衡、节点监控检测和容错功能
d)支持FastCGI服务的缓存加速
CGI全称是“公共网关接口”(Common Gateway Interface),
HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,
其程序一般运行在网络服务器上。
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。
如php,perl,tcl等。
相对于CGI来说FastCGI有两点是和其不同的。
第一点是FastCGI的进程是永久性的,也就是说用于处理请求的进程随着请求的结束并不会退出,而是继续运行等待有新的请求来处理。
这样就解决了CGI由于频繁的创建和关闭进程所带来的性能问题;
第二点是FastCGI和web服务器之间的通信方式是和CGI不同的。
并且通信时全双工的模式
f)支持FastCGI, Uwsgi, SCGI, Memcached servers的加速和缓存
g)具有模块化的架构

4.nginx所具有其他的www服务特性:

    a)支持基于名字,端口及ip的多虚拟主机站点:基于端口, ip, 域名

    c)可进行简单,方便,灵活的配置和管理
d)支持修改nginx配置,并且在代码上线时,可平滑重启
平滑重启:
nginx 运行新的工作进程并从容关闭旧的工作进程,通知工作进程关闭监听套接字,
但是继续为当前连接的客户提供服务
所有的客户端的服务完成后,旧的工作进程被关闭
e)可自定义访问日志格式,临时缓冲写日志操作,快速日志轮询及通过rsyslog处理日志
f)可利用信号控制Nginx进程 kill -l
g)支持rewrite模块,支持URI重写及正则表达式匹配
h)支持FLV流和MP4流技术产品应用
I)支持HTTP响应速率限制
J)支持同一ip地址的并发连接或请求数限制
K)支持邮件服务代理

编译安装Nginx环境:

1.准备工作:

    1.查看当前系统版本:cat /etc/redhat-release  --centos6.7
yum -y install lrzsz
yum -y install open gcc
uname -a

2.安装Nginx所需的pcre库及一些包    --用途(为了使Nginx具有URI重写功能rewrite)

        通常采用yum的方式:
配置yum源(采用网络源) yum -y install openssl openssl-devel gcc gcc-c++
yum -y install pcre pcre-devel 查看版本:rpm -qa pcre

3.选择版本:

        稳定版,开发版,历史稳定版
首先稳定版(最新版晚6-10个月为佳)

4.为神马安装openssl-devel,因为HTTPS服务需要这个模块
       什么是HTTPS呢?

               a)http叫超文本传输协议,使用TCP端口80,默认情况下数据是明文传送的,
数据可以通过抓包工具捕获到,因此在internet上,
有些比较重要的站点的http服务器需要使用PKI(公钥基础结构)技术来对数据加密!
这也就是https了; b)https叫安全的超文本传输协议,使用TCP端口443,
他的数据会用PKI中的公钥进行加密,
这样抓包工具捕获到的数据包也没有办法看包中的内容,安全性大大提高,
要解密数据的话就要用到PKI中的私钥。
所以一些安全性比较高的网站如:网上银行,电子商务网站都需要用https访问!

5.mkdir /app

      cd /app  --用于存在各种软件

      wget -q http://nginx.org/download/nginx-1.6.3.tar.gz  --下载软件包

      ls --查看当前目录下的文件,查看nginx是否下载完成

      useradd nginx -s /sbin/nologin -M  创建nginx用户并禁止此用户登录系统  -M 不建立使用者目录 -s使用者登入后使用的shell名称,实际这里是不允许登陆系统
tail - /etc/passwd 查看用户是否存在 tar xf nginx-1.6..tar.gz -解压 cd nginx-1.6. --进入解压目录 ./configure 配置
--user=nginx 进程用户权限
--group=nginx 进程用户组权限
--prefix=/usr/local/nginx1.4.5 设置安装路径
--with-http_stub_status_module 激活状态信息
--with-http_ssl_module 激活ssl功能 make 编译 make install 安装

安装命令

6.此时不算安装完,需要启动前检查配置文件语法

        /usr/local/nginx1.6.3/sbin/nginx -t
在启动服务钱检测语法非常重要,可以防止因配置错误导致网站重启或者重新加载配置
等对用户的影响

7.启动Nginx服务

        /usr/local/nginx1.6.3/sbin/nginx

8.查看服务是否启动成功,方法:查看端口

        lsof -i :80
netstat -lnt | grep 80

9.访问127.0.0.1  | curl 127.0.0.1

10.总结:安装容易出现的错误:

        1.nginx: [emerg] getpwnam("nginx") failed
2.访问不了页面:
1.关闭selinux setenforce 0 --临时关闭selinux的方法getenforce(查看)
2.关闭防火墙 /etc/init.d/iptables stop --暂时关闭防火墙
3.查看日志:cat /usr/local/nginx1.6.3/logs/error.log
4.ping ip 和查看端口

11. server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;   ----------/home/www  ---更改网站根目录
            index  index.html index.htm;
        }

12.重启服务

方法1:杀进程重启

        a)
杀进程
lsof -i :80
kill -9 pid
重启
/usr/local/nginx1.6.3/sbin/nginx
b)
ps -ef | grep nginx |awk '{print $2}'| xargs kill -9
/usr/local/nginx1.6.3/sbin/nginx

方法2:配置文件重启

        a)    检查语法
/usr /local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -c制定配置文件的路径,不加-c nginx会自动加载默认路径的配置文件。 b)
/usr/local/nginx/sbin/nginx -t 检查语法
/usr/local/nginx/sbin/nginx -h --查看帮助
#-s signal : send signal to a master process: stop, quit, reopen, reload
/usr/local/nginx/sbin/nginx -s reload (reload如果语法错误不会成功,有时候不输出错误)
c)
把nginx的启动文件放在/etc/init.d里面
server nginx restart
chkconfig --add nginx ---意义是开机自启动

Nginx概念及基础安装--详细讲解的更多相关文章

  1. Nginx基础详细讲解

    Nginx基础详细讲解 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App,操作更方便哦 1. ...

  2. nginx架构与基础概念

    1       Nginx架构 Nginx 高性能,与其架构有关. Nginx架构: nginx运行时,在unix系统中以daemon形式在后台运行,后台进程包含一个master进程和多个worker ...

  3. 第二十三节:Java语言基础-详细讲解函数与数组

    函数 函数在Java中称为方法,在其他语言中可能称为函数,函数,方法就是定义在类中具有特定功能的程序.函数,在Java中可称为方法. 函数的格式: 修饰符 返回值类型 函数名(参数类型 参数1, 参数 ...

  4. linux/centos下安装nginx(rpm安装和源码安装)详细步骤

    Centos下安装nginx rpm包                                                                                 ...

  5. 第二十二节:Java语言基础-详细讲解位运算符与流程控制语句

    位运算符(二进制位运算) 运算符 运算 例子 << 左移 3 << 2 = 12 --> 3 * 2 * 2 =12 >> 右移 3 >> 1 = ...

  6. 【nginx运维基础&lpar;1&rpar;】Nginx的编译安装与使用

    nginx的官方手册: http://nginx.org/en/docs/ 编译安装 下载地址: http://nginx.org/en/download.html # 为了支持rewrite功能,我 ...

  7. 详细讲解Hadoop源码阅读工程(以hadoop-2&period;6&period;0-src&period;tar&period;gz和hadoop-2&period;6&period;0-cdh5&period;4&period;5-src&period;tar&period;gz为代表)

    首先,说的是,本人到现在为止,已经玩过.                   对于,这样的软件,博友,可以去看我博客的相关博文.在此,不一一赘述! Eclipse *版本 Eclipse *下载 Jd ...

  8. node&plus;vue进阶【课程学习系统项目实战详细讲解】打通前后端全栈开发&lpar;1&rpar;:创建项目,完成登录功能

    第一章 建议学习时间8小时·分两次学习      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章]) 视频教程地 ...

  9. 数据结构与算法&lpar;九&rpar;:AVL树详细讲解

    数据结构与算法(一):基础简介 数据结构与算法(二):基于数组的实现ArrayList源码彻底分析 数据结构与算法(三):基于链表的实现LinkedList源码彻底分析 数据结构与算法(四):基于哈希 ...

随机推荐

  1. C&num;遍历DataSet中数据的几种方法总结

    //多表多行多列的情况foreach (DataTable dt in YourDataset.Tables) //遍历所有的datatable{foreach (DataRow dr in dt.R ...

  2. Python之Scrapy爬虫框架安装及简单使用

    题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ...

  3. CSS滚动条

    × 目录 [1]条件 [2]默认 [3]尺寸[4]兼容[5]自定义 前面的话 滚动条在网页中经常见到,却并没有受到足够的重视.只有当因为滚动条的问题需要处理兼容性时,才进行调试操作.本文将就滚动条的常 ...

  4. C&num; 日期之间的间隔

    今天工作中,突然遇到要计算两个时间之间的天数,最后把自己的方法记录下来,其实挺简单的: DateTime dt1=Convert.ToDateTime("2014/8/1 23:53:31& ...

  5. ajax 提交表单&lpar;文件&rpar;

    废话不多说,自己看代码 引入的jquery <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js&quo ...

  6. trait技术详解&comma;这次包你学得会

    trait的使用技巧trait是php5.4以后新增加的一个功能,可以将多个类中,共用的一些属性和方法提取出来做来公共trait类,就像是装配汽车的配件,如果你的类中要用到这些配件,就直接用use导入 ...

  7. Vista 及后续版本的新线程池

    在上一篇的博文中,说了下老版本的线程池,在Vista之后,微软重新设计了一套线程池机制,并引入一组新的线程池API,新版线程池相对于老版本的来说,它的可控性更高,它允许程序员自己定义线程池,并规定线程 ...

  8. 关于人人网的form查找和打印

    from lianxi import sessionimport json# urlurl = 'http://www.renren.com/ajaxLogin/login?1=1&uniqu ...

  9. onload事件与ready事件的区别,原生js与jquery的区别

    onload事件与ready事件分别是原生js与jquery的入口函数 原生js入口函数写法: window.onload=function(){ } jquery入口函数写法: $(document ...

  10. 防Bug笔记

    最近不知道咋回事,写代码特别多bug出来.故专门做一笔记,记下容易犯的bug,以期日后减少低级错误. Python 1. JavaScript 1.多用``, 少用''/""