Nginx 功能介绍 编译安装 开机启动 小节1

146 阅读5分钟

@[TOC](Nginx 功能介绍 编译安装 开机启动 小节1)

nginx介绍

  • nginx:engine X,是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的,开发工作最早从2002年开始,第一次公开发布时间是2004年10月4日,版本号是0.1.0
  • nginx有商业版和社区版,2019年3月11日F5 Networks 6.7亿美元的价格收购
  • nginx 是免费,开源,高性能的HTTP和反向代理服务器,邮件代理服务器,通用TCP/UDP代理服务器
  • 解决C10K问题(10K Connections)
  • 官网:nginx.org

  • nginx的其它的二次发行版:
  • Tengine:由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。从2011年12月开始,Tengine成为一个开源项目,官网 tengine.taobao.org/
  • OpenResty:基于 Nginx 与 Lua 语言的高性能 Web 平台,章亦春官网:openresty.org/cn/

  • 特性:
  • 模块化设计,较好的扩展性
  • 高可靠性
  • 支持热部署:不停机更新配置文件,升级版本,更换日志文件
  • 低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存
  • event-driven,aio,mmap,sendfile

  • 基本功能:
  • 静态资源的web服务器
  • http协议反向代理服务器
  • pop3/imap4协议反向代理服务器
  • FastCGI(LNMP),uWSGI(python)等协议 -模块化(非DSO),如zip,SSL模块

nginx的程序架构

  • web服务相关的功能:
  • 虚拟主机(server)
  • 支持 keep-alive 和管道连接(共享TCP连接发起并发的HTTP请求)
  • 访问日志(支持基于日志缓冲提高其性能)
  • url rewirte
  • 路径别名
  • 基于IP及用户的访问控制
  • 支持速率限制及并发数限制
  • 重新配置和在线升级而无须中断客户的工作进程
  • Memcached 的 GET 接口

  • nginx的程序架构:
   master/worker结构
      > 一个master进程:
          负载加载和分析配置文件、管理worker进程、平滑升级
      > 一个或多个worker进程
          处理并响应用户请求
      > 缓存相关的进程
          cache loader:载入缓存对象
          cache manager:管理缓存对象

nginx模块

  • nginx高度模块化,但其模块早期不支持DSO机制;1.9.11版本支持动态装载和卸载
  • 模块分类:
核心模块:core module
标准模块:
   HTTP 模块:ngx_http_*
       HTTP Core modules 默认功能
       HTTP Optional modules 需编译时指定
   Mail 模块 ngx_mail_*
   Stream 模块 ngx_stream_*    
第三方模块

yum安装

前提

名称环境IP/GW安装方式
nginxCentos737.7/GW37.2YUM

步骤

[root@nginx ~]# yum install nginx -y 
[root@nginx ~]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
/usr/bin/nginx-upgrade
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx/modules
/usr/sbin/nginx
/usr/share/doc/nginx-1.20.1
/usr/share/doc/nginx-1.20.1/CHANGES
/usr/share/doc/nginx-1.20.1/README
/usr/share/doc/nginx-1.20.1/README.dynamic
/usr/share/doc/nginx-1.20.1/UPGRADE-NOTES-1.6-to-1.10
/usr/share/licenses/nginx-1.20.1
/usr/share/licenses/nginx-1.20.1/LICENSE
/usr/share/man/man3/nginx.3pm.gz
/usr/share/man/man8/nginx-upgrade.8.gz
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx/html/404.html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/en-US
/usr/share/nginx/html/icons
/usr/share/nginx/html/icons/poweredby.png
/usr/share/nginx/html/img
/usr/share/nginx/html/index.html
/usr/share/nginx/html/nginx-logo.png
/usr/share/nginx/html/poweredby.png
/usr/share/nginx/modules
/usr/share/vim/vimfiles/ftdetect/nginx.vim
/usr/share/vim/vimfiles/ftplugin/nginx.vim
/usr/share/vim/vimfiles/indent/nginx.vim
/usr/share/vim/vimfiles/syntax/nginx.vim
/var/lib/nginx
/var/lib/nginx/tmp
/var/log/nginx
/var/log/nginx/access.log
/var/log/nginx/error.log


#启动nginx服务
[root@nginx ~]# systemctl start nginx
#查看nginx服务端口号、默认端口号为'80'
[root@nginx ~]# ss -ntlp|grep nginx
LISTEN     0      128          *:80                       *:*                   users:(("nginx",pid=10238,fd=6),("nginx",pid=10237,fd=6),("nginx",pid=10236,fd=6),("nginx",pid=10235,fd=6),("nginx",pid=10234,fd=6))

#修改网页信息
[root@nginx ~]# echo welcome to 7 > /usr/share/nginx/html/index.html

浏览器测试

图片.png

nginx目录结构和命令

  • ls /apps/nginx/

html是测试页,sbin是主程序

  • ls /apps/nginx/sbin/

nginx 只有一个程序文件

  • ls /apps/nginx/html/

50x.html index.html 测试网页

nginx:默认为启动nginx

-h 查看帮助选项
-V 查看版本和配置选项
-t 测试nginx语法错误
-c filename 指定配置文件(default: /etc/nginx/nginx.conf) 
-s signal 发送信号给master进程,signal:stop, quit, reopen, reload 
      示例: nginx -s stop    停止nginx 
            nginx -s reload  加载配置文件
-g directives 在命令行中指明全局指令
-T 相当于把配置文件打开

官方yum源:nginx.org/en/linux_pa…

此处我们只要稳定版yum源即可、写到'/etc/yum.repos.d/*.repo'

#稳定版
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

#测试版
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Nginx编译安装

前提

名称环境IP/GW安装方式
nginx10Centos737.10/GW37.2编译

步骤

#安装依赖包
[root@nginx10 ~]# yum install pcre-devel openssl-devel zlib-devel gcc -y
#创建用户
[root@nginx10 ~]# useradd -r -s /sbin/nologin nginx

[root@nginx10 ~]# cd /usr/local/src/
#下载
[root@nginx10 src]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
[root@nginx10 src]# tar xvf nginx-1.16.0.tar.gz
[root@nginx10 src]# cd nginx-1.16.0/
#编译
[root@nginx10 nginx-1.16.0]# ./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
#安装
[root@nginx10 nginx-1.16.0]# make && make install

[root@nginx10 nginx-1.16.0]# tree /apps/nginx/
/apps/nginx/
├── conf     <--存放配置文件
│   ├── fastcgi.conf
│   ├── fastcgi.conf.default
│   ├── fastcgi_params
│   ├── fastcgi_params.default
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types
│   ├── mime.types.default
│   ├── nginx.conf
│   ├── nginx.conf.default
│   ├── scgi_params
│   ├── scgi_params.default
│   ├── uwsgi_params
│   ├── uwsgi_params.default
│   └── win-utf
├── html          <--网页目录
│   ├── 50x.html
│   └── index.html
├── logs
└── sbin          
    └── nginx     <--主程序

4 directories, 18 files
[root@nginx10 nginx-1.16.0]# ln -s /apps/nginx/sbin/nginx /usr/sbin/
[root@nginx10 nginx-1.16.0]# ll /usr/sbin/nginx 
lrwxrwxrwx 1 root root 22 Aug   5 18:16 /usr/sbin/nginx -> /apps/nginx/sbin/nginx
[root@nginx10 nginx-1.16.0]# ss -ntl |grep 80
[root@nginx10 nginx-1.16.0]# nginx
[root@nginx10 nginx-1.16.0]# ss -ntl |grep 80
LISTEN     0      128          *:80                       *:*   

浏览器测试(源码编译网站)

图片.png

开机启动

#开机启动配置文件
vim /etc/rc.d/rc.local
/usr/sbin/nginx    <--添加此行

#需要添加权限
chmod +x /etc/rc.d/rc.local