Apache服务器+tomcat配置

1.安装Apache服务器

1.1 Windows下安装Apache

打开Apache Server的官网,能够看到上面只提供源码,不提供编译好的包,若是须要二进制文件能够从其它贡献者那里获取,而且网站上也提供了几个网址,我选择了Apache Lounge,由于它同时提供32位和64位的下载,下载好后解压到某个目录,如G:\Program Files\Apache24,而后打开conf/httpd.conf文件,修改其中的某些代码:css

# Apache的IP地址和端口。通常来讲不须要设置,Apache会绑定在本机全部IP地址的80端口上。
Listen 80
Listen 127.0.0.1:80

# Web服务器的名字
ServerName www.mysite.com

# 这是网站的根目录
DocumentRoot "G:\Program Files\Apache24\htdocs"
<Directory "G:\Program Files\Apache24\htdocs">
    # 这里删掉了Indexes,不然别人能够浏览到您网站里的全部文件
    Options FollowSymLinks
</Directory>

启动bin目录下的httpd.exe文件(也能够用httpd.exe -k install命令把apache注册为服务,而后用net start Apache2.4命令启动Apache),而后在浏览器中输入localhost就能够看到默认的页面了--"It works!"。以上简单的配置只是为了让Apache服务器先运行起来,感谢这篇博文html

1.2 Linux下安装Apache

参考这篇博客,主要步骤是:linux

  1. 安装C++
  2. 安装apr
  3. 安装apr-util
  4. 安装pcre
  5. 安装apache
  6. 若是启动apache时找不到libpcre库,能够参考这篇博客

2.安装Tomcat

Tomcat的安装比较简单,打开Tomcat官网,Windows则选择32位或64位的zip包,Linux则选择tar.gz包或zip包,下载后解压到指定目录便可。web

3.Apache链接Tomcat

3.1 http_proxy方式

这是利用 Apache 自带的 mod_proxy 模块使用反向代理技术来链接 Tomcat。http_proxy 模式是基于 HTTP 协议的代理,所以它要求 Tomcat 必须提供 HTTP 服务,也就是说必须启用 Tomcat 的 HTTP Connector。首先打开 APACHE_HOME/conf/httpd.conf文件,把下面这些模块的加载语句前面的注释#删掉:正则表达式

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Include conf/extra/httpd-vhosts.conf

而后打开 APACHE_HOME/conf/extra/httpd-vhosts.conf,这里是配置虚拟主机的文件,固然也能够在httpd.conf文件中配置,可是这里单独配置比较清晰。文件中已经提供了一些模版,因此咱们只要照着模板添加:apache

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "G:\working\idea_workspace\demo1\src\main\webapp"
    ServerName demo1.com
    ErrorLog "logs/demo1.com-error.log"
    CustomLog "logs/demo1.com-access.log" common
	
	ProxyPass /test http://localhost:8080/demo1/
	ProxyPassReverse /test http://localhost:8080/demo1/
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "G:\working\idea_workspace\BlogTest\ROOT"
    ServerName blog.com
    ErrorLog "logs/blog.com-error.log"
    CustomLog "logs/blog.com-access.log" common
	
	ProxyPass / http://localhost:8082/blog/
	ProxyPassReverse / http://localhost:8082/blog/
</VirtualHost>

解释一下上面的配置,DocumentRoot是指定网站的根目录,也就是相似于tomcat中的docBase,假如这里不配置,则默认使用httpd.conf中的DocumentRoot配置。 ServerName是指定要代理的服务,ProxyPass后面有两个参数,例如对于第一个<VirtualHost>的配置,它的意思是把全部demo1.com/test/xxx的请求都转给 http://localhost:8080/demo1/xxx 处理,注意 ProxyPass是用做URL前缀匹配的,不可使用正则表达式,例如代理/*.jpg这样的配置是不接受的,而ProxyPassReverse主要是为了防止重定向跳过代理的,关于这一点,能够参考这篇博客
这里配置了两个虚拟主机,所以Apache能够对这两个网站进行代理,从而实现一台服务器搭建多个网站的功能。要想实现这一点,固然还须要在tomcat中配置,建议对于一个网站就启动一个tomcat实例,不要使用tomcat的虚拟主机功能,这样重启A网站的tomcat实例时就不会影响B网站的运行了。关于tomcat的配置这里很少作介绍,主要就是注意把tomcat的关闭端口改为不同的,以及监听端口不要重复,关于Apache的虚拟主机配置还能够参考这篇文章。另外,还能够在<VirtualHost>节点中配置Apache不转发静态文件给tomcat处理,这样能够提升性能,例如:windows

<VirtualHost *:80>
# 这里同上
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
</VirtualHost>

由于静态文件交给了Apache处理,所以须要受权,不然没法访问,打开APACHE_HOME/conf/httpd.conf文件,添加以下代码:浏览器

<Directory "G:\working\idea_workspace\demo1\src\main\webapp">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

这里指定了demo1网站的根目录,同时受权,这样当访问静态资源时就不会报403错误了。tomcat

4.其它Apache配置细节

关于Apache的配置文件httpd.conf,还有一些细节和配置的含义在这里总结一下:服务器

  • 使用LoadModule加载模块的顺序是跟它们在文件中声明的顺序相反的,即后写的LoadModule语句先加载;
  • ServerName: 标识Apache自身,若是没有配置,会使用127.0.0.1做为服务器的默认地址,而这个地址只是一个网络回环地址,只有本机能访问;
  • ScriptAliasAlias:都是用于实现映射目录的功能,但ScriptAlias是把映射的目录识别为CGI脚本目录,目录中全部文件都看成CGI脚本对待,而Alias只是映射为一个普通的目录;
  • Options指令:指定在目录中使用哪些服务器特性,例如Indexes表明开启索引功能,请求该目录的URL中若是没有由DirectoryIndex指令指定的索引文件,则用户能够查看当前目录的文件列表(默认返回结果是这个),通常状况下应该要关闭;
相关文章
相关标签/搜索