nginx - nginx的安装部署-signal信号-配置文件

1、简介

官网:http://nginx.org/

org organization 组织性的,非盈利的
com commercial 商业的

niginx是一个做网站服务器的软件,是静态的网站
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)

a) 安装依赖

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 root  root 333 1223 17:13 conf #存放nginx的配置文件
drwxr-xr-x 2 root  root  40 1223 12:02 html #存放网站网页的目录
drwxr-xr-x 2 root  root  58 1223 21:27 logs #存放日志
drwxr-xr-x 2 root  root  19 1223 12:02 sbin #存放nginx的启动程序的
[root@hahah logs]# pwd
/usr/local/sclilin99/logs
[root@hahah logs]# ll
总用量 12
-rw-r--r-- 1 root root 1492 1223 16:31 access.log #正常的访问日志
-rw-r--r-- 1 root root  822 1223 16:20 error.log #访问出错的日志
-rw-r--r-- 1 root root    6 1223 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)
判断是否启动

1.看端口
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信号(nohup  bash 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 disable  firewalld  设置firewalld 服务开机不启动,下一次开机不启动

6、编写一键部署Nginx脚本

#!/bin/bash
#安装依赖
yum install epel-release -y
yum -y install zlib zlib-devel  geoip-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 disable  firewalld

# 自定义开机启动程序
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如何安装人的要求去运行

#user  nobody;       #默认使用nobody用户去启动nginx
worker_processes  2; #工作进程的数量,建议和cpu核心一致
# 查看cpu核心  cat /etc/cpuinfo 或top,按1
# CPU和内存的配比原则:一个核心配4G的内存
#error_log  logs/error.log;
#error_log  logs/error.log  notice; #日志的级别 5级以上的
#error_log  logs/error.log  info; # 日志的级别 6级以上的

日志级别 系统定义了8个消息级别, 级别号从0到7分别为:

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),什么都记录

#pid  logs/nginx.pid;  # master进程号

events { 
    #事件,用户访问nginx服务器,产生event。一个worker可以产生1024个连接。
    worker_connections  1024;#一个进程的并发数,即同时允许多少人同时访问nginx
}
# 放http协议相关的
http { 
    include       mime.types;  # 包含这种类型的文件
    default_type  application/octet-stream;
    # log日志格式 main
    log_format  main  '$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_log  logs/access.log  main; #访问日志,按照main格式去记录

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65; # ESTABLISHED,65秒后连接断开 。建立连接是消耗资源的,cpu内存总量有限,所以要断开,让更多的人访问。

    #gzip  on; #启用压缩功能 --》加快传输的速度的

    server {  #--》提供web服务的配置 --》虚拟主机--》网站
        listen       80;#监听80端口
        server_name  localhost;  # 网站域名,可以配置多个。

        #charset koi8-r;

        access_log  logs/host.access.log  main; #访问日志的路径和格式
        location / {  #提供某个路由的配置 --》/ 访问网站的根目录
            root   html; #html是存放网页的根目录 --》/usr/local/sclilin99/html
            index  index.html index.htm; #指定首页
        }

        error_page  404   /404.html; #错误页面,访问不到网页的时候,会给用户返回这个页面

        # redirect server error pages to the static page /50x.html
        
        error_page   500 502 503 504  /50x.html;  #
        location = /50x.html {   #
            root   html;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这个手刹不太灵儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值