nginx安装与简单使用
ngnix安装环境
a)epoll,linux 内核版本为2.6或者以上;
b)gcc编译器,g++编译器
c)pcre库:函数库;支持解析正则表达式;
d)zlib库:压缩解压缩功能
e)openssl库:ssl功能相关库,用于网站加密通讯
nginx源码下载以及目录结构简单认识
nginx官网 http://www.nginx.org
nginx的几种版本
(1)mainline版本:版本号中间数字一般为奇数。更新快,一个月内就会发布一个新版本,最新功能,bug修复等,稳定性差一点;
(2)stable版本:稳定版,版本号中间数字一般为偶数。经过了长时间的测试,比较稳定,商业化环境中用这种版本;这种版本发布周期比较长,几个月;
(3)Legacy版本:遗产,遗留版本,以往的老版本;
安装,现在有这种二进制版本:通过命令行直接安装;
灵活:要通过编译 nginx源码手段才能把第三方模块弄进来;
nginx 目录
auto/:编译相关的脚本,可执行文件configure会用到这里面的脚本
cc/:检查编译器的脚本
lib/:检查依赖库的脚本
os/:检查操作系统类型的脚本
type/:检查平台类型的脚本
CHANGES:这个文件是一些修复的bug,新增功能等说明性文件
CHANGES.ru:俄语版本
conf/:默认的配置文件,用于控制ngnix行为
configure:可执行文件,其实是一个脚本,配置环境,产生的ngnix的一些中间文件会用上
contrib/:脚本和工具,典型的是vim高亮工具
vim/:vim高亮查看nginx.conf -cp -r contrib/vim/* ~/.vim/
html/:文件里有两个超文本文件,错误重定向界面和欢迎界面
man/:ngnix帮助文件
README/:
src/:ngnix源码目录
core:核心代码
event:事件模块相关代码
http:web服务模块相关代码
mail:邮件模块相关代码
os:操作系统相关代码
stream:流处理相关代码
objs/:执行configure生成的中间代码目录
ngx_moudules.c:内容决定了一会编译ngnix的时候有哪些模块会编译到ngnix里边来
Makefile:执行了configure脚本产生的编译规则文件,,,执行了make命令时用到
ngnix的编译和安装
- 编译第一步:用
./configure
来进行编译之前的配置工作
–prefix:指定最终安装到的目录:默认值 /usr/local/nginx
–sbin-path:用来指定可执行文件目录:默认的是 sbin/ nginx
–conf-path:用来指定配置文件目录:默认的是 conf/nginx.conf
–with:表示启用模块,也就是说这些模块在编译时不会自动构建,
–without:表示禁用模块,也就是说这些模块在编译时会自动构建,若你想Nginx轻量级运行,可以去除一些不必要的模块。
./configure执行完后多了objs目录。
- 编译第二步:用make来编译,
fengyun@ubuntu:~/ngnixsourcecode/nginx-1.20.2$ make
生成可执行文件ngnix
- 编译第三步:用make来镜像安装
fengyun@ubuntu:~/ngnixsourcecode/nginx-1.20.2$ sudo make install
–perfix: 指定最终安装到的位置,默认如图所示: /usr/local/ngnix
–sbin-path:指定可执行文件目录,默认如图所示 sbin/
–conf-path:用来指定配置文件目录,默认如图所示 conf/ 最重要的是ngnix.conf
ngnix启动和简单使用
启动需要管理员权限fengyun@ubuntu:/usr/local/nginx/sbin$ sudo ./nginx
可以看到成功启动,如图所示
主机试图访问ubantu提供的服务器,如图所示,成功访问
ngnix进程模型
简易概括
1个master进程,1到多个worker进程 这种工作机制来对外服务的;这种工作机制保证了 nginx能够稳定、灵活的运行;
a)master进程责任:监控进程,不处理具体业务,专门用来管理和监控worker进程;master,角色是监工,比如清闲;
b)worker进程:用来干主要的活的,(和用户交互);
c)master进程和worker进程之间要通讯,可以用 信号 ,也可以用 共享内存 ;
d)稳定性,灵活性,体现之一:worker进程 一旦挂掉,那么master进程会立即fork()一个新的worker进程投入工作中去;
调整worker进程数量
如上图所示工作站:2个物理cpu ,蓝色的一个cpu,红色的一个cpu
每个物理cpu里边内核数量,是4个;core1 –core4
每个core里边有两个逻辑处理器(超线程技术/siblings)
16个processors(最细小的单位,也就是平时大家说的处理器个数)
worker进程几个合适呢?公认的做法: 多核计算机,就让每个worker运行在一个单独的内核上,最大限度减少CPU进程切换成本,提高系统运行效率;
物理机:4核(4个processors);
这里我打开ngnix.conf配置文件后将worker_processes修改为4
重新启动ngnix服务器
可以看到有四个worker进程
模型特点-稳定灵活
不需要中断服务就可进行重新配置升级等
- 1.修改配置文件例如ngnix.conf无需中断用户服务就可以立即使配置文件生效
sudo ./ngnix -s reload
可以看到进程id发生了变化。
2.nginx热升级,热回滚,不停止服务能够进行升级,比如1.14.2–>1.20.2,发现不稳定可以回滚到以前的版本
3.nginx的关闭
方法一:sudo kill 进程号(过于粗暴)
方法二:-s signal : send signal to a master process: stop, quit, reopen, reload
stop 直接退出
quit 等服务完再退出