2014-04-03 程序猿 php
本文涵盖了25个有趣的Apache工做面试中会提出的问题,并附带有它们的答案,所以你能够方便的理解也许你以前历来没有见到过的一些有关于Apache的新事物. html
在你开始阅读这篇文章以前,咱们强烈建议你不要去死记硬背,万事首先都要尝试去放在实际场景中理解. 前端
答案 : Apache web 服务器 HTTP 是一个很是流行、功能强大而且开源,用于管理web站点并向网络提供web文件服务. 它基于 HTTP 超文本传输协议运行, 这一协议提供了服务器和客户端web浏览器通讯的标准. 它支持 SSL, CGI 文件, 虚拟主机还有许多其它的功能特性. 程序员
答案 : 首先,使用rpm命令来检查Apache是否已经安装. 若是已经安装好了,那就使用httpd -v 命令来姜茶它的版本. web
[root@tecmint ~]# rpm -qa | grep httpd httpd-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 -v Server version: Apache/2.2.15 (Unix) Server built: Aug 13 2013 17:27:11
答案 : Apache 以“nobody”用户和httpd守护进程运行. Apache 主要的配置文件在: /etc/httpd/conf/httpd.conf (CentOS/RHEL/Fedora) 还有 /etc/apache2.conf (Ubuntu/Debian). 面试
答案 : Apache 默认在80端口侦听http,在443端口侦听https(须要SSL整数). 你也可使用 netstat 命令 来检查端口. 数据库
[root@tecmint ~]# netstat -antp | grep http tcp 0 0 :::80 :::* LISTEN 1076/httpd tcp 0 0 :::443 :::* LISTEN 1076/httpd
答案 : 很简单, 你可使用任何诸如(RHEL/CentOS/Fedora)上的yum以及(Debian/Ubuntu)上的apt-get来在你的Linux上安装Apache服务器. apache
[root@tecmint ~]# yum install httpd
[root@tecmint ~]# apt-get install apache2
答案: 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
答案 : 不能够,它不能够被TCP封装器固定下来,由于它不支持Linux的libwrap.a库. centos
答案 : 在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 8080 OR Listen 172.16.16.1:8080
保存文件并重启web服务器.
[root@tecmint ~]# service httpd restart [root@tecmint ~]# service apache2 restart
答案 : 能够,咱们在一台Linux机器上同时运行两个不一样的Apache服务器, 但条件是它们应该在不一样的端口上侦听,而咱们可使用Apache的Listen指令来改变端口.
答案 : DocumentRoot 的 Apache 意思是服务器上web文件的存储位置, 默认的DocumentRoot是 /var/www/html 或者 /var/www. 这是能够被修改的,只要修改主机中的虚拟主机配置 “DocumentRoot”就好了.
答案 : 是的,这能够借助于主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 映射.
答案 : 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
答案 : 若是站点根目录中的主index文件失效, 那么Apache将会在浏览器上列出全部内容相似的文件,以替换站点主页.
为了关闭Apache目录列表, 你能够在主配置文件中全局的设置,或者在.htaccess文件中部分的设置以下规则.
<Directory /var/www/html> Options -Indexes </Directory>
答案 : Apache Web 服务器的默认日志文件是访问日志 “/var/log/httpd/access_log” 和错误日志:/var/log/httpd/error_log”.
答案 : 当服务器正在向请求提供服务时终端用户中断链接, 咱们就会在错误日志中看到“connection reset by peer“.
答案 : 虚拟主机部分包含的信息包括站点名称,文档根路径,目录索引,服务器管理员邮箱,错误日志文件路径等等。
你能够随意为你的域添加你须要的指令,可是要运行一个站点,至少要配置量个参数服务器名称和文档根目录。 在Linux机器上,一般咱们在httpd.conf文件的末尾来设定咱们的虚拟主机部分的相关配置。
<VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /www/docs/dummy-host.example.com ServerName dummy-host.example.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost>
●ServerAdmin : 一般是指站点拥有者的电子邮箱,错误和通知能够发到里面。
●DocumentRoot : web文件在服务器上存放位置(必须配置).
●ServerName : 经过浏览器访问站点时的域名(必须配置).
●ErrorLog : 日志文件的位置,里面记录了全部与该站点相关的日志。
答案 :
●<Location> 是用来设定和URL/ web服务器的地址栏相关的元素的。
●<Directory> 是指服务器上某对象在文件系统中的位置
答案 :Apache虚拟托管是指,在单个web服务器上托管多个web站点。Apache 能够设定两种类型的虚拟主机:基于名称的虚拟托管和基于IP的虚拟主机托管。
答案 : MPM意思是Multi Processing Modules,其实是指Apache遵循的一些机制,用来接受和完成对web服务器的请求。
答案 :它们都是MPM, Worker 和 prefork 有它们各自在Apache上的运行机制. 它们彻底依赖于你想要以哪种模式启动你的Apache.
●Worker 和 MPM基本的区别在于它们产生子进程的处理过程. 在Prefork MPM中, 一个主httpd进行被启动,这个主进程会管理全部其它子进程为客户端请求提供服务. 而在worker MPM中一个httpd进程被激活,则会使用不一样的线程来为客户端请求提供服务.
●Prefork MPM 使用多个子进程,每个进程带有一个线程而 worker MPM 使用多个子进程,每个进程带有多个线程.
●Prefork MPM中的链接处理, 每个进程一次处理一个链接而在Worker mpm中每个线程一次处理一个链接.
●内存占用 Prefork MPM 占用庞大的内存, 而Worker占用更小的内存.
答案 : LimitRequestBody 指令被用来在上传大小上作一个限制.
例如: 我想要在 /var/www/html/tecmin/uploads目录中加入 100000 字节的限制. 那么你就须要在Apache配置文件中加入下面的指令.
<Directory "/var/www/html/tecmint/uploads"> LimitRequestBody 100000 </Directory>
答案 :
●mod_perl 是一个随同Apache一块儿编译的Apache模块,用来作Perl脚本的简单集成并提高其性能.
●mod_php 用来作web服务器PHP脚本的简单集成, 它在Apache进程中嵌入了PHP解释器. 它强制Apache子进程使用更多的内存,而且只能在Apache上使用,可是仍然很流行.
答案 : 它是一个保护你的web服务器不受像DDOS之类的web攻击的第三方模块,由于它一次只执行一个任务,全部执行得很不错.
答案 : 在Loglevel Debug 选项的帮助下, 咱们能够在错误日志中获取或者记录更多的信息,以帮助咱们调试问题.
答案 :Mod_ssl 是一个Apache模块, 它使Apache能够在一个安全的加密环境中创建链接和传输数据。 使用SSL证书,全部的登陆信息和其余重要的保密信息都会以加密的方式在Internet上进行传输,这会防止咱们的数据被窃取或IP欺骗。
每当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”可订阅程序猿微信。
—————————————————