官网: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
curl 是linux里的字符界面的浏览器
wget是linux里的迅雷,也支持http协议,可以去网站下载软件
curl -O https://nginx.org/download/nginx-1.21.4.tar.gz
# -O 下载到本地,远程叫什么名字本地就是这个名字
到nginx或者centos的官网去下载的软件包安装
快捷、方便、高效
nginx..tar.gz —>制作成–》nginx..rpm结尾
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地址进行限制的
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
[root@hahah sclilin99]# pwd
/usr/local/sclilin99
[root@hahah sclilin99]# ll |grep -v 'temp'
总用量 0
drwxr-xr-x 2 root root 333 12月 23 17:13 conf #存放nginx的配置文件
drwxr-xr-x 2 root root 40 12月 23 12:02 html #存放网站网页的目录
drwxr-xr-x 2 root root 58 12月 23 21:27 logs #存放日志
drwxr-xr-x 2 root root 19 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 root 822 12月 23 16:20 error.log #访问出错的日志
-rw-r--r-- 1 root root 6 12月 23 15:07 nginx.pid #里面存放master进程的进程号
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.conf 是nginx的主配置文件
nginx.conf的作用:其实就是给nginx进程传递参数的,告诉nginx如何安装人的要求去运行
删除安装指定的目录
–prefix指定的路径
kill -9 强制杀死进程,不能被屏蔽的一种信号类型,
kill -3 (quit) master进程结束,子进程worker 也结束
kill -15 (term) 自我终结
通常是在终端的控制进程结束时, 通知同一session内的各个作业停止运行。
登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台进程组和后台进程组,一般都 属于这个 Session。
当用户退出Linux登录时,前台进程组和后台有对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进程组和后台有终端输出的进程就会中止。
nohup可以用来屏蔽hup信号(nohup bash while.sh &)
程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。
其实可以理解为中断程序的正常运行,同时也会给子进程也终止
用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。
告诉linux 内核去强制杀死进程--》理解为内核派出锦衣卫去杀死某个人
trap 屏幕各种信号,唯独9这种信号不能被屏蔽
程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。
关闭会话是会终止正在执行的脚本,怎么办?
[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
[root@slave-mysql ~]# service firewalld stop 立即关闭防火墙
[root@slave-mysql ~]# service firewalld status 查看防火墙服务的状态
[root@slave-mysql ~]# systemctl disable firewalld 设置firewalld 服务开机不启动,下一次开机不启动
#!/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
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;
}