此为看尚硅谷Linux运维面试题(大厂linux面试题攻略) 的学习笔记
分析:最好画图讲解,比较直观。
CentOS 6.x
CentOS 7.x
CentOS 6.x 与CentOS 7.x的启动区别
前者到第5步开始线性的一个进程调用一个进程来启动;
后者到第5步调用第一个进程后开始并发式(瀑布式)的调用所需启动的进程。
? ? ? ? ? vim /etc/ssh/sshd_config
?? ??? ?? ? Port 22222
?? ??? ?? ? ListtenAdress <u>本机本地IP</u>
#通过监听自己本地IP地址,来实现限制外网登录。也可以通过防火墙来指定访问IP,推荐使用白名单
?? ??? ??? ?vim /etc/ssh/sshd_config
?? ??? ?? ? #PermitRootLogin no #不让root用户远程登录
?? ??? ?? ? vim /etc/profile?? ??? ?? ? #在文件最末加入以下。配置完加载一下
?? ??? ?? ? export TMOUT=300? ?#默认为s
?? ??? ?? ? vim /etc/ssh/sshd_config
?? ??? ?? ? #MaxAuthTries 6
vim /etc/ssssh/ssssshd_config
#UsseDns no #取消ssh登录时DNS域名解析功能
备份方式 | 数据形式 | 传输方式 | 消耗资源 | |
---|---|---|---|---|
scp | 全量备份 | 文件级传输 | 加密传输 | 资源消耗少 |
rsync | 差异对比,增量备份 | 分块校验,部分传输 | 非加密传输 | 资源消耗高(零散文件较多) |
网站1:www.a.com
网站2:www.b.com(旧) www.d.com(新)
分析:
虚拟主机的三种方式:
基于IP的虚拟主机(少用,浪费IP)
基础IP+端口的虚拟主机(访问时需要加端口,客户不可能记得端口,所以不太常用)
基于域名的虚拟主机(常用)
#此处省略通过DNS域名解析服务器配置www.a.com、www.b.com、www.d.com的过程。也可用hosts来简单的配置实验环境
# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
??? DocumentRoot /www/aaa
??? ServerName www.a.com
??? ErrorLog logs/1-error_log
?? CustomLog logs/1-access_log common
</VirtualHost>
<VirtualHost *:80>
??? DocumentRoot /www/bbb
??? ServerName www.b.com
??? ErrorLog logs/2-error_log
?? CustomLog logs/2-access_log common
</VirtualHost>
<VirtualHost *:80>
??? DocumentRoot /www/ddd
??? ServerName www.d.com
??? ErrorLog logs/1-error_log
?? CustomLog logs/1-access_log common
</VirtualHost>
# systemctl restart? httpd
再基于虚拟主机的基础上,通过配置rewrite实现访问访问www.b.com跳转到www.d.com
# vim /etc/httpd/conf/httpd.com
NameVirtualHost *:80
<VirtualHost *:80>
??? DocumentRoot /www/aaa
??? ServerName www.a.com
??? ErrorLog logs/1-error_log
?? CustomLog logs/1-access_log common
</VirtualHost>
<VirtualHost *:80>
??? DocumentRoot /www/bbb
??? ServerName www.b.com
??? ErrorLog logs/2-error_log
?? CustomLog logs/2-access_log common
<IfModule mod_rewrite.c> #在指定网站目录下调用rewrite模块
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.b.com
RewriteRule ^(.*)$ http://www.d.com/$1 [R=301,L]
</IfModule>
</VirtualHost>
<VirtualHost *:80>
??? DocumentRoot /www/ddd
??? ServerName www.d.com
??? ErrorLog logs/1-error_log
?? CustomLog logs/1-access_log common
</VirtualHost>
# systemctl restart? httpd
<IfModule mod_rewrite.c> #在指定网站目录下调用rewrite模块
RewriteEngine on #开启rewrite功能
RewriteCond %{HTTP_HOST} ^www.b.com #吧www.b.com开头的内容复制给HTTP_HOST变量
RewriteRule ^(.*)$ http://www.d.com/$1 [R=301,L]
# ^(.*)$指代客户端要访问的资源
#$1 吧。*所指代的内容复制到$1变量中
#R=permanent 永久重定向 =301
#L 指定该规则为最后一条生效的规则,以后的不在生效
</IfModule>
prefork模式:
worker模式:
event模式:
查看方式:
# httpd -V |grep -i "server mpm"
指定方式:
在编译时,在选项中指定, --with-mpm=xxx
考虑两方面1:安全; 2:效率
vim /etc/httpd/conf/http.conf
...
CustomLog "|/bin/rotatelogs -l /wwwlog/access_%Y%m%d.log 8640" combined
#把内容通过管道符传给rotatelogs,每天的日志都分成一个日志文件,8640是一天的秒数
...
vim /etc/httpd/conf/httpd.conf
...
ErrorDocument 404 http://www.a.com
ErrorDocument 500 http://www.a.com/500.html
···
答:CDN技术
Apache的优缺点:
优点:
nginx的优缺点:
优点:
- 轻量级服务,比Apache 占用更少的内存及资源
- 并发能力强,nginx处理请求是异步非阻塞的,而Apache测试阻塞型的,在高并发下的nginx能保持资源低消耗高性能
- 高度模块化的设计,编写模块相对简单
- 社区活跃,各种高性能模块产出迅速
缺点:
- 动态处理需要使用fastcgi连接PHP的FPM服务,相对比Apache不占优势
Apache和Nginx的选择
Nginx适合做静态处理,简单,效率高
Apache适合做动态处理,稳定功能强
并发较高的情况下尽量选择Nginx,并发要求不高的情况下两者都可以,规模稍大的可以使用Nginx作为反响代理,然后将动态请求负载到后端的Apache上。
解析:
同步:客户端发送请求后,只要客户端没有断开请求,就算在不用处理事务时,服务器也一直等待着
异步:客户端发送请求后,只有要为客户端处理事务的时候,才会开启线程
阻塞:除了处理此客户端的请求什么都不做
非阻塞:在处理此次请求的事务的间歇,可以处理其他事务
答:因为Nginx是以异步非阻塞型的方式工作,过程如下:
Nginx收到客户端的请求,然后通过fastcgi模块访问php-fpm服务,来实现php页面解析
可以nginx反响代理一个或多个Tomcat,并可以只把动态请求转发给Tomcat来处理,静态请求转发给静态服务器就好了。
HTTP状态码的是5个不同的类别:
1:信息,服务器收到请求,需要请求继续执行操作
2:成功,操作被成功接收并处理
3:重定向,需要进一步的操作以完成请求
4:客户端错误,请求包含语法错误或无法完成请求
5**:服务器错误,服务器在处理请求的过程中发生了错误
五个类别的响应状态码的第一个数字是唯一代表。
技术点:bin-log日志(记录主服务器的关于数据库修改的SQL语句)
开启主服务器的bin-log日志记录功能,将主服务器的bin-log日志传到从服务器,从服务器根据日志内容将数据还原到本地。
主从服务器:
从服务器主动把从服务器上的数据同步到本地(备份)
使用数据库代理工具,比如Amoeba。Amoeba致力于MySQL的分布式数据库前段代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层开发。具有负载均衡、高可用、SQL过滤、读写分离、可路由相关的目标数据库、可并发请求多台数据库合并结果。通过Amoeba你能够完成多数数据的高可用、负载均衡、数据切片的功能。
tip:为了防止Amoeba突然宕机,所以企业可以随时备着另一台没有在使用的Amoeba备用机。
分析考察点:
什么是索引?
索引的分类
索引的劣势
什么时候需要建立索引
什么时候不要建立索引
什么是索引?
索引的本质是数据结构,排序好的快速查找数据结构,可以提高查找效率。比如新华字典里的目录。数据库执行查询的时候,如果那张表设置了索引,则数据库会先访问索引表,然后通过一些特殊的算法实现快速的查找。
索引的分类
劣势是什么?
什么时候需要创建索引
什么时候不需要创建索引
分析:
永久保存=持久化=内存里的数据保存到磁盘上
RDB方式:在Redis运行时,RDB程序将当前内存中的数据库快照保存到磁盘中。当Redis重启时,RDB会通过重载RDB文件来还原数据库。(保存快照时,会阻塞主进程,保证数据的一致性)
AOF方式:以协议文本的方式,将所有对数据库进行的写入操作命令记录到AOF文件,达到记录数据库的目的。类似mysql的bin-log日志。
原文:https://www.cnblogs.com/ningzijie/p/12733019.html