Apache
Nginx
lamp/lnmp
一、中间件简介
中间件(Middleware):是提供系统软件和应用软件之间连接的软件,以便于软件各个部分之间的沟通。关于中间件,我们可以理解为:是一类能够为一种或多种应用程序合作互通、资源共享,同时还能够为该应用程序提供相关的服务软件。
常见的中间件
nginx
apache
tomcat
wedlogic
tengine
iis - windows 服务器
......
二、HTTP协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP协议和TCP/IP协议族内的其他众多协议相同,用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端成为服务器端。
请求行内容:
第一部分:请求方法
1)GET
2)POST
......
第二部分:请求url
第三部分:使用的http协议版本号
http 0.9
http 1.0
http 1.1
请求头的内容:
Host:指定目标网站的域名或者是IP地址
Connection:当前客户端的链接状态
User-Agent:指定客户端访问网站时候使用的浏览器
refer:表示当前这个请求是直接访问过来的,还是从其他网站跳转过来的
http请求格式:
第一行:请求行
第二行-空白行:请求头
空白行下面:请求体
GET /download/a.html HTTP/1.1
Host: www.baidu.com
Connection: close
sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Ap0.0.0 Safari/537.36
Sec-Purpose: prefetch;prerender
Purpose: prefetch
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,i=0.8,application/signedexchange;v=b3;q=0.7
Sec-Fetch-Site: none
xxx
http响应格式:
第一行:响应行
第二行-空白行:响应头
空白行下面:响应体
HTTP/1.1 / 200 OK
Content-Security-Policy: frame-ancestors 'self' http
Content-Type: text/html; charset=utf-8
Date: Fri, 29 Mar 2024 00:27:39 GMT
Server: BWS/1.1
Traceid: 1711672059044989722616594963546741901591
X-Ua-Compatible: IE=Edge,chrome=1
X-Xss-Protection: 1;mode=block
Connection: close
Content-Length: 406827
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="Content-Type"
content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible"
content="IE=edge,c
HTTP 状态码
状态代码有三位数字组成,第一个数字定义了响应的类型,共有五种类型:
1xx:指示信息 - 表示请求已接收,继续处理
2xx:成功 - 表示请求已成功接收、理解、接受
3xx:重定向 - 要完成请求必须进行更进一步的操作
4xx:客户端错误 - 请求有语法错误或请求无法实现
5xx:服务器错误 - 服务器未能实现合法的请求
200 OK : 客户端请求成功
301 :永久重定向
302 Found :临时重定向
400 Bad Request : 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized : 请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
402 Forbidden : 服务器收到请求,但是拒绝提供服务
404 Not Found : 请求资源不存在,eg:输入了错误的URL
500 Internal Server Error : 服务器发生了不可预期的错误
503 Server Unavailable : 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
HTTP格式:http://域名:端口号/路径/文件名 端口号:默认是80
三、Apache(httpd)
Apache HTTPD又可以简称为httpd或者Apache,它是Internet使用最广泛的web服务器之一,使用Apache提供的web服务器是由守护进程httpd,通过http协议进行文本传输,默认使用80端口的明文传输方式,当然,后来,为了保证数据的安全和可靠性,又添加了443的加密传输的方式,Apache提供的服务器又被称为:补丁服务器,原因很简单,它是一款高度模块化的软件,想要给它添加相应的功能只需添加相应的模块,让其Apache主程序加载相应的模块,不需要的模块也可以不用加载,保证了Apache的简洁,轻便,高效性,当出现大量访问一个服务器是可以使用多种复用模式,保证了服务器能快速回应客户端的请求,如MPM,端口复用技术。
特点:
1、开放源代码
2、跨平台使用,支持绝大多数硬件平台,支持所有的unix系统和linux系统,支持大多数windows平台
3、支持多种web编程语言,perl,php,python,java等
4、模块化设计,根据所需功能去安装不同的模块
5、运行非常稳定,支持大负载访问的web站点
6、安全性高,及时修复已发现的漏洞
安装Apache
第一步:配置yum源
第二步:安装Apache
yum install httpd
第三步:启动Apache
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
第四步:检查Apache状态
[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2024-04-02 14:09:50 CST; 1h 20min ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 1065 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─1065 /usr/sbin/httpd -DFOREGROUND
├─1156 /usr/sbin/httpd -DFOREGROUND
├─1157 /usr/sbin/httpd -DFOREGROUND
├─1158 /usr/sbin/httpd -DFOREGROUND
├─1159 /usr/sbin/httpd -DFOREGROUND
└─1160 /usr/sbin/httpd -DFOREGROUND
4月 02 14:09:49 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
4月 02 14:09:50 localhost.localdomain httpd[1065]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' d... this message
4月 02 14:09:50 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
也可以
[root@localhost ~]# ps -aux | grep httpd
root 1065 0.0 0.5 224080 5032 ? Ss 14:09 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1156 0.0 0.2 224080 2928 ? S 14:09 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1157 0.0 0.2 224080 2928 ? S 14:09 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1158 0.0 0.2 224080 2928 ? S 14:09 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1159 0.0 0.2 224080 2928 ? S 14:09 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1160 0.0 0.2 224080 2928 ? S 14:09 0:00 /usr/sbin/httpd -DFOREGROUND
root 5476 0.0 0.0 112824 976 pts/0 R+ 15:32 0:00 grep --color=auto httpd
也可以
[root@localhost ~]# ss -tunl | grep 80
tcp LISTEN 0 128 [::]:80 [::]:*
五、访问Apache
apache的作用是开启一个端口,等待客户端通过浏览器访问
测试之间,建议关闭防火墙和selinux
关闭防火墙
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl stop firewalled
关闭selinux
查看当前selinux的状态
[root@localhost ~]# getenforce
Enforcing
关闭命令:
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g"/etc/selinux/config
四、Nginx(httpd)
Nginx 是高性能的 HTTP 和反向代理的web服务器,Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发, 性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高 达 50,000 个并发连接数。
1、跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本。
2、配置异常简单:非常容易上手。配置风格跟程序开发一样,神一般的配置。
3、非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)。
4、内存消耗小
5、稳定性高:用于反向代理,宕机的概率微乎其微。nginx代理和后端web服务器间无需长连接。
安装nginx
方法1:编译安装
依赖:openssl-devel zlib-devel ncurses-devel pcre-devel gcc gcc-c++
方法2:yum安装
nginx的rpm包在epel源
下载位置:https://nginx.org
第一步:下载
[root@localhost html]# wget http://nginx.org/download/nginx-1.24.0.tar.gz
第二步:安装依赖
[root@localhost ~]# yum install openssl-devel zlib-devel ncurses-devel pcre-devel
gcc gcc-c++ -y
第三步:安装nginx
[root@localhost ~]# tar xvf nginx-1.24.0.tar.gz
[root@localhost ~]# cd nginx-1.24.0
[root@localhost nginx-1.24.0]# ./configure --prefix=/usr/local/nginx && make &&
make install
nginx的目录结构
[root@localhost nginx-1.24.0]# cd /usr/local/nginx/
[root@localhost nginx]# ls
conf html logs sbin
conf:这个目录存放的是nginx的配置文件
html:这个目录是nginx默认的网站的根目录
logs:这个是nginx的日志文件目录
sbin:这个是nginx的启动程序的目录
启动nginx
[root@localhost ~]# cd /usr/local/nginx/sbin
[root@localhost sbin]# ./nginx
[root@localhost sbin]# lsof -i :80 #检查端口
重启nginx
[root@localhost ~]# cd /usr/local/nginx/sbin
[root@localhost sbin]#./nginx -s reload
让nginx开机自启动
[root@localhost ~]# echo "/usr/loacl/nginx/sbin/nginx">>/etc/rc.d/rc.local
[root@localhost ~]# chmod +x /etc/rc.d/rc.local