① apache到底是什么
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。
Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
② 详细全面介绍什么是 Apache服务器
Apache,一种开放源码的HTTP服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性(注1)被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,Perl/Python等解释器可被编译到服务器中。
历史
Apache
起初由 Illinois 大学 Urbana-Champaign 的国家高级计算程序中心开发。此后,Apache
被开放源代码团体的成员不断的发展和加强。Apache
服务器拥有牢靠可信的美誉,已用在超过半数的因特网站中-特别是几乎所有最热门和访问量最大的网站。
开始,Apache只是Netscape网页服务器(现在是Sun
ONE)的之外的开放源代码选择。渐渐的,它开始在功能和速度。超越其他的基于Unix的HTTP服务器。1996年4月以来,Apache一直是
Internet上最流行的HTTP服务器: 1999年5月它在 57% 的网页服务器上运行;到了2005年7月这个比例上升到了69%。
作
者宣称因为这个名字好记才在最初选择它,但是流传最广的解释是(也是最显而易见的):这个名字来自这么一个事实:当Apache在1995年初开发的时
候,它是由当时最流行的HTTP服务器NCSA HTTPd 1.3 的代码修改而成的,因此是“一个修补的(a
patchy)”服务器。然而在服务器官方网站的FAQ中是这么解释的:“‘Apache’这个名字是为了纪念名为Apache(印地语)的美洲印第安人
土着的一支,众所周知他们拥有高超的作战策略和无穷的耐性”。无论怎么样,Apache 2.x 分支不包含任何 NCSA 的代码。
特性
Apache
支持许多特性,大部分通过编译的模块实现。这些特性从服务器端的编程语言支持到身份认证方案。一些通用的语言接口支持Perl,Python, Tcl,
和 php。流行的认证模块包括 mod_access, mod_auth 和 mod_digest。其他的例子有 SSL 和 TLS 支持
(mod_ssl), proxy 模块,很有用的URL重写(由 mod_rewrite 实现),定制日志文件
(mod_log_config),以及过滤支持(mod_include 和
mod_ext_filter)。Apache日志可以通过网页浏览器使用免费的脚本AWStats或Visitors来进行分析。
2.x版本
Apache 的2.x版本核心在Apache 1.x版本之上作出了重要的加强。这包括:线程,更好的支持非UNIX平台(例如Windows),新的 Apache API,以及IPv6支持。
评价
《PC Magazine》2004年8月评出了近30年以来的10款最佳软件产品。
他们其中或者是有过最辉煌的历史,或者是最具创意。其对apache的评价是:第三名:Apache(阿帕奇,1995年推出)Apache目前已经演变
成了“LAMP”,即linux、Apache、MySQL和PHP的联合体。这是一个开放源代码软件项目,已经对微软的“.NET”战略构成严重威胁。
尤其是Apache网络服务器,让用户充分体验到开发源码软件的稳定性、可靠性和可定制性。
Apple.com评价apache时
说:Apache是服务器软件始终不断进化的大块部件,它免费但又是无价之宝。Apache
是在资源开放运动中出现的绝对珍品,因为不属于个人专利而是对公共免费。一旦拥有这些源码,程序员能够自由完成所想——能在其它程序员接替工作时被赋予同
样的权限来改变和修改自己的源代码。
注释
尽管不断有新的漏洞被发现,但由于其OpenSource的特点,漏洞总能被很快修补。因此总的来说,其安全性还是相当高的。
() [#page_#][#page_#]AddHandler cgi-script .cgi
AddHandler server-parsed .shtml
Sethandler cgi-script
AddHandler定义了何种扩展名用那一个字符串进行描述.
SetHandler把一个目录下的文件都指定用这一个字符串描述.
我在这里提到的命令都是与其结构密切相关的. Handler和Type的关系在下面会描述的. 许多的东东从外面是看不清楚的, 下面, 我们从里面看.
三 程序的基本结构
-----------------
Apache有非常好的跨平台性. 为了实现这一目标和简化模块编写者的负担,Apache完成了许多基本的功能如IO, 内存分配等, 这些接口都是与具体平台无关的. 还有一些很有用的例程如: hash table, array 等. 在整个体系中, Apache有一个基本点, 它尽可能的使用简单的结构和算法, 这不仅易于理解和维护, 还提高了它的稳定性.
在
UNIX系统上, Apache采用了多进程模型, 在Window上采用了多线程模型.多进程模型中, 其子进程处理客户请求,
父进程用于管理子进程. 当系统过载时父进程会再启动几个子进程, 当系统空闲时, 父进程会杀掉几个子进程.
子进程的数目在"MinSpareServers"和"MaxSpareServers"之间. 而且, 每个子进程处理的请求个数也是有限制的,
这可以解决诸如内存泄漏等问题. 所有的进程状态都被记录在share memory中. 由于每个进程的状态记录在其中的一小块内存上,
它通常也只读写这一块内存, 因此, Apache没有使用什么同步机制.
在Richard Steve的书上说到的几种多进程服务器模型, Apache都使用了,在不同的系统上根据其特点选择使用不同的方法:
1. accept :
在accept处阻塞, 只有在accept是在内核级实现的才行.
2. select :
在select处阻塞.
3. mutex/lock_file :
使用mutex或lock_file来进行对accpet进行互斥.
三
种方法都要求进行阻塞, 区别在于阻塞与不同的地方. 前两种方法都会由所谓的巨群问题: 多个阻塞在同一个资源上的进程被同时唤醒引发再次竞争.
不过, 按Richard Steve 的评测, 第一种方法最快, 第二种其次, 第三种最慢. 其实, 在linux上第三种方法也会有巨群问题.
Apache虽然并不强调性能, 这并不意味着他们不重视性能. 而是Apache认为在Server端realiable才是第一位的. 但Apache的性能还是不错的.
③ apache kafka源码怎么编译
Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.(Kafka是一个分布式的、可分区的(partitioned)、基于备份的(replicated)和commit-log存储的服务.。它提供了类似于messaging system的特性,但是在设计实现上完全不同)。kafka是一种高吞吐量的分布式发布订阅消息系统,它有如下特性:
(1)、通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
(2)、高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数十万的消息。
(3)、支持通过kafka服务器和消费机集群来分区消息。
(4)、支持Hadoop并行数据加载。
一、用Kafka里面自带的脚本进行编译
下载好了Kafka源码,里面自带了一个gradlew的脚本,我们可以利用这个编译Kafka源码:
1 # wget http://mirror.bit.e.cn/apache/kafka/0.8.1.1/kafka-0.8.1.1-src.tgz
2 # tar -zxf kafka-0.8.1.1-src.tgz
3 # cd kafka-0.8.1.1-src
4 # ./gradlew releaseTarGz
运行上面的命令进行编译将会出现以下的异常信息:
01 :core:signArchives FAILED
02
03 FAILURE: Build failed with an exception.
04
05 * What went wrong:
06 Execution failed for task ':core:signArchives'.
07 > Cannot perform signing task ':core:signArchives' because it
08 has no configured signatory
09
10 * Try:
11 Run with --stacktrace option to get the stack trace. Run with
12 --info or --debug option to get more log output.
13
14 BUILD FAILED
这是一个bug(https://issues.apache.org/jira/browse/KAFKA-1297),可以用下面的命令进行编译
1 ./gradlew releaseTarGzAll -x signArchives
这时候将会编译成功(在编译的过程中将会出现很多的)。在编译的过程中,我们也可以指定对应的Scala版本进行编译:
1 ./gradlew -PscalaVersion=2.10.3 releaseTarGz -x signArchives
编译完之后将会在core/build/distributions/里面生成kafka_2.10-0.8.1.1.tgz文件,这个和从网上下载的一样,可以直接用。
二、利用sbt进行编译
我们同样可以用sbt来编译Kafka,步骤如下:
01 # git clone https://git-wip-us.apache.org/repos/asf/kafka.git
02 # cd kafka
03 # git checkout -b 0.8 remotes/origin/0.8
04 # ./sbt update
05 [info] [SUCCESSFUL ] org.eclipse.jdt#core;3.1.1!core.jar (2243ms)
06 [info] downloading http://repo1.maven.org/maven2/ant/ant/1.6.5/ant-1.6.5.jar ...
07 [info] [SUCCESSFUL ] ant#ant;1.6.5!ant.jar (1150ms)
08 [info] Done updating.
09 [info] Resolving org.apache.hadoop#hadoop-core;0.20.2 ...
10 [info] Done updating.
11 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
12 [info] Done updating.
13 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
14 [info] Done updating.
15 [success] Total time: 168 s, completed Jun 18, 2014 6:51:38 PM
16
17 # ./sbt package
18 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
19 Getting Scala 2.8.0 ...
20 :: retrieving :: org.scala-sbt#boot-scala
21 confs: [default]
22 3 artifacts copied, 0 already retrieved (14544kB/27ms)
23 [success] Total time: 1 s, completed Jun 18, 2014 6:52:37 PM
对于Kafka 0.8及以上版本还需要运行以下的命令:
01 # ./sbt assembly-package-dependency
02 [info] Loading project definition from /export1/spark/kafka/project
03 [warn] Multiple resolvers having different access mechanism configured with
04 same name 'sbt-plugin-releases'. To avoid conflict, Remove plicate project
05 resolvers (`resolvers`) or rename publishing resolver (`publishTo`).
06 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
07 [warn] Credentials file /home/wyp/.m2/.credentials does not exist
08 [info] Including slf4j-api-1.7.2.jar
09 [info] Including metrics-annotation-2.2.0.jar
10 [info] Including scala-compiler.jar
11 [info] Including scala-library.jar
12 [info] Including slf4j-simple-1.6.4.jar
13 [info] Including metrics-core-2.2.0.jar
14 [info] Including snappy-java-1.0.4.1.jar
15 [info] Including zookeeper-3.3.4.jar
16 [info] Including log4j-1.2.15.jar
17 [info] Including zkclient-0.3.jar
18 [info] Including jopt-simple-3.2.jar
19 [warn] Merging 'META-INF/NOTICE' with strategy 'rename'
20 [warn] Merging 'org/xerial/snappy/native/README' with strategy 'rename'
21 [warn] Merging 'META-INF/maven/org.xerial.snappy/snappy-java/LICENSE'
22 with strategy 'rename'
23 [warn] Merging 'LICENSE.txt' with strategy 'rename'
24 [warn] Merging 'META-INF/LICENSE' with strategy 'rename'
25 [warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
26 [warn] Strategy 'discard' was applied to a file
27 [warn] Strategy 'rename' was applied to 5 files
28 [success] Total time: 3 s, completed Jun 18, 2014 6:53:41 PM
当然,我们也可以在sbt里面指定scala的版本:
01 <!--
02 User: 过往记忆
03 Date: 14-6-18
04 Time: 20:20
05 bolg: http://www.iteblog.com
06 本文地址:http://www.iteblog.com/archives/1044
07 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货
08 过往记忆博客微信公共帐号:iteblog_hadoop
09 -->
10 sbt "++2.10.3 update"
11 sbt "++2.10.3 package"
12 sbt "++2.10.3 assembly-package-dependency"
④ Apache+PHP+MySQL是什么
pache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。
它可以运行在几乎所有广泛使用的计算机平台上。
Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多着名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
Apacheweb服务器软件拥有以下特性:
Apache Server配置界面
1.支持最新的HTTP/1.1通信协议
2.拥有简单而强有力的基于文件的配置过程
3.支持通用网关接口
4.支持基于IP和基于域名的虚拟主机
5.支持多种方式的HTTP认证
6.集成Perl处理模块
7.集成代理服务器模块
8.支持实时监视服务器状态和定制服务器日志
9.支持服务器端包含指令(SSI)
10.支持安全Socket层(SSL)
11.提供用户会话过程的跟踪
12.支持FastCGI
13.通过第三方模块可以支持JavaServlets
如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。
⑤ 服务器中apache(阿帕奇)是个什么软件,干嘛用的
APACHE就是一个网络服务器,这个服务器侦听一个TCP端口,一般是80,对端口收到的命令进行解释,然后提交一些结果。APACHE解释的最主要的命令就是GET和POST,一般对应客户端在浏览器输入地址、浏览器里面点击链接和提交一个表单。APACHE对GET和POST命令进行解释的时候,如果GET和POST的对象是一个HTML、CSS、JS、RAR、TXT等一般文件,就直接把文件的内容发回客户端;如果对象是一个PHP文件,APACHE就启用PHP.EXE程序(UNIX上名称不一样,而且安装为模块的细节又有不同,这里只是举例),把文件、调用的参数传递给PHP.EXE,然后把PHP.EXE执行的结果反馈给客户端。
PHP可以调用各种库执行各类功能,最典型的就是查询数据库。PHP.EXE解释执行PHP文本文件里面的语句,执行前一般不翻译,就象批处理一样。
APACHE可以配置多个类似PHP这样的过滤器,凡是XXX类的文件,都提交给XXX.EXE执行,把执行完毕的内容发送给浏览器,其它文件直接发送。APACHE就这么简单的、机械的执行。
⑥ 怎样区别APACHE动态和静态编译
关于apache的动态与静态编译的理解,引用某人的比喻如下:
好比有两个人a和m,a代表apache,m代表mole,要想让a使用m的东西,一个方法是把m的东西都放到a那里去,a使用的时候就是现成的了,就是所谓的静态编译
还有一个方法,就是告诉a,m的住址,当a要使用m的东西的时候,a去找m,然后使用,不过,这种方法要注意的一个问题就是:m必须要有实际的住址,否则a会找不到m而产生错误的,这种方法也就是apache 的动态(DSO)编译了。
下面说说在apache1.3和apache2.0动态与静态编译编译的区别
首先是apache1.3.29+php4.3.4+mysql4.0.13的静态编译
apache第一次编译,并不要安装,因为php的编译需要apache至少已经编译过一次
tar zvxf apache_1.3.27.tar.gz
cd apache_1.3.27
./configure --prefix=/usr/local/apache
编译php
tar zvxf php4.3.4.tar.gz
cd php4.3.4
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apache=../apache_1.3.27
make
make install
第二次编译安装apache:
cd ../apache_1.3.29
./configure --prefi=/usr/local/apache --activate-mole=src/moles/php4/libphp4.a
make
make install
cp ../php4.3.4/php.ini.dist /usr/local/php/lib/php.ini
修改/usr/local/apache/conf/httpd.conf
查找<IfMole mod_mime.c>
在此范围添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
注意:apache和php的源码包在同一个目录,--with-apache=../apache_1.3.27是指向源码解压的目录
ok!静态编译完成。
再看DSO动态编译方法:
首先编译安装apache
tar zvxf apache_1.3.29
cd apache_1.3.29
./configure --prefix=/usr/local/apache --enable-mole=so --enable-mole=rewrite --enable-shared=max
make
make install
so模块用来提供DSO支持的apachehe核心模块,rewrite是地址重写的模块,如果不需要可以不编译enable-shared=max是指除了so以外的所有标准模块都编译成DSO模块。
然后编译php
tar zvxf php4.3.4.tar.gz
cd php4.3.2
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs
make
make install
然后修改httpd.conf,方法同静态编译的方法
OK,DSO动态编译就完成了!
接下来我们讲apache2.0.46+php4.3.2的动态编译方法
一样先编译安装apache
tar zvxf httpd-2.0.46.tar.gz
cd httpd-2.0.46
./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=most
make
make install
大家注意了--enable-so相当与1.3.27的--enable-mole=so,而--enable-mods-shared=most又等同与以前的--enable-shared=max
然后还是编译PHP
tar zvxf php4.3.2.tar.gz
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs
make
make install
注意这里是apxs2!!
修改httpd.conf与1.3.27也有所不同,大家寻找Add Type application/x-tar .tgz 在下面添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
另外要显示中文的话,请修改:
AddDefaultCharset gb2312