2019独角兽企业重金招聘Python工程师标准>>>

2014-04-03 程序猿

本文涵盖了25个有趣的Apache工作面试中会提出的问题,并附带有它们的答案,因此你可以方便的理解也许你之前从来没有见到过的一些有关于Apache的新事物.

在你开始阅读这篇文章之前,我们强烈建议你不要去死记硬背,万事首先都要尝试去放在实际场景中理解.

1. 什么是Apache web服务器?

答案 : Apache web 服务器 HTTP 是一个非常流行、功能强大并且开源,用于管理web站点并向网络提供web文件服务. 它基于 HTTP 超文本传输协议运行, 这一协议提供了服务器和客户端web浏览器通信的标准. 它支持 SSL, CGI 文件, 虚拟主机还有许多其它的功能特性.

2. 如何检查 Apache 及其版本?

答案 : 首先,使用rpm命令来检查Apache是否已经安装. 如果已经安装好了,那就使用httpd -v 命令来姜茶它的版本.

[root@tecmint ~]# rpm -qa | grep httpdhttpd-devel-2.2.15-29.el6.centos.i686
httpd-2.2.15-29.el6.centos.i686
httpd-tools-2.2.15-29.el6.centos.i686
[root@tecmint ~]# httpd -vServer version: Apache/2.2.15 (Unix)
Server built:   Aug 13 2013 17:27:11

3. Apache 以那个用户运行? 主配置文件的位置在哪里?

答案 : Apache 以“nobody”用户和httpd守护进程运行. Apache 主要的配置文件在: /etc/httpd/conf/httpd.conf (CentOS/RHEL/Fedora) 还有 /etc/apache2.conf (Ubuntu/Debian).

4. Apache 侦听 http 和 https 请求?

答案 :  Apache 默认在80端口侦听http,在443端口侦听https(需要SSL整数). 你也可以使用 netstat 命令 来检查端口.

[root@tecmint ~]# netstat -antp | grep httptcp        0      0 :::80                       :::*                        LISTEN      1076/httpd
tcp        0      0 :::443                      :::*                        LISTEN      1076/httpd

5. 如何在你的Linux机器上安装Apache服务器?

答案 : 很简单, 你可以使用任何诸如(RHEL/CentOS/Fedora)上的yum以及(Debian/Ubuntu)上的apt-get来在你的Linux上安装Apache服务器.

[root@tecmint ~]# yum install httpd
[root@tecmint ~]# apt-get install apache2

6. 你可以在哪里找到Apache Web服务器的所有配置路径?

答案: Apache默认的配置路径放在: (RHEL/CentOS/Fedora) 中是在 /etc/httpd/ on 而 (Debian/Ubuntu) 是在/etc/apache2下 .

[root@tecmint ~]# cd /etc/httpd/
[root@tecmint httpd]# ls -l
total 8
drwxr-xr-x. 2 root root 4096 Dec 24 21:44 conf
drwxr-xr-x. 2 root root 4096 Dec 25 02:09 conf.d
lrwxrwxrwx  1 root root   19 Oct 13 19:06 logs -> ../../var/log/httpd
lrwxrwxrwx  1 root root   27 Oct 13 19:06 modules -> ../../usr/lib/httpd/modules
lrwxrwxrwx  1 root root   19 Oct 13 19:06 run -> ../../var/run/httpd
[root@tecmint ~]# cd /etc/apache2
[root@tecmint apache2]# ls -l
total 84
-rw-r--r-- 1 root root  7113 Jul 24 16:15 apache2.conf
drwxr-xr-x 2 root root  4096 Dec 16 11:48 conf-available
drwxr-xr-x 2 root root  4096 Dec 16 11:45 conf.d
drwxr-xr-x 2 root root  4096 Dec 16 11:48 conf-enabled
-rw-r--r-- 1 root root  1782 Jul 21 02:14 envvars
-rw-r--r-- 1 root root 31063 Jul 21 02:14 magic
drwxr-xr-x 2 root root 12288 Dec 16 11:48 mods-available
drwxr-xr-x 2 root root  4096 Dec 16 11:48 mods-enabled
-rw-r--r-- 1 root root   315 Jul 21 02:14 ports.conf
drwxr-xr-x 2 root root  4096 Dec 16 11:48 sites-available
drwxr-xr-x 2 root root  4096 Dec  6 00:04 sites-enabled

7. Apache 可以被TCP封装器固定吗?

答案 : 不可以,它不可以被TCP封装器固定下来,因为它不支持Linux的libwrap.a库.


8. 如何在Apache中改变默认的端口,以及如何侦听其中的指令工作?

答案 : 在httpd.conf文件中有一个指令“Listen”可以让我们改变默认的Apache端口. 在Listen 指令的帮助下我们可以在不同的端口还有不同的接口进行Apache侦听.

假设你拥有多个IP注册到了你的Linux机器,并且想要Apache在一个特殊的以太网端口或接口接收HTTP请求, 即使是这种要求也可以用Listen指令做到.

为了改变Apache的默认端口,请使用打开你的Apache主配置文件 httpd.conf 或者 apache2.conf

[root@tecmint ~]# vi /etc/httpd/conf/httpd.conf[root@tecmint ~]# vi /etc/apache2/apache2.conf

查找”Listen”这个单词, 注释原来的那一行并且在那一行下面写上你自己的指令

# Listen 80
Listen 8080ORListen 172.16.16.1:8080

保存文件并重启web服务器.

[root@tecmint ~]# service httpd restart[root@tecmint ~]# service apache2 restart

9. 我们可以一台机器上放两个Apache Web服务器么?

答案 : 可以,我们在一台Linux机器上同时运行两个不同的Apache服务器, 但条件是它们应该在不同的端口上侦听,而我们可以使用Apache的Listen指令来改变端口.


10. 你知道Apache的DocumentRoot是啥意思么?

答案 : DocumentRoot 的 Apache 意思是服务器上web文件的存储位置, 默认的DocumentRoot是 /var/www/html 或者 /var/www. 这是可以被修改的,只要修改主机中的虚拟主机配置 “DocumentRoot”就行了.

11. 如何在不同的文件夹下面管理文件,还有什么是 Alias 指令?

答案 : 是的,这可以借助于主Apache配置文件中的Alias指令做到. Alias 指令可以对文件系统中的资源按图索骥, 它使用一个URL 路径,并且使用重定向到系统上的一个文件或目录来替换它.

使用Alias指令,它是Apache的 mod_alias 模块的一部分. Alias指令的默认语法是:

Alias /images /var/data/images/

上面的示例中, 放在/var/data/images 前缀前面的 /images url的意思是客户端请求

“http://www.example.com /images/sample-image.png”会让Apache从服务器上的/var/data/images/sample- image.png 取 “sample-image.png” 文件. 它也被称为URL 映射.


12. 对于“DirectoryIndex”你是怎么理解的?

答案 : DirectoryIndex 是当有一个来自主机的请求时Apache首先会去查找的文件. 例如: 客户端发送请求www.example.com, Apache 对此将到站点的文件根目录查找index文件 (首先要展示的文件).

DirectoryIndex 的默认设置是 .html index.html index.php, 如果不是这个名字, 你需要对 httpd.conf 或者 apache2.conf 中的 DirectoryIndex 值做出修改,以将其展示在你的客户端浏览器上.

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
# The index.html.var file (a type-map) is used to deliver content-
# negotiated documents.  The MultiViews Option can be used for the
# same purpose, but it is much slower.
#
DirectoryIndex index.html index.html.var index.cgi .exe

13. 当index文件丢失时如何使目录列表失效?

答案 : 如果站点根目录中的主index文件失效, 那么Apache将会在浏览器上列出所有内容类似的文件,以替换站点主页.

为了关闭Apache目录列表, 你可以在主配置文件中全局的设置,或者在.htaccess文件中部分的设置如下规则.

<Directory /var/www/html>Options -Indexes
</Directory>

14. Apache Web 服务器有些什么不同的日志文件?

答案 : Apache Web 服务器的默认日志文件是访问日志 “/var/log/httpd/access_log” 和错误日志:/var/log/httpd/error_log”.


15. 你是怎样理解错误日志中的“connection reset by peer”的?

答案 : 当服务器正在向请求提供服务时终端用户中断连接, 我们就会在错误日志中看到“connection reset by peer“.

16. 什么是Apache的虚拟主机?

答案 : 虚拟主机部分包含的信息包括站点名称,文档根路径,目录索引,服务器管理员邮箱,错误日志文件路径等等。

你可以随意为你的域添加你需要的指令,但是要运行一个站点,至少要配置量个参数服务器名称和文档根目录。 在Linux机器上,通常我们在httpd.conf文件的末尾来设定我们的虚拟主机部分的相关配置。

虚拟主机示例
<VirtualHost *:80>ServerAdmin webmaster@dummy-host.example.comDocumentRoot /www/docs/dummy-host.example.comServerName dummy-host.example.comErrorLog logs/dummy-host.example.com-error_logCustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

●ServerAdmin : 通常是指站点拥有者的电子邮箱,错误和通知可以发到里面。

●DocumentRoot : web文件在服务器上存放位置(必须配置).

●ServerName : 通过浏览器访问站点时的域名(必须配置).

●ErrorLog : 日志文件的位置,里面记录了所有与该站点相关的日志。


17. <Location>和<Directory>之间有什么区别?

答案 :

●<Location> 是用来设定和URL/ web服务器的地址栏相关的元素的。

●<Directory> 是指服务器上某对象在文件系统中的位置


18. 什么是Apache虚拟托管?

答案 :Apache虚拟托管是指,在单个web服务器上托管多个web站点。Apache 可以设定两种类型的虚拟主机:基于名称的虚拟托管和基于IP的虚拟主机托管。


19. 你怎么理解Apache的MPM?

答案 : MPM意思是Multi Processing Modules,实际上是指Apache遵循的一些机制,用来接受和完成对web服务器的请求。


20.  Worker 和 Prefork MPM之间的区别是什么?

答案 :它们都是MPM, Worker 和 prefork 有它们各自在Apache上的运行机制. 它们完全依赖于你想要以哪一种模式启动你的Apache.

●Worker 和 MPM基本的区别在于它们产生子进程的处理过程. 在Prefork MPM中, 一个主httpd进行被启动,这个主进程会管理所有其它子进程为客户端请求提供服务. 而在worker MPM中一个httpd进程被激活,则会使用不同的线程来为客户端请求提供服务.

●Prefork MPM 使用多个子进程,每一个进程带有一个线程而 worker MPM 使用多个子进程,每一个进程带有多个线程.

●Prefork MPM中的连接处理, 每一个进程一次处理一个连接而在Worker mpm中每一个线程一次处理一个连接.

●内存占用 Prefork MPM 占用庞大的内存, 而Worker占用更小的内存.


21. “LimitRequestBody”的应用是什么,还有如何在你的上传中加入限制?

答案 : LimitRequestBody 指令被用来在上传大小上做一个限制.

例如: 我想要在 /var/www/html/tecmin/uploads目录中加入 100000 字节的限制. 那么你就需要在Apache配置文件中加入下面的指令.

<Directory "/var/www/html/tecmint/uploads">
LimitRequestBody 100000
</Directory>

22. mod_perl 和 mod _php 是什么?

答案 :

●mod_perl 是一个随同Apache一起编译的Apache模块,用来做Perl脚本的简单集成并提升其性能.

●mod_php 用来做web服务器PHP脚本的简单集成, 它在Apache进程中嵌入了PHP解释器. 它强制Apache子进程使用更多的内存,并且只能在Apache上使用,但是仍然很流行.


23. Mod_evasive是什么?

答案 : 它是一个保护你的web服务器不受像DDOS之类的web攻击的第三方模块,因为它一次只执行一个任务,所有执行得很不错.

24. httpd.conf文件中的Loglevel调试是什么?

答案 : 在Loglevel Debug 选项的帮助下, 我们可以在错误日志中获取或者记录更多的信息,以帮助我们调试问题.


25. mod_ssl 有什么用以及SSL在Apache中如何工作?

答案 :Mod_ssl 是一个Apache模块, 它使Apache可以在一个安全的加密环境中建立连接和传输数据。 使用SSL证书,所有的登录信息和其他重要的保密信息都会以加密的方式在Internet上进行传输,这会防止我们的数据被窃取或IP欺骗。

怎样在Apache中使用SSL

每当https请求到达,Apache都会执行以下三步:

●Apache生成它的私钥并且将私钥转换为.CSR 文件 (证书签发请求).

●然后Apache发送 .csr 文件给 CA (证书管理中心).

●CA 收到.csr 文件 并转换为 .crt (证书) 然后再发回给Apache 来完成https连接请求.

这就是目前被面试官问到的最流行的25的问题, 请在下面评论部分分享你最近面试被问到的面试问题来帮助其他其他面试者。

本文来自:开源中国社区

原文链接:http://t.cn/8FnLEsf


相关阅读推荐(输入前面的编号可以查看全文)

1   10位顶级PHP大师的开发原则

16  百万级访问量网站的技术准备工作

18  一篇学习 HTTP 状态码的神文

52  MySQL与PostgreSQL:该选择哪个开源数据库?哪一个更好?

91  从登录框看前端

【码农社区】提问题、找资料、发招聘...

点击程序猿微信的自定义菜单进入

——————————————————

本文编号139,以后想阅读这篇文章直接输入139即可。

●输入201402可以获得2014年2月份阅读量最多的10篇文章目录;

●输入201401可以获得2014年1月份阅读量最多的10篇文章目录;

●输入2013可以获得2013年阅读量最多的10篇文章目录;

●输入m可以获取到全部文章目录

●输入z可以获取到编程学习资料

程序猿微信公众号:imkuqin,为程序员提供最新最全的编程学习资料的查询。目前已经开通PHP、C/C++函数库、.NET Framework类库、J2SE API、Objective-C Reference、Python函数库、Lua函数库查询功能。

如果你觉得程序猿公众微信对你有帮助,请点击右上角“...”标志分享到【朋友圈】,感谢您对小猿的支持!

在微信搜索“程序猿”或者“imkuqin”可订阅程序猿微信。

—————————————————

转载于:https://my.oschina.net/Yamazaki/blog/221656

关于Apache的25个初中级面试题相关推荐

  1. 资源 | 25个机器学习面试题,期待你来解答

    资源 | 25个机器学习面试题,期待你来解答 https://www.cnblogs.com/DicksonJYL/p/9596057.html 选自Medium 机器之心编译 参与:Geek AI. ...

  2. 9.25 360校招面试题总结? 自己面试 c++后端开发,服务器方向,探索部门。

    2018.9.25 360校招面试题总结?   自己面试  c++后端开发,服务器方向,探索部门. 1上来问智力题       5L和6L的杯子量出3L的水,如何量? 一.下面开始问c++的基础的东西 ...

  3. python面试题_面试时全对这25道python面试题,成就了我月薪25K!附教程分享)

    之前面试的时候,面试官拿出一些python面试题对我说,只要全部正确直接给我20K,我一看题目笑了,居然全部都会,今天拿出来给大家分享一下~ 面试时全对这25道python面试题,成就了我月薪20K! ...

  4. Java初中级面试题大全

    Java初中级面试题 一.请说出作用域 public, private, protected,以及不写时的区别 回答:这四个作用域的可见范围如下表所示. 说明:如果在修饰的元素上面没有写任何访问修饰符 ...

  5. .NET 初中级面试题

    .NET 初中级面试题 一 二 三 四 五 六 一 有没有做过数据库表设计?现场模拟设计"用户权限"需要的表及其结构: 设计模式有没有了解过?你用过哪些?说一下工厂模式: 说一下什 ...

  6. 2020年3月25日阿里笔试题

    2020年3月25日阿里笔试题 题目描述一 python代码 题目描述二 求公差的python代码 处理上述情况的代码   仿佛人生总有一种魔咒,自己做的这场笔试题永远是最难的.不过今天的笔试题,真的 ...

  7. 你应该知道的25道Javascript面试题

    题目来自 25 Essential JavaScript Interview Questions.闲来无事,正好切一下. 一 What is a potential pitfall with usin ...

  8. 【10月最新】必问的25道mybatis面试题,都会的话你也可以去大厂

    目录 1.#{}和${}的区别是什么? 2.Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签? 3.最佳实践中,通常一个Xml映射文件,都会写一个 ...

  9. PHP初中级面试题收集

    php面试题: isset和empty,单双引号的区别 1. empty() 函数用于检查一个变量是否为空.当一个变量并不存在,或者它的值等同于 FALSE, 那么它会被认为不存在.如果变量不存在的话 ...

  10. (25)FPGA面试题5分频器

    1.1 FPGA面试题5分频器 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题5分频器: 5)结束语. 1.1.2 本节引言 "不积跬步,无以至 ...

最新文章

  1. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/
  2. MySQL_多表链接查询
  3. Android中样式及主题
  4. python按某列拆分excel表格_python带格式拆分excel表单,copy库完美搞定
  5. spring boot(十五)spring boot+thymeleaf+jpa增删改查示例
  6. Android插件框架VirtualAPK学习和使用
  7. 计算机在金属材料中的应用论文,浅谈金属材料在汽车轻量化中的应用论文
  8. 基于python的新闻发布系统
  9. 生产排程遇难题?APS系统来解决
  10. 全志linux视频硬解码,全志V316超清4K视频编解码芯片处理器介绍
  11. 奇异值分解(SVD)
  12. navicat如何粘贴多行数据
  13. OEE Worksheet
  14. python 爬取种子_Python爬虫框架Scrapy 学习笔记 2 ----- 爬取Mininova网站种子文件信息...
  15. google 文档翻译 html,快速将整篇中文文档翻译成全英文(史上最全总结)
  16. Excel-RANK函数排名与拓展
  17. 中国农业会计杂志中国农业会计杂志社中国农业会计编辑部2022年第12期目录
  18. 找出N个元素的数组中最大的K个数
  19. Git--建立和解除与远程仓库的关联
  20. 小程序滑动点击切换中间大图两边小图

热门文章

  1. 【MyBean调试笔记】接口的使用和清理
  2. Android学习笔记(十一)——从意图返回结果
  3. [文摘20070816]家(周国平)
  4. 编译器错误信息: CS1010: 常数中有换行符
  5. maven的Lifecycle生命周期
  6. java-weixin-tools接入微信
  7. python之模块随笔记-os
  8. RequireJS进阶(一)
  9. Activity及Dialog的全透明
  10. 2019.01.01洛谷 P4725/P4726 多项式对数/指数函数(牛顿迭代)