玩转Linux系统之轻松搭建Nginx服务

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转Linux系统之轻松搭建Nginx服务相关的知识,希望对你有一定的参考价值。

LNMP系统工作原理

提示:本节讲解nginx服务,整个平台将在后期教程详细讲解
在这里插入图片描述

由此可见,Nginx服务起着至关重要的作用。

主要有四项功能:

1.web服务:搭建web站点
2.反向代理:负载调度器实现负载均衡
3.动静分离:它擅长处理静态网页,动态的可以转给Apache处理
4.虚拟主机:多个域名对应一台主机,提高服务器使用率,降低成本


企业案例

提示:从要求分析需求,需要搭建Nginx、DNS以及防火墙配置相关策略。

  1. 搭建两个nginx虚拟主机,www.benet.com与www.accp.com 目录为/var/www/benet和/var/www/accp
  2. 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的优势

  1. 轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源
  2. 抗并发,nginx以epoll and kqueue作为开发模型,处理请求是异步非阻塞的,多个连接对应一个进程,负载能力比apache高很多,
    而apache则是同步多进程模型,只能一个连接对应一个进程,当压力过大时,它是会被阻塞型的。
    在高并发下nginx能保持低资源低消耗高性能 ,而apache在php处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。
  3. 设计高度模块化,编写模块相对简单
  4. .配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会很崩溃
  5. 一般用于处理静态文件,静态处理性能比apache高三倍以上
  6. 作为负载均衡服务器,支持7层负载均衡
  7. 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器
  8. nginx启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,支持热部署,比如:实现不间断服务的情况下进行软件版本的升级与版本的回退
  9. 社区活跃,各种高性能模块出品迅速

Apache相对于Nginx的优势:

  1. apache的rewrite比nginx强大,在rewrite频繁的情况下,用apache
  2. apache发展到现在,模块超多,基本想到的都可以找到
  3. apache更为成熟,少bug ,nginx的bug相对较多
  4. apache超稳定,一个进程死掉时,会影响到多个用户的使用,稳定性差
  5. apache对PHP支持比较简单,nginx需要配合其他后端用
  6. apache在处理动态请求有优势,nginx在这方面是鸡肋,一般动态请求要apache去做,nginx适合静态和反向。
  7. apache仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区

总结:两者核心区别

  • Apache是同步多进程模型,一个连接对应一个进程,而Nginx是异步的,多个连接(万级别)可以对应一个进程。
  • 适用场景:
    一般来说,需要性能的web服务,用Nginx;
    如果不需要性能只求稳定,更考虑Apache;
    Nginx处理放静态内容比Apache要好,特别是在可承受压力、带宽及资源消耗上都要优于Apache。
    所以更为通用的方案是,前端Nginx抗并发,后端Apache集群,配合起来会更好。

以上是关于玩转Linux系统之轻松搭建Nginx服务的主要内容,如果未能解决你的问题,请参考以下文章

玩转Linux系统之搭建Nginx+Tomcat群集实现负载均衡

玩转Linux系统之轻松搭建Mysql主从复制集群

玩转Linux系统之轻松搭建Mysql读写分离集群

玩转Linux系统之轻松搭建Redis集群

玩转Linux之Haproxy搭建群集

玩转Linux系统之轻松安装企业版mysql数据库及遗忘密码处理