目录
一、Apache
1.基本概念
Apache 是一款免费开源的 Web 服务器软件,用来处理 HTTP 请求和相应的网页请求Apache 由Apache软件基金会开发和维护。在互联网上, Apache 是最广泛使用的 Web 服务器软件之一。它支持多种操作系统,并且可以与多种编程语言进行集成,例如PHP 、 Python 、 Perl 等。它不仅可以用于静态网站,还可以支持动态内容的生成,比如使用CGI 脚本来动态生成网页内容apache 官网 : www.apache.org
2.功能
(1)提供 http 协议服务 web(2)多个虚拟主机: IP 、 Port 、 FQDN 用一台物理服务器搭建多个网站如: 百度、 淘宝(3)CGI : Common Gateway Interface ,通用网关接口, 支持动态程序(4)反向代理:代理的是 服务端; 正向代理:代理的是客户端(5)负载均衡(6)路径别名(7)丰富的用户认证机制: basic , digest(8)支持第三方模块
3.特点
1.跨平台性Apache 可以运行于 Linux 、 Windows 、 Mac OS 等多种操作系统环境中2.可扩展性Apache 支持插件式架构,能够方便地扩展新的功能模块3.安全性Apache 通过 access control 、 SSL/TLS 加密等多种手段保障服务器和数据的安全4.稳定性Apache 拥有强大的稳定性和健壮性,在高压力下表现良好5.易用性Apache 提供了简单易用的配置文件,允许管理员以文本方式编辑6.速度快Apache 优化了请求和响应处理机制,能够提高 Web 服务器的性能
4.重要概念
高度模块化: core + modulesDSO: Dynamic Shared Object 动态加载 / 卸载MPM: multi-processing module 多路处理模块
5.三个MPM工作模式
5.1Prefork MPM
Prefork MPM 预派生模式,有一个主控制进程,然后生成多个子进程 , 每个子进程有一个独立的线程响应用户请求,相对比较占用内存,但是比较稳定,可以设置最大和最小进程数,是最古老的一种模式,也是最稳定的模式,适用于访问量不是很大的场景
优缺点
优点:
稳定性:进程间隔离,提高稳定性,即使某个子进程崩溃,不会影响到其他进程
兼容性:适用于线程不安全的第三方模块和库
缺点:
资源开销:每个进程都有独立的内存和资源开销,比多线程模式消耗更多的系统资源
性能:在高并发情况下,性能可能不如`worker'或'event MPM'模式
5.2Worker MPM
worker MPM 是一种多进程和多线程混合的模型,有一个控制进程,启动多个子进程,每个子进程里面包含固定的线程,使用线程程来处理请求,当线程不够使用的时候会再启动一个新的子进程,然后在进程里面再启动线程处理请求,由于其使用了线程处理请求,因此可以承受更高的并发
优缺点
优点:
高并发性能:线程比进程轻量,处理并发请求时效率更高
资源效率:线程共享进程资源,减少内存和CPU开销
缺点:
复杂性:线程之间共享内存,编程和调试较为复杂
线程安全:需要确保使用的所有库和模块都是线程安全的
5.3Event MPM
event MPM 是 Apache 中最新的模式, 2012 年发布的 apache 2.4.X 系列正式支持 event 模型。 属于事件驱动模型(epoll) ,每个进程响应多个请求,在现在版本里的已经是稳定可用的模式。它和 worker 模式很像,最大的区别在于,它解决了keep-alive 场景下,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive ,空挂在那里等待,中间几乎没有请求过来,甚至等到超时)event MPM 中,会有一个专门的线程来管理这些keep-alive 类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执 行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力, event 只在有数据发送的时候才开始建立连接,连接请求才会触发工作线程,即使用了TCP 的一个选项,叫做延迟接受连接TCP_DEFER_ACCEPT,加了这个选项后,若客户端只进行 TCP 连接,不发送请求,则不会触发 Accept 操作,也就不会触发工作线程去干活,进行了简单的防攻击(TCP 连接)
优缺点
优点:
高并发性能:通过事件驱动机制和长连接优化,显著提升高并发处理能力
资源效率:线程和进程资源占用更低,提升内存和CPU利用率
响应速度:在处理大量长连接请求时,响应速度更快
缺点:
复杂性:配置和调试相对复杂,需要确保应用和模块是线程安全的
兼容性:部分老旧的第三方模块可能不完全支持event MPM
二、LAMP
1.简介
LAMP是一种用于构建动态网站和Web应用程序的开源软件堆栈组合。是目前成熟的企业网站应用模式之一
LAMP 是一个缩写词,具体包括 Linux 操作系统, Apache 网站服务器, MySQL 数据库服务器, PHP (或perl, Python )网页编程语言
1.1Linux
Linux是LAMP堆栈的基础,作为操作系统提供了运行其他LAMP组件的环境。它因其稳定些安全性和开源特性被广泛应用于服务器端
1.2Apache
Apache是一种流行的Web服务器软件,用于处理客户端的HTTP请求,并将网页内容传送到用户的浏览器。它支持模块化配置,允许根据需求加载不同的功能模块
1.3MySQL
MySQL是一个关系型数据库管理系统,用于存储和管理应用程序中的数据。MariaDB是
MySQL的一个分支,通常作为替代方案。它们支持 SQL查询,提供强大的数据管理功能
1.4PHP
PHP是一种广泛使用的服务器端脚本语言,用于生成动态网页内容。它可以与数据库交互生成用户请求的动态内容,并将结果返回到Web服务器。LAMP中也可以使用Perl 或Python代替PHP
1.5构建平台的顺序
在构建 LAMP 平台时,各组件的安装顺序依次为 Linux---- Apache---- MySQL---- PHP其中 Apache 和 MySQL 的安装并没有严格的顺序要求,而 PHP 环境的安装一般放到最后,负责沟通 web 服务器和数据库系统以协同工作
2.LAMP的优势
开源:所有组件都是开源的,降低了使用成本
广泛支持:由于LAMP的普及性,有大量的文档和社区支持
灵活性:组件可以灵活替换,比如用Nginx替代Apache,或用Python替代PHP
3.编译安装的优点
定制化配置
灵活性:编译安装允许你根据具体需求配置软件。你可以选择启用或禁用某些功能、优化特定的参数,甚至选择编译时的优化选项(如针对特定CPU架构的优化)
定制模块:在编译时,你可以选择需要加载的模块或插件,而不是安装整个软件包中的所有组件
最新版本
提前使用新特性:通过编译源代码,你可以在发布二进制包之前,获取并使用软件的最新版本或特性,尤其是对于快速更新的软件
修复最新的Bug:编译安装可以让你直接从源码仓库获取最新的修复,避免等待发行版维护者更新软件包
性能优化
针对特定硬件的优化:通过编译,你可以针对你的硬件架构进行优化,比如使用特定的编译器优化选项,从而提升软件的运行性能
裁剪不必要的功能:通过选择编译选项,你可以裁剪掉不需要的功能,减少软件占用的资源,提高性能
自主控制
避免依赖问题:通过编译安装,你可以手动控制软件的依赖项,避免与系统中已有的库版本冲突
安全性:你可以检查和验证源码,确保没有后门或不安全的代码,并在编译过程中启用特定的安全选项,如启用AddressSanitizer等
4.LAMP的工作流程
客户端请求
用户通过浏览器访问一个网站或Web应用程序
Apache处理请求Apache Web服务器接收用户的请求,并决定如何处理
PHP脚本执行如果请求的内容是一个动态网页(如`php`文件),Apache将请求传递给PHP解释器
与数据库交互PHP脚本可能需要从MySQL数据库中读取或写入数据。PHP通过SQL查询与数据库交互
生成响应PHP生成动态内容(如 HTML、JSON 数据等),然后将其返回给Apache
客户端显示Apache将生成的内容传递给客户端浏览器,浏览器解析并显示给用户
三、扩展
1.Wget工具
wget是一个功能强大的下载工具,适用于简单的文件下载以及复杂的批量下载任务格式wget [OPTION]... [URL]...常用选项-q: 静默模式-c: 断点续传-P /path: 保存在指定目录-o filename: 保存为指定文件名, filename 为 - 时,发送至标准输出--limit-rate= 指定传输速率,单位 K , M 等
wget http://example.com/file.zip #下载文件
wget -o newfilename.zip http://example.com/file.zip #指定保存文件名
wget -c http://example.com/file.zip #断点传续
wget --limit-rate=200k http://example.com/file.zip #限制下载速度
2.Curl
curl 是基于 URL 语法在命令行方式下工作的文件传输工具,它支持 FTP, FTPS, HTTP,HTTPS, GOPHER, TELNET, DICT, FILE及 LDAP 等协议。 curl 支持 HTTPS 认证,并且支持 HTTP 的 POST 、 PUT 等方法, FTP 上传, kerberos 认证, HTTP 上传,代理服务器, cookies ,用户名 / 密码认证, 下载文件断点续传,上载文件断点续传,http 代理服务器管道( proxy tunneling ),还支持 IPv6 , socks5 代理服务器,通过 http代理服务器上传文件到FTP 服务器等,功能十分强大
格式
curl [options] [URL...]
常用选项
-A/--user-agent <string> 设置用户代理发送给服务器-e/--referer <URL> 来源网址--cacert <file> CA证书 (SSL)-k/--insecure 允许忽略证书进行 SSL 连接--compressed 要求返回是压缩的格式-H/--header "key:value” 自定义首部字段传递给服务器-i 显示页面内容,包括报文首部信息-I/--head 只显示响应报文首部信息-D/--dump-header <file>将url的header信息存放在指定文件中--basic 使用HTTP基本认证-u/--user <user[:password]>设置服务器的用户和密码-L 如果有3xx响应码,重新发请求到新位置-O 使用URL中默认的文件名保存文件到本地-o <file> 将网络文件保存为指定的文件中--limit-rate <rate> 设置传输速度-0/--http1.0 数字0,使用HTTP 1.0-v/--verbose 更详细-C 选项可对文件使用断点续传功能-c/--cookie-jar <file name> 将url中cookie存放在指定文件中-x/--proxy <proxyhost[:port]> 指定代理服务器地址-X/--request <command> 向服务器发送指定请求方法-U/--proxy-user <user:password> 代理服务器用户和密码-T 选项可将指定的本地文件上传到FTP服务器上--data/-d 方式指定使用POST方式传递数据-s --silent Silent mode-b name=data 从服务器响应set-cookie得到值,返回给服务器-w <format> 显示相应的指定的报文信息,如:%{http_code},%{remote_ip}等-m, --max-time <time> 允许最大传输时间
3.压力测试工具
httpd 的压力测试工具:ab、webbench、http_load、seige
ab 来自httpd-tools包
命令格式ab [OPTIONS] URL常用选项-n:总请求数-c:模拟的并发数-k:以持久连接模式测试
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 源码编译安装LAMP
发表评论 取消回复