nginx搭建
一、Nginx web服务应用
问题一、为什么nginx总体薪你呢个比apache高?
nginx使用最新的epoll(linux2.6内核)和kqueue(freebsd)异步网络I/O模型,
而apache则使用的是传统的select模型。目前linux下能够承受高并发访问的Squid、Memcache就是用的异步模型
问题二、怎么正确的选择web服务器
1 静态业务:如果是高并发场景:尽量采用Nginx或者lightpd,首选nginx 2 动态业务:理论上nginx和apache都可以,但是建议选择nginx,要避免相同业务服务的多样化,额外增加维护成本 3 如果既有静态业务,又有动态业务:那就采用nginx
1、 http协议包含很多功能:上网的www是http功能之一www服务默认端口80.OSI 第7层 应用层协议Https 默认端口443.加密的http服务
2、 实现www服务常用web软件产品nginx apache(静态web软件)
3、 经典流行的web组合
lamp(linux apache mysql php) ==》经典
lnmp(lemp)(linux nginx mysql php)===》国内流行
nginx(engine x)
近三年的一个新的组合
LNMP(Linux Nginx MySQL PHP)
LEMP(Linux (Engine x) MySQL PHP)
4、 ngix(engine x)介绍
nginx,www服务软件,俄罗斯人开发 开源 性能很高
Nginx (engine x)web产品 俄罗斯人开发,c语言开发 780k
淘宝更改的nginx,tengine(http://tengine.taobao.org/)
5、nginx特点
静态小文件(1M),支持高并发,同时占有的资源很少。3W并发,10个进程,内存150M
nginx特点:
a、 配置简单,灵活轻量
b、 高并发(静态小文件),静态几万的并发
c、 资源消耗小,2W并发 开10个线程服务,内存消耗几百M
d、 功能种类比较多可以做HTTP反向代理及加速,即负载均衡功能,内置对RS节点服务器健康检查功能,相当于专业的haproxy软件或者lvs的功能呢个
e、 支持异步网络IO事件模型epoll(linux2.6)
f、 nginx可以配合动态php服务(FASTCGI接口)
g、 利用nginx可以对IP限速,可以限制连接数
h、 具备squid等专业缓存软件等的缓存功能呢个
6、他所具备其他www服务特性如下
支持基于名字、端口以及ip的多虚拟主机站点
支持rewrite模块,支持URL重写及正则表达式匹配
支持基于客户端IP地址和HTTP基本认知的访问控制(密码访问)
支持http相应速率限制
支持同一IP地址的并发连接或请求限制
7、 nginx应用场合
a、 提供静态服务(图片,视频服务)另一个lighttpd。高并发几万并发。html,js,css,flv,jpg,gif,等类似于lighttpd b、 提供动态服务,nginx+fastcgi的方式运行php,jsp动态并发:500-1500 c、 提供反向代理(proxy),或者称为负载均衡。日pv2000w以下,并发1w以下,都可以用NGINX做代理。haproxy,F5,A10 d、 提供缓存服务。类似SQUID,VARNISH,ATS nginx主要应用场景 a、 web服务器(首选) 静态文件,nginx首选 动态文件,配合fastcgi支持php b、 反向代理(负载均衡),1000-2000wpv,并发6000 c、 缓存(不是很多)
8、 nginx支持虚拟主机
一个server标签段就是一个虚拟主机 a、 基于域名的虚拟主机。通过域名来区分虚拟主机===》应用 :外部网站(生产必用) b、 基于端口的虚拟主机。通过端口来区分虚拟主机===》应用:公司内部网站,网站的后台 c、 基于IP的虚拟主机。几乎不用。不支持ifconfig别名,配置文件可以
二、nginx安装
A、 安装PCRE
Pcre全程(perl Compatible Regular Expressions),中文perl兼容正则表达式,官方站点http://www.pcre.org/
HTTP rewrite module requirs the PCRE library
安装之前的准备工作
1、 首先检查内核以及版本 Cat /etc/redhat-release Uname -r Uname -m 2、检查是否安装了pcre rpm -qa pcre-devel 如果没有安装需要安装 Yum install pcre pcre-devel -y
B、安装openssl SSL modules require the OpenSSL library
Yum install openssl-devel -y
准备安装Nginx
1、 进入专用目录 Cd /home/pyrene/tools 2、下载 (ls 文件 -lk: 查看文件大小) wget -q http://nginx.org/download/nginx-1.6.3.tar.gz 3、解压之后进入目录 tar -xf nginx-1.6.3.tar.gz Cd nginx-1.6.3 4、安装 安装如果想安装需要的东西./configure —help里面有 这里推荐几个 首先制定安装为位置 —prefix=/applicatiom/nginx-1.6.3 之后制定用户名和组 —user=ninx —group=www 制定加密模块 —with-http_ssl_module 制定状态 -with-http_stub_status_module 安装: 在 nginx-1.6.3目录中输入 ./configure --prefix=/application/nginx-1.6.3 --user=nginx --group=www --with-http_ssl_module --with-http_stub_status_module 5、查看是否成功echo $? 6、创建虚拟用户和组,并且检查 Useradd www -s /sbin/nologin -M Id nginx 7、安装 make &&make insatll 8、创建连接 由于安装的时候希望能看到版本号,但是使用的时候又不想用版本号太长,所以创建连接 [root@A nginx-1.6.3]# cd .. [root@A tools]# ll /application/nginx-1.6.3/ -ld drwxr-xr-x. 6 root root 4096 12月 14 09:40 /application/nginx-1.6.3/ [root@A tools]# ln -s /application/nginx-1.6.3/ /application/nginx
上面就是nginx安装过程
三、安装过后
1、 启动
[root@A tools]# /application/nginx/sbin/nginx
2、查看服务是否开启
[root@A tools]# ps -ef|grep nginx|grep -v grep
root 5677 1 0 09:52 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx
nginx 5678 5677 0 09:52 ? 00:00:00 nginx: worker process
3、查看端口是否开启
[root@A tools]# ss -lntup|grep nginx
tcp LISTEN 0 128 *:80 *:* users:(("nginx",5677,6),("nginx",5678,6))
4、查看是否开启
[root@A tools]# curl 127.0.0.1
注意:必须关闭防火墙
出现下面截图就是成功的
注意点:
1、查看编译的参数。公司里面的软件不是自己安装的,所以要查看一下到底有什么参数的时候用V,如下:
[root@A tools]# /application/nginx/sbin/nginx -V
2、如果安装好了nginx如果访问不了浏览器需要关闭selinux和防火墙
小试牛刀:部署一个web站点
1、进入安装目录里面
[root@A tools]# cd /application/nginx
[root@A nginx]# ls -ld
drwxr-xr-x. 11 root root 4096 12月 14 09:52 .
[root@A nginx]# ls -l
总用量 36
drwx------. 2 nginx root 4096 12月 14 09:52 client_body_temp
drwxr-xr-x. 2 root root 4096 12月 14 09:40 conf
drwx------. 2 nginx root 4096 12月 14 09:52 fastcgi_temp
drwxr-xr-x. 2 root root 4096 12月 14 09:40 html
drwxr-xr-x. 2 root root 4096 12月 14 09:52 logs
drwx------. 2 nginx root 4096 12月 14 09:52 proxy_temp
drwxr-xr-x. 2 root root 4096 12月 14 09:40 sbin
drwx------. 2 nginx root 4096 12月 14 09:52 scgi_temp
drwx------. 2 nginx root 4096 12月 14 09:52 uwsgi_temp
上面的后缀是temp的都是临时文件
过滤掉临时目录,找到下面四个文件
[root@A nginx]# ls -l|grep -v temp
总用量 36
drwxr-xr-x. 2 root root 4096 12月 14 09:40 conf →配置文件目录
drwxr-xr-x. 2 root root 4096 12月 14 09:40 html →默认网站目录
drwxr-xr-x. 2 root root 4096 12月 14 09:52 logs →错误,访问日志
drwxr-xr-x. 2 root root 4096 12月 14 09:40 sbin →启动命令
[root@A nginx]# cd html
[root@A html]# ls
50x.html index.html
这里的index文件就是首页文件
2、然后修改index文件内容,之后刷新浏览器
只要不修改配置文件,只修改程序,就不需要重启服务
就成功了
关于配置文件
进入conf目录,配置文件只有下面才是
[root@A conf]# ls -l nginx.conf
-rw-r--r—. 1 root root 2656 12月 14 09:40 nginx.conf
1、查看配置文件
[root@A conf]# ls -l nginx.conf
-rw-r--r--. 1 root root 2656 12月 14 09:40 nginx.conf
[root@A conf]# grep root nginx.conf
root html;
root html;
# root html;
# deny access to .htaccess files, if Apache's document root
# root html;
# root html;
2、查看端口
[root@A conf]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 5677 root 6u IPv4 23336 0t0 TCP *:http (LISTEN)
nginx 5678 nginx 6u IPv4 23336 0t0 TCP *:http (LISTEN)
小结:nginx简单访问原理
1、 在浏览器输入服务器ip地址,就相当于直接访问到我的linux,80端口
2、 linux监听响应80端口,这个时候浏览器就和linux建立了一个http连接
3、 之后浏览器给linux发送http请求报文,这个时候linux下的nginx就会读取root对应的站点目录下面的修改文件,读取到了就会返回给浏览器