玩转Linux系统之轻松搭建Nginx服务
Posted Friends of the wind
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转Linux系统之轻松搭建Nginx服务相关的知识,希望对你有一定的参考价值。
LNMP系统工作原理
提示:本节讲解nginx服务,整个平台将在后期教程详细讲解
由此可见,Nginx服务起着至关重要的作用。
主要有四项功能:
1.web服务:搭建web站点
2.反向代理:负载调度器实现负载均衡
3.动静分离:它擅长处理静态网页,动态的可以转给Apache处理
4.虚拟主机:多个域名对应一台主机,提高服务器使用率,降低成本
企业案例
提示:从要求分析需求,需要搭建Nginx、DNS以及防火墙配置相关策略。
- 搭建两个nginx虚拟主机,www.benet.com与www.accp.com 目录为/var/www/benet和/var/www/accp
- www.benet.com站点上启用状态统计
步骤:
搭建Nginx
1)设置静态IP(有多种方法,我习惯用sed)
sed -i ‘2c BOOTPROTO=static’ /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i ‘17c ONBOOT=yes’ /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i ‘17a IPADDR=192.168.1.1’ /etc/sysconfig/network-scripts/ifcfg-ens33
ifdown ens33;ifup ens33
或者,进入网卡配置文件手工配置:
2)添加防火墙规则允许http、DNS服务流量通过
systemctl start firewalld.service
firewall-cmd --add-service=http
firewall-cmd --add-service=dns
3)安装依赖包及DNS服务
挂载系统盘
mount /dev/cdrom /mnt/
rpm -ivh /mnt/pcre-devel-8.32-15.el7_2.1.x86_64.rpm
rpm -ivh /mnt/zlib-devel-1.2.7-17.el7.x86_64.rpm
rpm -ivh /mnt/Packages/bind-9.9.4-37.el7.x86_64.rpm
4)卸载光盘,挂载Nginx源码包
三步骤:解、配、编、安
[root@localhost ~]# umount /dev/cdrom
umount: /dev/cdrom:未挂载
[root@localhost ~]# eject
[root@localhost ~]# mount /dev/cdrom /mnt/
解压
tar -zxf /mnt/nginx-1.12.0.tar.gz -C /usr/src/
cd /usr/src/nginx-1.12.0/
配置安装目录 (with-http_stub_status_module代表:添加状态统计模块,可选项)
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
编译并安装
make&&make install
创建nginx符号链接(将nginx启动程序执行文件放到命令的默认搜索路径,方便执行)
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
分别创建benet、accp网页根目录
mkdir -p /var/www/benet
mkdir -p /var/www/accp
设置网页内容
echo “Look at the handsome guy on the opposite side” > /var/www/benet/index.html
echo “Look at the beauty on the other side” > /var/www/accp/index.html
5)nginx主配置文件
包含全局配置、I/O事件配置、HTTP配置三大部分
①.全局配置:
worker_processes代表工作进程数,一般以cpu个数来定义
nginx启动后会启动两个进程,一个是master进程,一个是worker进程,master进程管理worker进程,work进程管理客户端连接
查看cpu核心数
cat /proc/cpuinfo| grep “processor”| wc -l
②.I/O事件配置:
use epoll
worker_connections 代表每个工作进程可以提供的连接数量
③.HTTP配置
Server配置部分代表虚拟主机配置
A.在一个server必须包含,root、server_name,index,listen
B.location:对用户请求资源进行定位,通过location可以实现动静分离
= 精确(严格)匹配, 优先度最高,后续不再匹配正则
^~:优先前缀匹配,找到即停
普通前缀:(最长匹配原则),找到后继续查找正则
正则匹配(~ ~*): 表示区分大小写的正则匹配,按顺序查找,找到即停
~区分大小写的正则匹配
~* 表示不区分大小写的正则匹配
!~和!~*:!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则
/ 通用匹配,任何请求都会匹配到(本质上等同于语法 空) 最后被匹配,正常必须有
编辑Nginx配置文件: vim /usr/local/nginx/conf/nginx.conf
Accp站点设置
重载nginx服务
killall -s HUP nginx
搭建DNS服务
1)编辑dns主配置文件
vim /etc/named.conf
配置项释义:
2)创建区域文件
进入实例文件目录:cd /var/named/
创建benet区域文件
[root@localhost named]# cp -p named.localhost benet.com.zone
创建accp区域文件
[root@localhost named]# cp -p named.localhost accp.com.zone
编辑benet区域文件
vim benet.com.zone
编辑accp区域文件
vim accp.com.zone
启动dns服务
systemctl start named
验证:
Win10测试机
配置ip地址(同网段),dns服务器地址(填写192.168.1.1)
浏览器访问benet网站
访问benet访问统计 URL:www.benet.com/status
浏览器访问accp网站
nginx与apache区别
Nginx相对于apache的优势
- 轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源
- 抗并发,nginx以epoll and kqueue作为开发模型,处理请求是异步非阻塞的,多个连接对应一个进程,负载能力比apache高很多,
而apache则是同步多进程模型,只能一个连接对应一个进程,当压力过大时,它是会被阻塞型的。
在高并发下nginx能保持低资源低消耗高性能 ,而apache在php处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。 - 设计高度模块化,编写模块相对简单
- .配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会很崩溃
- 一般用于处理静态文件,静态处理性能比apache高三倍以上
- 作为负载均衡服务器,支持7层负载均衡
- 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器
- nginx启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,支持热部署,比如:实现不间断服务的情况下进行软件版本的升级与版本的回退
- 社区活跃,各种高性能模块出品迅速
Apache相对于Nginx的优势:
- apache的rewrite比nginx强大,在rewrite频繁的情况下,用apache
- apache发展到现在,模块超多,基本想到的都可以找到
- apache更为成熟,少bug ,nginx的bug相对较多
- apache超稳定,一个进程死掉时,会影响到多个用户的使用,稳定性差
- apache对PHP支持比较简单,nginx需要配合其他后端用
- apache在处理动态请求有优势,nginx在这方面是鸡肋,一般动态请求要apache去做,nginx适合静态和反向。
- apache仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区
总结:两者核心区别
- Apache是同步多进程模型,一个连接对应一个进程,而Nginx是异步的,多个连接(万级别)可以对应一个进程。
- 适用场景:
一般来说,需要性能的web服务,用Nginx;
如果不需要性能只求稳定,更考虑Apache;
Nginx处理放静态内容比Apache要好,特别是在可承受压力、带宽及资源消耗上都要优于Apache。
所以更为通用的方案是,前端Nginx抗并发,后端Apache集群,配合起来会更好。
以上是关于玩转Linux系统之轻松搭建Nginx服务的主要内容,如果未能解决你的问题,请参考以下文章