目录
铺垫
web常用的名词解释
1.网页--webpage
一份能够显示在浏览器的文档
2.网站--website
一个由许多组合在一起,并常常以各种方式相互连接的网页组成的集合
3.web服务器--web server
在互联网上托管网站的计算机硬件设备
4.搜索引擎--search engine
帮助你寻找其他网页的网站,例如百度、Google等
网站、小程序、app之间的区别
网站的架构:
App的架构:
小程序的架构:
信号
我们发现我们在xshell的一个会话中,运行一个自己编写的web进程,当关闭这个会话时,我们运行的这个进程就会自动退出,为什么会这样?我们可以从信号入手来进行探讨
kill命令是用来杀死进程的,kill -l命令可以用来查看linux中信号的种类
其中比较常用的信号:
15) SIGTERM:不指定信号,默认发送该类型信号,该信号告诉程序自己终止-->让进程自杀,该信号是可以屏蔽的
9) SIGKILL:内核调用进程终止程序,直接杀死进程,不管进程同意还是不同意,不能屏蔽
1) SIGHUP:收到该信号时,进程就会退出,首进程退出时会给子进程发送 SIGHUP信号。
2) SIGINT:是针对中断键(Ctrl+C)执行的信号,当程序正在运行,然后键入中断键,则执行此程序的进程就会终止
内核:是linux系统内部最核心的软件,用c语言编写的,有以下作用:
1.对CPU进行管理,进程调度到CPU里进行管理
2.对进程进行管理,例如启动、杀死、退出等操作
3.对内存进行空间的分配,哪些内存空间已经使用了,哪些还没有使用,分配给了哪些进程等
4.对磁盘里的文件系统进行管理,文件的读取、写入以及查找等进行管理
5.对其他的硬件进行管理,例如网卡、声卡、显卡等
当我们关闭一个会话时,即ssh关闭后,系统会将相关的进程杀掉,运行的web进程就会收到SIGHUP信号而退出,我们可以使用nohup命令让程序在关闭窗口的时候程序还能继续在后台运行。nohup命令:运行一个命令,让它对hup信号免疫,不受影响
[root@router apiserver]# nohup scweb & #&符号表示将进程放在后台运行
[1] 6358
[root@router apiserver]# nohup: 忽略输入并把输出追加到"nohup.out"
trap命令:可以用于指定在接收到信号后将要采取的动作,即可以捕捉除了9号信号之外的信号,常见的用途是在脚本程序被中断时完成清理工作
nginx介绍
nginx的官方网站:https://nginx.org/
nginx是一个web服务器软件,支持HTTP协议,可以做反向代理(负载均衡),将用户的访问流量转发到后端的服务器去。nginx还可以做邮件服务器。
HTTP
协议protocol:理解为一种语言,不同程序之间沟通交流使用的,规定了数据在传输的过程中应该是什么样子的,由哪些组成,里面包含了哪些内容等等,协议在本质上就是一个程序,用来封装我们的数据,可以把它想象成python里的字典等。
HTTP协议:超文本传输协议是一个简单的请求-响应协议,通常运行在TCP之上,指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应
怎么理解超文本?文本只是文字没有图片,超文本不只是文本,还可以包含图片、声音、视频等
谁会使用http协议?浏览器、web服务器软件、爬虫程序
HTTP协议工作机制:
1.请求包
2.响应包
反向代理
代理可以理解为一个中间人,代理分为正向代理和反向代理
正向代理:代理局域网里的机器上网,即代理用户去访问-->站在用户的角度,让用户访问网站更快一点
反向代理:代理服务器接收用户的请求,然后转发给后端真正的web服务器,起到负载均衡的作用-->站在企业角度,让用户快速并且稳定的访问
编译安装nginx
软件安装比较经典的两种安装方式:
1.yum安装:直接使用yum install nginx安装,底层是需要知道nginx已经做好的rpm包存在的位置,不然也不能去安装。rpm包--是redhat/centos系统里的软件安装包,以rpm结尾,理解为Windows里的.exe结尾的安装包,rpm包是别人使用源码制作好的可以直接安装使用的软件包。rpm包一般在系统盘、官方网站、第3方网站里会有
rpm是linux里软件安装的命令,不能自动解决依赖关系,需要手工完成;yum也是linux里的软件安装的命令,但yum可以帮我们自动解决依赖关系
2.编译安装:下载源代码包,按照固定的流程去安装:下载源码->编译前的配置->编译->编译安装。编译前的配置主要是形成一个编译方案。编译安装可以定制:哪些功能需要,哪些不需要,安装到指定位置等,企业里业务需要根据自身的情况进行定制,更加节约资源,性能更好
1.下载
可以使用wget或者curl进行下载:wget--是linux里的下载软件,使用前要下载该命令(yum install wget);curl是linux里的字符界面的浏览器
[root@router apiserver]# mkdir /nginx #新建目录存放nginx相关文件
[root@router apiserver]# cd /nginx/
[root@router nginx]# curl -O https://nginx.org/download/nginx-1.24.0.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1086k 100 1086k 0 0 20964 0 0:00:53 0:00:53 --:--:-- 23985
[root@router nginx]# ls
nginx-1.24.0.tar.gz
2.解压软件,并进入解压后的文件夹
[root@router nginx]# tar xf nginx-1.24.0.tar.gz
[root@router nginx]# ls
nginx-1.24.0 nginx-1.24.0.tar.gz
[root@router nginx]# cd nginx-1.24.0
[root@router nginx-1.24.0]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
其中src文件夹里存放的是nginx的程序源代码;configure是一个配置的脚本文件,nginx给我们提供的,这个脚本会收集我们指定的配置,然后生成一个Makefile的文件,这个Makefile会告诉后面的make命令,如何去编译
3.解决软件的依赖关系,需要安装的软件包
[root@router nginx-1.24.0]# yum install epel-release -y
[root@router nginx-1.24.0]# yum install gcc openssl openssl-devel pcre pcre-devel automake make -y
4.进行编译前的配置
[root@router nginx-1.24.0]# ./configure --prefix=/usr/local/sumeng99 --user=meng --with-http_ssl_module --with-stream --with-http_v2_module --with-threads --with-http_stub_status_module
--prefix=path:指定安装路径,默认安装到/usr/bin/nginx
--conf-path=path:指定配置文件的路径
--user=name:指定启动nginx work进程的用户
--with-http_ssl_module:开启https的功能,--with开头的表示开启某个功能,--without开头的表示禁用某个功能
--with-stream:支持tcp/udp反向代理功能
--with-http_v2_module:对http 2.0版本的支持
--with-threads:支持线程池技术
--with-http_stub_status_module:开启nginx的状态统计功能,可以知道有多少人访问你的nginx
5.编译
[root@router nginx-1.24.0]# make -j 2
make其实就是按照Makefile的配置去编译程序成二进制文件,二进制文件就是直接可以运行的程序
6.安装
将二进制程序安装到指定路径下去
[root@router nginx-1.24.0]# make install
7.去指定安装目录下查看
[root@router nginx-1.24.0]# cd /usr/local/sumeng99/
[root@router sumeng99]# ls
conf html logs sbin
[root@router sbin]# pwd
/usr/local/sumeng99/sbin #启动程序存放的路径
[root@router sbin]# ls
nginx
sbin:存放nginx的可执行文件(启动、关闭)
logs:存放日志文件
html:存放网站的网页文件
conf:存放nginx配置文件
8.启动nginx
[root@router sbin]# useradd meng -s /sbin/nologin #新建启动nginx的用户
[root@router sbin]# ./nginx
[root@router sbin]# ps aux|grep nginx
root 6600 0.0 0.3 149868 5660 pts/0 S+ 20:57 0:00 vim onekey_install_nginx.sh
root 12289 0.0 0.0 46236 1164 ? Ss 22:29 0:00 nginx: master process ./nginx
meng 12290 0.0 0.1 46696 1916 ? S 22:29 0:00 nginx: worker process
root 12292 0.0 0.0 112824 984 pts/2 S+ 22:29 0:00 grep --color=auto nginx
[root@router sbin]# netstat -anplut|grep nginx #默认监听80端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12289/nginx: master
访问ip+端口:http://192.168.188.254/
停止nginx:
[root@router sbin]# ./nginx -s stop
[root@router sbin]# ps aux|grep nginx
root 12303 0.0 0.0 112824 988 pts/2 S+ 22:34 0:00 grep --color=auto nginx