什么是linux操作系统,特点,优势,启动阶段?
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它的特点和优势是开源、多线程、安全性高、稳定性强、兼容性好、灵活性高、易于维护、社区支持广泛。
linux操作系统的启动过程
**启动过程分5个阶段:
内核引导,开机自检,启动硬盘,操作系统读取/boot目录下的内核文件
运行init,init进程读取配置文件/etc/inittab,可以理解为进行一些开机自启
系统初始化,主要完成的工作有:激活分区,检查磁盘,加载硬件模块以及其他一些需要优先执行的任务
建立终端,会打开6个终端以便用户登录系统。**
什么是Tomcat,作用,核心文件,启动和关闭,如何部署项目?
tomcat是一个jsp/servlet容器,主要用来部署运行java web项目,它也有虚拟主机配置,高性能io,负载均衡配置,代理服务,cgi服务等功能。
核心文件:
/bin:启动/关闭tomcat服务以及其他的一些脚本。
/conf:tomcat相关配置文件存放位置,其中最重要的便是server.xml
/logs:存放tomcat和项目日志
/webapps:部署项目的目录
启动/关闭:
启动:执行startup脚本
关闭:执行shutdown脚本
项目部署:
方式一:将项目war包放置到webapps目录下即可
方式二:修改conf/server.xml配置文件,在host标签中添加一个context标签,并配置项目实际路径和服务访问路径,启动tomcat
方式三:通过tomcat控制台进行项目部署
什么是Apache,作用,核心文件,启动和关闭,如何部署项目?
Apache是世界上使用最广泛的Web服务器应用程序,在商业Web服务器市场中占有超过50%的份额。 它快速、可靠并且可通过简单的 API 扩展,将Python等解释器编译到服务器中。主要作用是用于部署web网站。
核心文件:
httpd.conf
其中可以配置端口,项目部署目录,日志存放目录,可添加扩展模块等。
启动和停止:
systemctl start httpd
systemctl stop httpd
也可以使用apachectl脚本,最终还是执行的httpd
项目部署:
将web项目放置默认部署目录/var/www/html下,启动apache服务即可。
什么是Nginx,作用,核心文件,启动和关闭,如何部署项目?
Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,有报告表明能支持高达50000个并发连接数。同时,nginx也可以作为http服务器,邮件代理服务器,通用的tcp/udp代理服务器,静态web服务器,反向代理服务器,可提供负载均衡能力。
核心文件:
conf/nginx.conf
启动/停止:
执行nginx脚本 ./nginx
修改配置文件后重启nginx ./nginx -s
停止nginx ./nginx -s quit
部署项目到 Nginx 上,通常有以下几个步骤:
将 Web 应用程序打包成 WAR 或 ZIP 文件,WAR 或 ZIP 文件包含了所有要部署的文件和目录;
将 WAR 或 ZIP 文件复制到 Nginx 安装目录下的 html 目录中;
配置 Nginx 的虚拟主机或别名,使得 Nginx 可以识别并访问应用程序;
启动 Nginx 服务器,Nginx 将自动解压 WAR 或 ZIP 文件并将应用程序部署到相应的目录中;
在浏览器中输入应用程序的访问 URL,即可访问应用程序。
什么是反向代理,如何配置Nginx反向代理?
反向代理的一种服务器的配置方式,它将客户端的请求转发到内部服务器进行处理,并将处理结果返回给客户端,从而隐藏了内部服务器的真实ip地址和域名,反向代理可以提升应用程序的性能,安全性和可靠性。
配置方式:
修改nginx配置文件,配置location,在location中添加proxy_pass,重启nginx服务即可。
http {
server {
listen 80;
location / {
proxy_pass http://localhost:8000/;
}
}
}
什么是负载均衡,如何配置Nginx负载均衡?
负载均衡是一种网络服务器配置方法,它将网络流量分配到多台服务器上,从而实现更好的性能,可靠性,和可扩展性,负载均衡可以通过不同的算法来决定哪台服务器接收请求,并可以动态的调整服务器的数量和工作负载,使系统能够更好的应对高峰期流量。
nginx配置负载均衡:
配置upstream,添加多个服务请求地址,然后在处理所有请求的location中配置proxy_pass,并指定使用添加的upstream配置。
http {
upstream myapp {
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
server {
listen 80;
location / {
proxy_pass http://myapp/;
}
}
}
Nginx负载均衡的算法有哪些?默认用的是哪种?
Nginx 负载均衡的算法有以下几种:
- 轮询(Round Robin):按照服务器列表的顺序轮流分配请求;
- IP 哈希(IP Hash):按照客户端 IP 地址的哈希值进行分配,使得同一客户端的请求总是被分配到同一台服务器上处理;
- 最少连接数(Least Connections):将请求分配给当前连接数最少的服务器;
- 加权轮询(Weighted Round Robin):按照服务器列表中每个服务器的权重比例来分配请求;
- 加权最少连接数(Weighted Least Connections):将请求分配给当前连接数最少且权重最高的服务器。
Nginx 默认使用的是轮询算法。可以通过在 upstream
块的 server
指令中添加 weight
参数来进行加权配置,例如:server 192.168.1.101:8080 weight=2;
表示将该服务器的权重设置为 2,即默认会分配更多的请求给该服务器进行处理。可以在 location
指令中使用 ip_hash
或 least_conn
参数来切换其他负载均衡算法,例如:proxy_pass http://myapp/ ip_hash;
表示使用 IP 哈希算法进行负载均衡。
Docker容器类
Docker 容器是 Docker 平台上运行的一个应用程序,它包含应用程序所需的所有软件、库和配置文件,可以在任何系统上运行。Docker 容器的使用非常广泛,尤其是在云计算和 DevOps 领域。它们通常用于构建和部署分布式应用程序、微服务和容器化应用程序。
以下是 Docker 容器的一些常见特性:
- 轻量级:Docker 容器非常轻量级,因为它们共享主机内核和其他资源。
- 可移植性强:由于 Docker 容器包含了应用程序及其依赖项,所以它们可以在任何系统上运行,并且不需要重新配置或重新编译。
- 易于管理:Docker 容器可以随时启动、停止、删除和备份。
- 安全性高:Docker 容器提供了各种安全措施来保护容器中的应用程序和数据,例如网络隔离、安全加密等。
- 易于扩展:Docker 容器可以很容易地复制和扩展,以满足高负载需求。
监控类
Zabbix 监控是一个开源的网络监控系统,它能够监控服务器、应用程序和网络设备等各种信息,并提供可视化的报告和警报。Zabbix 包含以下几个主要组件:
- Zabbix Server:负责收集数据、处理警报和生成报告。
- Zabbix Agent:在被监视的主机上运行,收集并传输数据给 Zabbix Server。
- Zabbix Proxy:为分布式环境中的 Zabbix Server 提供代理服务。
- Zabbix Web Interface:提供可视化的管理界面,用于配置和管理 Zabbix 系统。
- Zabbix Database:用于存储所有监控数据。
ELK 是三个开源工具的首字母缩写,它们常常一起使用来搭建日志管理和分析系统。ELK 可以帮助我们更好地理解应用程序的性能和行为,从而快速发现问题并进行调试。它可以帮助我们实时地监控、搜索和分析大量的日志数据,并且提供可视化的报告和警报。具体来说:
- Elasticsearch 是一个基于 Lucene 的搜索引擎,它可以快速地存储、搜索和分析大量的日志和事件数据。
- Logstash 是一个工具,它可以从各种数据源(如文件、数据库、消息队列等)收集、转换和发送日志数据到 Elasticsearch 或其他目标。
- Kibana 是一个基于 Web 的用户接口,它可以对 Elasticsearch 中的数据进行可视化和交互式查询。
中间件
消息队列是一种允许应用程序通过异步方式进行通信的中间件。它们将消息从一个应用程序传递到另一个应用程序,可以用于解耦和缓冲不同组件之间的交互。使用消息队列可以使各个组件之间解耦,提高系统的可靠性和伸缩性。例如,在微服务架构中,每个服务都可以通过消息队列异步地与其他服务进行通信。此外,消息队列还可以用于任务调度、日志记录、事件驱动等场景。
常见的消息队列包括:
- RabbitMQ:一种基于 AMQP(Advanced Message Queuing Protocol)的开源消息队列系统,支持多种编程语言。
- Apache Kafka:一种高吞吐量、低延迟的分布式发布/订阅消息系统,强调数据持久化。
- ActiveMQ:一种基于 JMS(Java Message Service)的开源消息队列系统,支持多个传输协议和编程语言。
- Redis:一个支持 Pub/Sub 模式的内存键值存储系统,可以被用作消息队列。
- ZeroMQ:一个轻量级的消息队列库,提供了多种通信模式和传输协议。
根据队列的特性和使用场景,队列可以分为以下几类:
- 点对点队列:消息发送者向队列发送消息,然后接收方从队列中接收该消息。这样的队列也称为消息队列。
- 发布/订阅队列:消息发送者将消息发送到主题(topic),并由所有订阅该主题的接收方接收消息。这样的队列也称为主题队列。
- 工作队列:一个生产者将消息发送到队列,多个消费者从队列中接收这些消息并处理它们。通常在需要处理大量的同一类型任务时使用。
zookeeper的作用和原理
ZooKeeper 是一个分布式协调服务,它提供了一组 API,可以帮助应用程序在分布式环境中进行协调和同步。ZooKeeper 常被用于构建分布式系统、集群管理和配置管理等场景。
ZooKeeper 的主要作用:
- 维护分布式系统的元数据和状态信息。
- 实现分布式锁和同步机制,以确保分布式系统状态的一致性。
- 提供高可用性和容错性的特性,以防止单点故障和网络分区。
ZooKeeper 的原理:
ZooKeeper 通过一个称为 ZAB(ZooKeeper Atomic Broadcast)的协议来实现数据的同步和复制。当 ZooKeeper 集群中的节点发生变化时,ZooKeeper 使用 ZAB 协议将这些变更广播给所有节点,从而实现数据的一致性和可靠性。
具体来说,ZooKeeper 集群中包含多个节点,其中一个节点作为 leader,其他节点作为 follower。客户端可以连接任意一个节点进行读写操作,而这些操作最终会被发送到 leader 节点上。leader 节点负责处理这些请求,并使用 ZAB 协议将它们广播给所有 follower 节点。一旦大多数节点都确认了一个更新操作,该操作就会被提交并在整个集群中生效。
ZooKeeper 还提供了节点监视机制和事件通知机制,让客户端可以监听指定节点的状态变化并做出相应的处理。同时,ZooKeeper 还支持 ACL(Access Control List)来保护数据的安全性和隐私性。
一些概念
- 集群(Cluster):是由多个相互连接的计算机或服务器组成的一个系统,它们协同工作以提供更高的性能、可靠性和容错性。在集群中,每个节点都可以独立地处理请求,而整个系统看起来像是一个单一的实体。
- 分布式(Distributed):是一种计算模型,其中任务被分配到多台计算机上进行并行处理。在分布式系统中,各个节点之间通过消息传递或共享存储等方式进行通信和协作,从而完成复杂的任务。分布式系统通常具有良好的可扩展性和灵活性,并且可以更好地应对硬件故障和网络延迟等问题。
- 高可用(High Availability):是指系统在出现故障时仍然能够继续正常运行的能力。为了实现高可用性,系统需要采取一系列措施,例如使用冗余的硬件设备、自动故障转移、负载均衡和备份等手段。高可用性对于关键应用程序和服务至关重要,因为它可以确保系统的稳定性和可靠性,减少停机时间和数据损失。
- 负载均衡(Load Balancing):将请求分配给不同的服务器或节点,以提高系统的性能和可靠性。
- 容器化(Containerization):使用容器技术将应用程序打包,并将其部署到多个环境中,以实现跨平台的可移植性和一致性。
- 自动化运维(DevOps):通过自动化工具和流程来加速软件交付和部署,并促进开发团队和运维团队之间的协作和沟通。
- 监控与告警(Monitoring and Alerting):使用监控工具和技术来追踪系统的运行状态和性能指标,并设置告警规则来及时响应和解决问题。
- 日志管理(Log Management):收集、存储、分析和可视化应用程序和系统日志,以便快速定位和解决问题,并优化系统性能和稳定性。
- 安全与合规(Security and Compliance):采取必要的措施来保护系统和数据的安全性和隐私性,以符合各种法规和标准要求。
- 云计算(Cloud Computing):利用云服务商提供的基础设施、平台和软件服务,使应用程序和服务能够弹性扩缩容、灵活部署和管理。
什么是LAMP,为什么要搭建LAMP环境?
LAMP是一种流行的Web应用程序开发环境,指的是Linux操作系统,Apache Web服务器,MySQL关系型数据库管理系统,以及PHP编程语言的组合。LAMP环境常常被用于构建动态网站和Web应用程序。
搭建LAMP环境可以提供完整的Web开发环境及其所需组件,使开发者可以在一个系统中进行开发,测试和部署Web应用程序,从而提高开发效率,降低开发成本。此外,LAMP环境非常稳定、功能强大且安全可靠,因此在生产环境中得到了广泛应用。
OSI七层模型
应用层,会话层,表示层,传输层,网络层,数据链路层,物理层。