• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

【Linux运维架构】Nginx基础之部署及搭建nginx服务

Linux架构 lixian 2年前 (2020-02-20) 506次浏览 2个评论 扫描二维码
文章目录[隐藏]

一、Nginx概述

Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。
开源: 直接获取源代码
高性能: 支持海量并发
可靠: 服务稳定

二、Nginx特点

1.高性能、高并发

在并发特别高的时候,nginx的响应速度比其他的web服务快很多。

2.轻量且高扩展性

1.轻量:功能模块少,仅保留http模块和核心模块
2.高扩展性:模块需要哪个可以装哪个,还可以集成第三方的模块

3.高可靠性

其他的web服务运行一段时间需要重启,nginx不需要
nginx的宕机时间 9999、99999级别

4.支持热部署

可以在不停服务的情况下进行升级
nginx的master管理进程和worker的工作进程是分离的

5.互联网公司都在用nginx

nginx技术成熟,具备企业里所有需要的功能,负载,缓存,安全,web服务
统一技术栈,降低维护成本,降低技术难度

6.Nginx使用Epool网络模型

select:当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下;
Epoll:当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制。

三、Nginx部署安装

第一种epol源安装

yum install -y nginx

第二种官方源安装

1)配置官方源

[root@web01 ~]# cd /etc/yum.repos.d/
[root@web01 yum.repos.d]# ll
total 8
-rw-r--r--. 1 root root 2523 Feb 11 15:29 CentOS-Base.repo
-rw-r--r--. 1 root root  664 Feb 11 15:29 epel.repo
[root@web01 yum.repos.d]# vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

2)yun安装nginx

[root@web01 ~]# yum install -y nginx

3)配置修改启动用户

[root@web01 ~]# vim /etc/nginx/nginx.conf 
user  www;

4)创建用户

[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666

5)启动服务并检查

[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl status nginx

6)nginx重新加载配置文件

[root@web01 ~]# systemctl reload nginx

7)检查nginx配置

[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

第三种源码包安装

1)下载安装包

[root@web01 ~]# wget http://nginx.org/download/nginx-1.16.1.tar.gz

2)解压安装包

[root@web01 ~]# tar xf nginx-1.16.1.tar.gz

3)创建用户

[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666

4)安装依赖包

[root@web01 ~]# yum install -y gcc gcc-c++ autoconf pcre pcre-devel make automake httpd-tools openssl-devel

5)编译安装

[root@web01 ~]# cd nginx-1.16.1
[root@web01 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx-1.16.1 --user=www --group=www --with-http_addition_module --with-http_auth_request_module 
[root@web01 nginx-1.16.1]# make && make install
[root@web01 nginx-1.16.1]# ln -s /usr/local/nginx-1.16.1 /usr/local/nginx

6)启动

第一种:使用/usr/local/nginx/sbin/nginx启动
第二种:使用systemctl管理启动

[root@web01 local]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

nginx版本升级

#升级版本
[root@web01 ~]# wget http://nginx.org/download/nginx-1.17.8.tar.gz
[root@web01 ~]# tar xf nginx-1.17.8.tar.gz 
[root@web01 ~]# cd nginx-1.17.8/
[root@web01 nginx-1.17.8]# ./configure --prefix=/usr/local/nginx-1.17.8 --user=www --group=www --with-http_addition_module --with-http_auth_request_module
[root@web01 nginx-1.17.8]# make && make install
[root@web01 nginx-1.17.8]# rm -rf /usr/local/nginx && ln -s /usr/local/nginx-1.17.8 /usr/local/nginx

------------------------------------------------------------

#添加模块
[root@web01 ~]# cd nginx-1.16.1/
[root@web01 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx-new-1.16.1 --user=www --group=www --with-http_addition_module --with-http_auth_request_module --with-http_mp4_module
[root@web01 nginx-1.16.1]# make && make install
[root@web01 nginx-1.16.1]# rm -rf /usr/local/nginx && ln -s /usr/local/nginx-new-1.16.1 /usr/local/nginx

【Linux运维架构】Nginx基础之部署及搭建nginx服务

四、Nginx配置文件详解

Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束,{} 内每行以 ; 结尾。

Nginx主配置文件整体分为三块进行学习,分别是CoreModule(核心模块),EventModule(事件驱动模块),HttpCoreModule(http内核模块)

Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束。

Nginx主配置文件整体分为三块进行学习,分别是CoreModule(核心模块),EventModule(事件驱动模块),HttpCoreModule(http内核模块)

CoreModule核心模块

user www;                                     #Nginx进程所使用的用户
worker_processes 1;                     #Nginx运行的work进程数量(建议与CPU数量一致或auto)
error_log /log/nginx/error.log     #Nginx错误日志存放路径
pid /var/run/nginx.pid                 #Nginx服务运行后产生的pid进程号
 
EventModule(事件驱动模块)

events {            
    worker_connections 25535;   #每个worker进程支持的最大连接数
    use epoll;                               #事件驱动模型, epoll默认
}

HttpCoreModule(http内核模块)

#http层开始
http {
#包含资源类型文件
    include       /etc/nginx/mime.types;
#默认以下载方式传输给浏览器(前提是该资源在mime.types中无法找到)
    default_type  application/octet-stream;
#日志格式
    log_format  main  '$remote_addr(IP地址可能是CDN缓存服务器的地址)  - $remote_user(用户名字) [$time_local](时间) "$request请求的方式" ' '$status(状态码) $body_bytes_sent(字节数) "$http_referer(从哪里跳转)" '
                      '"$http_user_agent(客户端浏览器的相关信息)" "$http_x_forwarded_for(IP地址)"';
#访问日志
    access_log  /var/log/nginx/access.log  main;
#高效文件传输
    sendfile        on;
#搭配sendfile使用
    #tcp_nopush     on;
#长连接超时时间
    keepalive_timeout  65;
#是否开启压缩
    #gzip  on;

    #使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)
    'server' {
        listen       80;            #监听端口, 默认80
        server_name  driverzeng.com;    #提供的域名
        access_log  access.log;     #该网站的访问日志
        #控制网站访问路径
        'location' / {
            root   /usr/share/nginx/html;   #存放网站源代码的位置
            index  index.html index.htm;    #默认返回网站的文件
        }
    }
    ...
    #第二个虚拟主机配置
    'server' {
    ...
    }

    include /etc/nginx/conf.d/*.conf;  #包含/etc/nginx/conf.d/目录下所有以.conf结尾的文件
#http结束层
}    

五、nginx搭建web项目小游戏

1.编写配置文件

[root@web01 ~]# vim /etc/nginx/conf.d/game.conf 
server {
    listen 80;
    server_name localhost;

    location / {
        root /code;
        index index.html;
    }
}

2.创建站点目录

[root@web01 ~]# mkdir /code

3.上传代码包

[root@web01 ~]# cd /code/
[root@web01 code]# rz mario.zip
[root@web01 code]# unzip mario.zip
[root@web01 code]# cp -r html/* ./

4.重载nginx

[root@web01 code]# systemctl restart nginx

本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:【Linux运维架构】Nginx基础之部署及搭建nginx服务
喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到
(2)个小伙伴在吐槽
  1. 讲的不错
    匿名2020-03-02 15:37 回复
  2. Great content! Super high-quality! Keep it up! :)
    AffiliateLabz2020-02-21 22:39 回复