2014-03-04 16:36:01
来 源
IT技术网
Linux Apache配置
本文介绍Apache服务器入门教程,希望对于初学Apache服务器相关的朋友有帮助,更多Apache安装、配置、报错处理等资源请本站内搜索。

今天本来是想试一下GREENPLUM可写外部表的,结果发现服务器上没有APACHE服务,所以就变成了学习APACHE的过程了。

首先要下载一个APACHE,我是从下面的网址下载的,用的2.0.64版本

http://httpd.apache.org/download.cgi#apache20

然后就是常规步骤了

解压 gzip

解包 tar xvf

编译 configure --prefix=...

安装 make && make install

然后进入到在configure时指定的--prefix目录中,编辑conf目录下的httpd.conf配置文件

关于配置文件httpd.conf的详细说明可以参考下面的官方文档 ,我这里只简单列出几个

http://httpd.apache.org/docs/2.0/

#用户名和用户组       

User gpadmin1

Group gpadmin1

#服务器名称以及监听的端口号

ServerName 10.20.151.9:80

Listen 80       

#访问时的根路径

DocumentRoot "/home/gpadmin1/joe.wangh/apache/httpd_install/htdocs"

然后就可以启动了

[Intranet [email protected] /home/gpadmin1/joe.wangh/apache/httpd_install/htdocs]

#/home/gpadmin1/joe.wangh/apache/httpd_install/bin/httpd -f /home/gpadmin1/joe.wangh/apache/httpd_install/conf/httpd.conf -k start

[Intranet [email protected] /home/gpadmin1/joe.wangh/apache/httpd_install/htdocs]

#ps -ef |grep httpd

root      6561     1  0 17:25 ?        00:00:00 /home/gpadmin1/joe.wangh/apache/httpd_install/bin/httpd -f /home/gpadmin1/joe.wangh/apache/httpd_install/conf/httpd.conf -k start

gpadmin1  6563  6561  0 17:25 ?        00:00:00 /home/gpadmin1/joe.wangh/apache/httpd_install/bin/httpd -f /home/gpadmin1/joe.wangh/apache/httpd_install/conf/httpd.conf -k start

gpadmin1  6564  6561  0 17:25 ?        00:00:00 /home/gpadmin1/joe.wangh/apache/httpd_install/bin/httpd -f /home/gpadmin1/joe.wangh/apache/httpd_install/conf/httpd.conf -k start

gpadmin1  6565  6561  0 17:25 ?        00:00:00 /home/gpadmin1/joe.wangh/apache/httpd_install/bin/httpd -f /home/gpadmin1/joe.wangh/apache/httpd_install/conf/httpd.conf -k start

gpadmin1  6566  6561  0 17:25 ?        00:00:00 /home/gpadmin1/joe.wangh/apache/httpd_install/bin/httpd -f /home/gpadmin1/joe.wangh/apache/httpd_install/conf/httpd.conf -k start

gpadmin1  6567  6561  0 17:25 ?        00:00:00 /home/gpadmin1/joe.wangh/apache/httpd_install/bin/httpd -f /home/gpadmin1/joe.wangh/apache/httpd_install/conf/httpd.conf -k start

root      6569  3736  0 17:25 pts/5    00:00:00 grep httpd

这里我们看到多个HTTPD进程,其实是一个父进程多个子进程,关于这个子进程的数量可以使用下面几个参数来控制

###########################

MinSpareServers 5

MaxSpareServers 20

在使用子进程处理HTTP请求的Web服务器上,由于要首先生成子进程才能处理客户的请求,因此反应时间就有一点延迟。但是,Apache服务器使用了一个特殊技术来摆脱这个问题,这就是预先生成多个空余的子进程驻留在系统中,一旦有请求出现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。在运行中随着客户请求的增多,启动的子进程会随之增多,但这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。但是空余的子进程副本不能光增加不减少,太多的空余子进程没有处理任务,也占用服务器的处理能力,因此也要限制空余副本的数量,使其保持一个合适的数量,使得既能及时回应客户请求,又能减少不必要的进程数量。

因此就可以使用参数MinSpareServers来设置最少的空余子进程数量, 以及使用参数MaxSpareServers 来限制最多的空闲子进程数量,多余的服务器进程副本就会退出。根据服务器的实际情况来进行设置,如果服务器性能较高,并且也被频繁访问,就应该增大这两个参数的设置。对于高负载的专业网站,这两个值应该大致相同,并且等同于系统支持的最多服务器副本数量,也减少不必要的副本退出。

StartServers 8

StartServers参数就是用来设置httpd启动时启动的子进程副本数量,这个参数与上面定义的MinSpareServers和MaxSpareServers参数相关,都是用于启动空闲子进程以提高服务器的反应速度的。这个参数应该设置为前两个值之间的一个数值,小于MinSpareServers和大于MaxS pareServers都没有意义。 

###########################     

打开浏览器,输入如下地址就可以访问/home/gpadmin1/joe.wangh/apache/httpd_install/htdocs/index.html了

http://10.20.151.9/

同时,也可以使用wget命令从该服务器上下载文件

[Intranet [email protected] /home/gpadmin1/joe.wangh/apache/httpd_install]

#wget http://10.20.151.9/index.html

--16:45:47--  http://10.20.151.9/index.html

Connecting to 10.20.151.9:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 6738 (6.6K) [text/html]

Saving to: `index.html'

100%[===========================================================================================>] 6,738       --.-K/s   in 0s    

16:45:47 (584 MB/s) - `index.html' saved [6738/6738]

[Intranet [email protected] /home/gpadmin1/joe.wangh/apache/httpd_install]

#ll index.html

-rw-r--r-- 1 root root 6738 Jun 13 16:30 index.html

前面我们指定了参数DocumentRoot "/home/gpadmin1/joe.wangh/apache/httpd_install/htdocs",因此在后面的访问中都是把这个目录当作“根目录”,然后再访问其下层的目录内容,但有时我们可能需要把部分文件放置到不同的地方去,这可以通过使用软连接来实现。

下面我们举个简单的例子,在根目录下创建文件haha.txt,然后在参数DocumentRoot指定目录下创建一个软链接root到根目录,之后在wget命令中通过这个软链接来访问实际的根目录下文件

[Intranet [email protected] /home/gpadmin1/joe.wangh/apache/httpd_install/htdocs]

#cat /haha.txt

haha

[Intranet [email protected] /home/gpadmin1/joe.wangh/apache/httpd_install/htdocs]

#wget http://10.20.151.9/root/haha.txt

--19:10:18--  http://10.20.151.9/root/haha.txt

Connecting to 10.20.151.9:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 5 [text/plain]

Saving to: `haha.txt'

100%[===========================================================================================>] 5           --.-K/s   in 0s    

19:10:18 (1.19 MB/s) - `haha.txt' saved [5/5]

这里已经成功的把根目录下的文件haha.txt拉到当前目录下了

[Intranet [email protected] /home/gpadmin1/joe.wangh/apache/httpd_install/htdocs]

#cat haha.txt

haha

有时在生产环境上不可能开放所有端口对外提供访问,比如只开放80端口对外提供访问,可是你有其他的程序想要通过WEB界面来进行一些监控,比如HADOOP的NAMENODE和JOBTRACKER的监控页面,这些程序使用80外的其他端口,这时如果仍要在WEB界面进行访问,就需要在APACHE的配置文件里做一些端口映射转换了。

在/home/gpadmin1/joe.wangh/apache/httpd_install/conf目录下的httpd.conf配置文件中增加如下几行

RewriteEngine on

RewriteLog logs/rewrite.log

RewriteRule  ^/job/(.*)            http://10.20.151.9:50030/$1?%{query_string} [L,P]

RewriteRule  ^/dfs/(.*)           http://10.20.151.9:50070/$1?%{query_string} [L,P]

重启APACHE服务使新的配置生效

[Intranet [email protected] /root]

#/home/gpadmin1/joe.wangh/apache/httpd_install/bin/httpd -f /home/gpadmin1/joe.wangh/apache/httpd_install/conf/httpd.conf -k restart

[Intranet [email protected] /root]

#

这时通过浏览器访问如下链接

http://10.20.151.9/dfs/dfshealth.jsp

就相当于访问

http://10.20.151.9:50070/dfshealth.jsp

另外,有的朋友可能在使用非root账户启动APACHE时会报错

[[email protected] htdocs]$ /home/gpadmin1/joe.wangh/apache/httpd_install/bin/httpd -f /home/gpadmin1/joe.wangh/apache/httpd_install/conf/httpd.conf -k start 

(13)Permission denied: make_sock: could not bind to address [::]:80

no listening sockets available, shutting down

Unable to open logs

使用如下语句解决即可

chmod u+s httpd

chown root:root httpd

最后一点需要说明的是,有时候我们可能需要对访问一些目录权限进行控制。下面我举一个简单的例子,假设我们对在WEB中浏览/home/gpadmin1/joe.wangh/apache/httpd_install/htdocs/autest/目录时进行权限控制,需要输入用户名和密码

1、要生成一个密码文件

[[email protected] bin]$ ./htpasswd -bc .htpasswdtest joe joe

Adding password for user joe

2、把生成的密码文件./htpasswd拷贝到目录/home/gpadmin1/joe.wangh/apache/httpd_install/htdocs/autest/下

3、在/home/gpadmin1/joe.wangh/apache/httpd_install/htdocs/autest/下创建.htaccess文件,内容如下

AuthName "RTDC"

AuthType Basic

AuthUserFile /home/gpadmin1/joe.wangh/apache/httpd_install/htdocs/autest/.htpasswdtest

require valid-user

OK了,这时我们在WEB中输入如下地址访问,就会提示我们输入密码了

http://10.20.151.9/autest/

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。