安装Apache
一、安装apache(http服务)
1. 从apache.org下载源码安装包
2. 解压缩
# tar zxf httpd-2.2.4.tar.gz
# cd httpd-2.2.4
3. 安装apache依赖包apr和apr-util,他们都在srclib目录中
3.1 安装apr
# cd srclib/apr
# ./configure --prefix=/usr/local/apr
# make
# make install
3.2 安装apr-util
# cd ../apr-util
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install
4.安装httpd
# cd ../../
# ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-rewrite
# make
# make install
--enable-so 支持DSO模式(动态模块加载方式)
--enable-rewrite 支持rewrite(地址重定向)
启动
#/usr/local/httpd/bin/apachectl start
停止
#/usr/local/httpd/ bin/apachectl stop
查看服务
#ps aux|grep httpd
启动apache遇到错误:httpd: Could not reliably determine the server's fully qualified domain name
# cd /usr/local/httpd/conf
编辑httpd.conf文件,搜索"#ServerName", 添加ServerName localhost:80
[root@server conf]# vim httpd.conf
#ServerName www.example.com:80
ServerName localhost:80
Apache默认发布路径在httpd.conf中可以找到:
等这些都装完后,打开浏览器,输入你安装apache所在的服务器地址,看起来像这个样子:
http://192.168.1.3/
如果页面显示如下:
It works!
恭喜你,apache安装成功了
也可以使用yum来安装,便捷快速-_-
注意:默认防火墙是开启禁止80端口访问的,要开放80端口或者关闭防火墙。
也可启用80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save
service iptables restart
也可以再<Directory /> 节点发布项目 比如:
<Directory "/var/www/htm/test/WebContent">
Httpd配置:
#vi /usr/local/httpd-2.2.9/conf/httpd.conf
限制IP访问:找到发布目录信息节点:
<Directory"/usr/local/httpd-2.2.9/htdocs">
#
# Possiblevalues for the Options directive are "None", "All",
# or anycombination of:
# IndexesIncludes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that"MultiViews" must be named *explicitly* --- "Options All"
# doesn't giveit to you.
#
# The Optionsdirective is both complicated and important. Please see
#http://httpd.apache.org/docs/2.2/mod/core.html#options
# for moreinformation.
#
Options IndexesFollowSymLinks
# AllowOverridecontrols what directives may be placed in .htaccess files.
# It can be"All", "None", or any combination of the keywords:
# OptionsFileInfo AuthConfig Limit
AllowOverrideNone
#
# Controls whocan get stuff from this server.
Order allow,deny
# 默认不限制IP访问[all]
#Allow from all
# 只允许0.20、0.151 二台服务器访问该Web服务
Allow from 192.168.0.20 192.168.0.151
</Directory>
参考:http://man.ddvip.com/soft/apache2.0/
注意:安装好httpd不是系统服务,不可以通过service httpd status来查看和启动,需要把httpd服务添加进系统服务:将启动脚本放置在/etc/init.d下,可以参考该目录下的其他启动脚本实现。
也可以简单的实现:
# cp /usr/local/httpd/bin/apachectl /etc/rc.d/init.d/httpd
然后 vi /etc/rc.d/init.d/httpd 添加(# !/bin/sh下面)
# chkconfig: 2345 50 90
# description: Activates/Deactivates Apache Web Server
保存退出
最后,运行chkconfig把Apache添加到系统的启动服务组里面:
# chkconfig --add httpd
# chkconfig httpd on
然后再service httpd start|stop
apache2 二级域名设置(此设置为多个能被Apache解析的服务,如php)
1.要拥有一个有泛域名解析的顶级域名,例如:abc.com
在dns服务上设置,域名服务商都提供此服务:
www.abc.com 指向服务器IP
abc.com 指向服务器IP
a.abc.com 指向服务器IP
设置完成后,分别
ping www.abc.com;ping abc.com;ping a.abc.com。
如果返回的ip地址都是服务器IP,说明域名解析已经成功。
打开http.conf文件的Include "conf/extra/httpd-vhosts.conf"
修改http.conf,或者修改httpd-vhosts.conf(建议修改此文件)文件修改内容如下:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin admin@abc.com
DocumentRoot "C:\xampp\htdocs\www"
ServerName abc.com
ServerAlias www.abc.com
ErrorLog "C:\xampp\apache\logs\abc.localhost-error.log"
CustomLog "C:\xampp\apache\logs\abc.localhost.access.log" combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@abc.com
DocumentRoot "C:\xampp\htdocs\a"
ServerName a.abc.com
ErrorLog "C:\xampp\apache\logs\a.abc.localhost-error.log"
CustomLog "C:\xampp\apache\logs\a.abc.localhost.access.log" combined
</VirtualHost>
第一段是www.abc.com
第一段是a.abc.com
各个参数含义说明
ServerAdmin 管理员邮箱
DocumentRoot 所需指向路径
ServerName 域名名称
ServerAlias 域名别名 可要可不要
ErrorLog 错误日志
CustomLog 访问日志
Apache和tomcat的区别:
tomcat是一个应用(Java)服务器, 它只是一个servlet(jsp也翻译成servlet)的容器, 可以解析html但效率远没有apache高; apache(httpd)是一个静态web服务器,就如同windows平台的IIS,在加载一些模块后可以解析phpperl等脚本apache, 可以认为是apache的扩展,但是可以独立于apache运行。 换句话说,apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),而这个桶也可以不放在卡车上。
一般使用Apache + Tomcat的话,Apache只是作为一个转发,对JSP的处理是由Tomcat来处理的。
Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
Apache是用来提供服务的,以及相关配置的(例如虚拟主机、URL转发等等)
Tomcat是Apache组织在符合JavaEE的JSP、Servlet标准下开发的一个JSP服务器.
整合的好处:
◆如果客户端请求的是静态页面,则只需要Apache服务器响应请求。
◆如果客户端请求动态页面,则是Tomcat服务器响应请求。
◆因为JSP是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。
Apache+tomcat整合,不同项目使用子域名来访问
安装 Tomcat Connectors(mod_jk)
下载地址:http://tomcat.apache.org/download-connectors.cgi
建议下载 1.2 最新稳定版
安装过程如下:
1
2
3
4
5
6
|
tar zxvf tomcat-connectors-1.2.40-src. tar .gz
cd tomcat-connectors-1.2.40-src/
cd native/
. /configure --with-apxs= /usr/local/httpd/bin/apxs
make
make install
|
在 configure 时,需指定 apxs 的路径
安装完毕后,将在 httpd的 modules 目录下生成一份 mod_jk.so 文件
修改 httpd.conf 文件
引入mod_js.so文件:LoadModule jk_module modules/mod_jk.so
开启虚拟机配置
|
配置 httpd-jk.conf 文件
|
配置 workers.properties 文件
#workers.tomcat_home=/home/apache-tomcat-cms
#workers.java_home=/java/jdk1.7.0_25
worker.list=tomcat-cms
worker.tomcat-cms.type=ajp13
worker.tomcat-cms.host=localhost
worker.tomcat-cms.port=8009
配置 httpd-vhosts.conf 文件
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin gang.shen@yunvoc.com
DocumentRoot "/usr/local/httpd/htdocs"
ServerName app.yunvoc.com
ErrorLog "logs/app.yunvoc.com-error_log"
CustomLog "logs/app.yunvoc.com-access_log" common
<Directory "/usr/local/httpd/htdocs">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin gang.shen@yunvoc.com
DocumentRoot "/home/yunvoc-cms"
ServerName yunvoc.com
ErrorLog "logs/yunvoc.com-error_log"
CustomLog "logs/yunvoc.com-access_log" common
<Directory "/home/yunvoc-cms">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
JkMount /* tomcat-cms
</VirtualHost>
修改 <TOMCAT>/conf/server.xml 文件
<Host name="trac.xxx.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="/home/xxx-cms" path="/" debug="0" reloadable="false" ></Context>
</Host>
<Host name="trac.xxx.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="/home/xxx-cms" path="/" debug="0" reloadable="false" ></Context>
</Host>
以上是通过apache路由到tomcat,由tomcat自身解析映射的项目,以下tomcat集群负载均衡的实现方式:
cd /home/httpd-2.2.27/modules/proxy
使用Apache的ProxyPass来转发URL后端,需要下面两个模块
mod_proxy.so
mod_proxy_http.so
安装mod_proxy,mod_proxy_http:/usr/local/httpd/bin/apxs -c -i mod_proxy.c proxy_util.c
/usr/local/httpd/bin/apxs -c -i mod_proxy_http.so
在/usr/local/httpd/modules/下生成了:mod_proxy.so, mod_proxy_http.so文件
编辑/usr/local/httpd/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
编辑/usr/local/httpd/conf/extra/httpd-vhost.conf
<span style="font-family:Courier New;">NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerAdmin root@localhost.com
DocumentRoot "/home/test1"
ServerName chivoxapp.com
ServerAlias www.chivoxapp.com
ErrorLog "logs/chivoxapp.com-error_log"
CustomLog "logs/chivoxapp.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin root@localhost.com
DocumentRoot "/home/zs"
ServerName js.chivoxapp.com
ProxyPass / http://172.16.20.50:8080/
ProxyPassReverse / http://172.16.20.50:8080/
<Directory "/home/zs">
Allow from all
</Directory>
ErrorLog "logs/js.chivoxapp.com-error_log"
CustomLog "logs/js.chivoxapp.com-access_log" common
</VirtualHost></span>
在tomcat的server.xml的host节点中配置:
<Context docBase="/home/zs" path="/" />
终于折腾完!!!!
参考:http://my.oschina.net/huangyong/blog/190699