1、简介 官网:http://nginx.org/
org organization 组织性的,非盈利的niginx是一个做网站服务器的软件,是静态的网站
com commercial 商业的
website 站点、网站
HTTP 超文本传输协议,就是一个传输网页的协议,在浏览器和web服务器(nginx,tomcat等)软件之间通信的。协议理解为语言,用来交流
SA system administater 系统管理员
[root@hahah ~]# cat /etc/centos-release 查看centos版本
CentOS Linux release 8.3.2011
[root@hahah ~]# uname -r查看linux的内核版本
4.18.0-240.el8.x86_64
2、Nginx下载 curl 是linux里的字符界面的浏览器
wget是linux里的迅雷,也支持http协议,可以去网站下载软件
curl -O https://nginx.org/download/nginx-1.21.4.tar.gz
# -O 下载到本地,远程叫什么名字本地就是这个名字
3、 Nginx安装 3.1 yum安装
到nginx或者centos的官网去下载的软件包安装
快捷、方便、高效
nginx..tar.gz —>制作成–》nginx..rpm结尾
3.2 编译安装
Nginx是使用c语言编写的,将源码编译成二进制程序,然后安装。
需要自己解决软件之间的依赖关系,还要执行很多的配置,难度大。
可以定制开启需要的功能,可以定制功能和指定安装路径
编译安装的参数 with 开启,说明这个东西默认是关闭的
without 禁用,说明这个东西默认是开启的
–prefix=PATH set installation prefix 指定安装路径
–without-http disable HTTP server 禁用http
–with-mail enable POP3/IMAP4/SMTP proxy module 开启
–with-http_ssl_module enable ngx_http_ssl_module 开启
–with-http_stub_status_module 状态统计功能
–with-stream 4层负载均衡功能
–with-http_realip_module 让后端的web服务器知道前面的代理的ip地址,获得真正的客户端的ip地址
–with-http_geo_module 根据客户端的ip地址进行限制的
经典三部曲
- 配置(configure)
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim wget -y
b) ./congfigure 生成一个makefile
./configure --prefix=/usr/local/sclilin99--user=lilin --group=lilin--with-http_ssl_module--with-threads--with-http_v2_module--with-http_stub_status_module--with-stream--with-http_gunzip_module
- 编译(make)
将源代码编译成二进制程序
执行 make -j 2 - 安装(make install)
将二进制程序安装到指定的路径下
执行 make install
[root@hahah sclilin99]# pwd
/usr/local/sclilin99
[root@hahah sclilin99]# ll |grep -v 'temp'
总用量 0
drwxr-xr-x 2 rootroot 333 12月 23 17:13 conf #存放nginx的配置文件
drwxr-xr-x 2 rootroot40 12月 23 12:02 html #存放网站网页的目录
drwxr-xr-x 2 rootroot58 12月 23 21:27 logs #存放日志
drwxr-xr-x 2 rootroot19 12月 23 12:02 sbin #存放nginx的启动程序的
[root@hahah logs]# pwd
/usr/local/sclilin99/logs
[root@hahah logs]# ll
总用量 12
-rw-r--r-- 1 root root 1492 12月 23 16:31 access.log #正常的访问日志
-rw-r--r-- 1 root root822 12月 23 16:20 error.log #访问出错的日志
-rw-r--r-- 1 root root6 12月 23 15:07 nginx.pid #里面存放master进程的进程号
启动nginx
- /etc/rc.local是软链接,连接到/etc/rc.d/rc.local
- /etc/rc.d/rc.local里面注释到chmod +x /etc/rc.d/rc.local
- /etc/rc.d/rc.local 用于添加开机启动命令
(/usr/local/sclilin99/sbin/nginx)
netstat -anplut 或 lsof -i:80 或 ss -anplut
默认web服务占用80端口
2.看进程
ps aux|grep nginx
3.直接访问
浏览器访问192.168.56.128,看是否出现index.html
4.看日志
tail -f access.log/error.log
关闭nginx
- nginx -s stop 快速关闭
- nginx -s quit 正常关闭(优雅的,推荐)
- nginx -s reopen 重新生成一个新的日志文件
- nginx -t 测试nginx.conf配置文件是否有错误
- nginx -s reload 重新加载配置文件
修改配置文件/usr/local/sclilin99/conf/nginx.conf
worker_processes 4;
再执行reload命令,相当于刷新服务,启用新的配置。
master进程不产生新的进程,worker进程会产生新的进程。
好处是不会中断业务
nginx.conf 是nginx的主配置文件卸载编译安装 删除安装指定的目录
nginx.conf的作用:其实就是给nginx进程传递参数的,告诉nginx如何安装人的要求去运行
–prefix指定的路径
4、signal信号 常用命令
kill -9 强制杀死进程,不能被屏蔽的一种信号类型,
kill -3 (quit) master进程结束,子进程worker 也结束
kill -15 (term) 自我终结
信号详解
1) SIGHUP
通常是在终端的控制进程结束时, 通知同一session内的各个作业停止运行。
登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台进程组和后台进程组,一般都 属于这个 Session。
当用户退出Linux登录时,前台进程组和后台有对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进程组和后台有终端输出的进程就会中止。
nohup可以用来屏蔽hup信号(nohupbash while.sh&)
2) SIGINT
程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。
3) SIGQUIT
其实可以理解为中断程序的正常运行,同时也会给子进程也终止
9) SIGKILL
用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。
告诉linux 内核去强制杀死进程--》理解为内核派出锦衣卫去杀死某个人
trap 屏幕各种信号,唯独9这种信号不能被屏蔽
15) SIGTERM
程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。
关闭会话是会终止正在执行的脚本,怎么办?
- nohup 可以用来屏蔽hup信号。在执行脚本命令的前面加上nohup。
- trap屏蔽各种型号,唯独不能屏蔽-9的信号
trap “echo I am busy” 15 3 2 1 9
[root@slave-mysql linlin99]# cat while.sh
trap "echo i am busy"15 3 2 1 9
i=1
while :
do
echo $i
((i++))
sleep 1
done
5、防火墙
[root@slave-mysql ~]# service firewalld stop立即关闭防火墙
[root@slave-mysql ~]# service firewalld status查看防火墙服务的状态
[root@slave-mysql ~]# systemctl disablefirewalld设置firewalld 服务开机不启动,下一次开机不启动
6、编写一键部署Nginx脚本
#!/bin/bash
#安装依赖
yum install epel-release -y
yum -y install zlib zlib-develgeoip-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim wget -y#新建用户
id hejin || useradd hejin -s /sbin/nologin#下载nginx软件
mkdir /lianxi/12-23Nginx -p
cd /lianxi/12-23Nginx
# 下载
curl -O https://nginx.org/download/nginx-1.21.4.tar.gz
# 解压
tar -xf nginx-1.21.4.tar.gz
cd nginx-1.21.4# 编译前先配置文件
./configure --prefix=/usr/local/source--user=hejin --group=hejin--with-http_ssl_module--with-threads--with-http_v2_module--with-http_stub_status_module--with-stream--with-http_geoip_module --with-http_gunzip_module# 判断是否配置成功
[ $? -ne 0 ] && exit# 开始编译
make -j 2# 开始安装
make install#killall nginx进程
killall -9 nginx# 立即关闭防火墙
service firewalld stop
# 设置防火墙下一次开机不启动
systemctl disablefirewalld# 自定义开机启动程序
echo "/usr/local/source/sbin/nginx" >>/etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local# 执行rc.local 启动nginx
. /etc/rc.d/rc.local
7、nginx.conf 配置详解 nginx.conf 是nginx的主配置文件
nginx.conf的作用:其实就是给nginx进程传递参数的,告诉nginx如何安装人的要求去运行
#usernobody;
#默认使用nobody用户去启动nginx
worker_processes2;
#工作进程的数量,建议和cpu核心一致
# 查看cpu核心cat /etc/cpuinfo 或top,按1
# CPU和内存的配比原则:一个核心配4G的内存
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#日志的级别 5级以上的
#error_loglogs/error.loginfo;
# 日志的级别 6级以上的
日志级别 系统定义了8个消息级别, 级别号从0到7分别为:
【Linux笔记|Linux Nginx】0: 致命级(KERN_EMERG), 系统不能使用了
1: 警戒级(KERN_ALERT),
2: 临界级(KERN_CRIT),
3: 错误级(KERN_ERR), 只要是error以上及级别的都会导致程序启动或运行失败
4: 告警级(KERN_WARN),不影响程序的正常运行,只是提醒而已
5: 注意级(KERN_NOTICE),正常的记录
6: 通知级(KERN_INFO),普通的信息
7: 调试级(KERN_DEBUG),什么都记录
#pidlogs/nginx.pid;
# master进程号events {
#事件,用户访问nginx服务器,产生event。一个worker可以产生1024个连接。
worker_connections1024;
#一个进程的并发数,即同时允许多少人同时访问nginx
}
# 放http协议相关的
http {
includemime.types;
# 包含这种类型的文件
default_typeapplication/octet-stream;
# log日志格式 main
log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 引用nginx内部的变量值,把它写入到log日志中
# 很多数据都来自于http请求响应报文里面的字段(nginx会读懂计算机网络的数据)
access_loglogs/access.logmain;
#访问日志,按照main格式去记录sendfileon;
#tcp_nopushon;
#keepalive_timeout0;
keepalive_timeout65;
# ESTABLISHED,65秒后连接断开 。建立连接是消耗资源的,cpu内存总量有限,所以要断开,让更多的人访问。#gzipon;
#启用压缩功能 --》加快传输的速度的server {#--》提供web服务的配置 --》虚拟主机--》网站
listen80;
#监听80端口
server_namelocalhost;
# 网站域名,可以配置多个。#charset koi8-r;
access_loglogs/host.access.logmain;
#访问日志的路径和格式
location / {#提供某个路由的配置 --》/ 访问网站的根目录
roothtml;
#html是存放网页的根目录 --》/usr/local/sclilin99/html
indexindex.html index.htm;
#指定首页
}error_page404/404.html;
#错误页面,访问不到网页的时候,会给用户返回这个页面# redirect server error pages to the static page /50x.htmlerror_page500 502 503 504/50x.html;
#
location = /50x.html {#
roothtml;
}
推荐阅读
- 如何处理 Host key verification failed
- python|嵌入式软件工程师升职_我刚升职的软件工程师在第一年学到的5课
- 算法|软件工程师 算法工程师_采访100多位软件工程师后的建议
- python|硬件工程师需要数学功底吗_您不需要数学就可以成为软件工程师
- java|Java五年,已财富自由,美人在手!
- 渗透测试|Metasploit(MSF)渗透测试框架使用教程及基本命令
- 历史上的今天|【历史上的今天】1 月 4 日(Linux 2.4 内核发布;创世区块诞生;苹果开放 Macintosh 系统授权)
- NAS|群晖NAS-Docker中部署青龙面板-JD薅羊毛
- 青龙教程资源分享|青龙面板跑九章头条-测试稳定