当前位置: 技术问答>java相关
高手请进,Apache+Tomcat
来源: 互联网 发布时间:2015-04-19
本文导语: 今天遇到了这个问题,搞了一晚上还是没结果。 我采用了Apache+tomcat 因为它太大了,我的机子是128内存。 我确信Apache配置的绝对没问题,而且我测试过。 对tomcat我设置了如下环境变量: SET PATH=%PATH%;.;C:JDK1.3BIN SET CLA...
今天遇到了这个问题,搞了一晚上还是没结果。
我采用了Apache+tomcat
因为它太大了,我的机子是128内存。
我确信Apache配置的绝对没问题,而且我测试过。
对tomcat我设置了如下环境变量:
SET PATH=%PATH%;.;C:JDK1.3BIN
SET CLASSPATH=%CLASSPATH%;.;C:JDK1.3LIBTOOLS.JAR;C:JAKARTA-TOMCATLIBSERVLET.JAR
又执行了下面一句:ApacheEnv.bat
接着又在APACHER的HTTPD.CONF的最后一行加了下面一句:
INCLUDE C:JAKARTA-TOMCATCONFCONFTOMCAT-APACHE.CONF
接着:
STOP APACHE
STOP TOMCAT
START TOMCAT
START APACHE
在START APACHER时,出现如下错误:
TOMCAT-APACHE.CONF是无效的文件,权限拒绝
请问该如何解决
我采用了Apache+tomcat
因为它太大了,我的机子是128内存。
我确信Apache配置的绝对没问题,而且我测试过。
对tomcat我设置了如下环境变量:
SET PATH=%PATH%;.;C:JDK1.3BIN
SET CLASSPATH=%CLASSPATH%;.;C:JDK1.3LIBTOOLS.JAR;C:JAKARTA-TOMCATLIBSERVLET.JAR
又执行了下面一句:ApacheEnv.bat
接着又在APACHER的HTTPD.CONF的最后一行加了下面一句:
INCLUDE C:JAKARTA-TOMCATCONFCONFTOMCAT-APACHE.CONF
接着:
STOP APACHE
STOP TOMCAT
START TOMCAT
START APACHE
在START APACHER时,出现如下错误:
TOMCAT-APACHE.CONF是无效的文件,权限拒绝
请问该如何解决
|
你是用的tomcat4.0吧,4.0中不包含tomcat-apache.conf这个文件的,这个文件在3.x中才有,4.0提供以一种更简便的方法来使tomcat和apache结合起来。就是用mod_webapp组件。下面的是他的配置方法。
Installing mod_webapp and using it with Apache 1.3
--------------------------------------------------
Once you have successfully built the mod_webapp DSO as described in the
README.txt file coming with the sources, installing the module is pretty
easy.
First of all, copy the resulting mod_webapp.so file you will find in this
directory (or in the apache-1.3 directory if you're building from sources)
into your Apache 1.3 "libexec" directory (that directory where all DSO modules
for Apache reside).
If you're using Apache 1.3 for Windows, your modules directory will be called
"modules" (there's a "libexec directory, but it contains other stuff). Please
take care when loading the module. For Windows your "LoadModule" directive
looks like:
LoadModule webapp_module modules/mod_webapp.so
Another note for Windows: copy also the "libapr.dll" file with the module, or
your Apache 1.3 web server will refuse to start reporting that the WebApp
module cannot be loaded.
Once you have done that, edit your "httpd.conf" configuration file and
add a few lines to load that module at startup (Windows users, read above,
you have to "replace" libexec with "modules" - I'm paranoid, sorry):
LoadModule webapp_module libexec/mod_webapp.so
and
AddModule mod_webapp.c
NOTE: It was reported that sometimes Apache under windows doesn't like the
AddModule line in the configuration file. Please, if you can't start your
Apache service, try commenting out that line in your httpd.conf file.
Looking at the default "httpd.conf" file coming with Apache 1.3, I usually
add the "LoadModule ..." line at the end of all pre-written and commented out
"LoadModule" directives, and my "AddModule ..." directive at the end of all
commented out "AddModule" directives. My "httpd.conf" file looks something
like this:
[...]
#LoadModule unique_id_module libexec/mod_unique_id.so
#LoadModule dav_module libexec/libdav.so
#LoadModule ssl_module libexec/libssl.so
LoadModule webapp_module libexec/mod_webapp.so
[...]
ClearModuleList
[...]
#AddModule mod_unique_id.c
#AddModule mod_dav.c
#AddModule mod_ssl.c
AddModule mod_webapp.c
[...]
Once you've edited your "httpd.conf" in such fashion, it's better to check
if everything still works within the Apache core. You can test your newly
constructed configuration by issuing:
apachectl configtest
The apachectl script comes with your Apache 1.3 distribution. It usually
lies in /usr/local/apache/bin, but depending on _YOUR_ apache distribution,
that might change.
Once you verified that "apachectl" reports "Syntax OK" (meaning that all
modules have been successfully loaded and started), you can start adding your
web application connections and context into the Apache configurations.
Back to the "httpd.conf" file, you need to add something like:
WebAppConnection conn warp localhost:8008
WebAppDeploy examples conn /examples
In this example, I'm instructing the WebApp connector to connect to the
servlet container waiting for requests on the current "localhost" host and
bound to port 8008 (note, this port is the one you specified in your
"server.xml" file for the "org.apache.catalina.connectors.warp.WarpConnector"
connector, not your HTTP one).
A brief detailed description of the above-mentioned directives is:
WebAppConnection [connection name] [provider] [host:port]
[connection name]
A unique name for the connection to be created between Apache
and Tomcat.
[provider]
The name of the provider used to connect to the servlet container.
Currently only the "warp" provider is available.
[host:port]
The host name and port number to which the WARP connection must
attempt to connect. The port is the one you specified in your
"server.xml" file for the "...WarpConnector" connector, not your
HTTP one.
WebAppDeploy [application name] [connection name] [url path]
[application name]
The application name as present in your "webapps" directory in
Tomcat. For example, if you want to deploy a WAR-based web
application, your application name will look something like
"myApplication.war".
[connection name]
The name of a previously declared WebAppConnection directive.
[url path]
The URL path where this application will be deployed.
The "WebAppDeploy" directive is scoped around the current host, meaning that
if you insert it into a "" tag, your application will be
deployed only for that particular virtual host. To deploy the same application
on several virtual hosts, you will have to declare it once inside each
"" tag. This, in accordance with the Servlet specification,
will create a new instance of the web-application per virtual host.
Another directive is available for the WebApp connector. The "WebAppInfo"
directive will allow you to see the current status of all configured
connections and deployed applications. To use it, simply add something like:
WebAppInfo /webapp-info
You can then access the information page hitting your web server for the
following URL:
http://server.name:port/webapp-info/
Have fun...
Installing mod_webapp and using it with Apache 1.3
--------------------------------------------------
Once you have successfully built the mod_webapp DSO as described in the
README.txt file coming with the sources, installing the module is pretty
easy.
First of all, copy the resulting mod_webapp.so file you will find in this
directory (or in the apache-1.3 directory if you're building from sources)
into your Apache 1.3 "libexec" directory (that directory where all DSO modules
for Apache reside).
If you're using Apache 1.3 for Windows, your modules directory will be called
"modules" (there's a "libexec directory, but it contains other stuff). Please
take care when loading the module. For Windows your "LoadModule" directive
looks like:
LoadModule webapp_module modules/mod_webapp.so
Another note for Windows: copy also the "libapr.dll" file with the module, or
your Apache 1.3 web server will refuse to start reporting that the WebApp
module cannot be loaded.
Once you have done that, edit your "httpd.conf" configuration file and
add a few lines to load that module at startup (Windows users, read above,
you have to "replace" libexec with "modules" - I'm paranoid, sorry):
LoadModule webapp_module libexec/mod_webapp.so
and
AddModule mod_webapp.c
NOTE: It was reported that sometimes Apache under windows doesn't like the
AddModule line in the configuration file. Please, if you can't start your
Apache service, try commenting out that line in your httpd.conf file.
Looking at the default "httpd.conf" file coming with Apache 1.3, I usually
add the "LoadModule ..." line at the end of all pre-written and commented out
"LoadModule" directives, and my "AddModule ..." directive at the end of all
commented out "AddModule" directives. My "httpd.conf" file looks something
like this:
[...]
#LoadModule unique_id_module libexec/mod_unique_id.so
#LoadModule dav_module libexec/libdav.so
#LoadModule ssl_module libexec/libssl.so
LoadModule webapp_module libexec/mod_webapp.so
[...]
ClearModuleList
[...]
#AddModule mod_unique_id.c
#AddModule mod_dav.c
#AddModule mod_ssl.c
AddModule mod_webapp.c
[...]
Once you've edited your "httpd.conf" in such fashion, it's better to check
if everything still works within the Apache core. You can test your newly
constructed configuration by issuing:
apachectl configtest
The apachectl script comes with your Apache 1.3 distribution. It usually
lies in /usr/local/apache/bin, but depending on _YOUR_ apache distribution,
that might change.
Once you verified that "apachectl" reports "Syntax OK" (meaning that all
modules have been successfully loaded and started), you can start adding your
web application connections and context into the Apache configurations.
Back to the "httpd.conf" file, you need to add something like:
WebAppConnection conn warp localhost:8008
WebAppDeploy examples conn /examples
In this example, I'm instructing the WebApp connector to connect to the
servlet container waiting for requests on the current "localhost" host and
bound to port 8008 (note, this port is the one you specified in your
"server.xml" file for the "org.apache.catalina.connectors.warp.WarpConnector"
connector, not your HTTP one).
A brief detailed description of the above-mentioned directives is:
WebAppConnection [connection name] [provider] [host:port]
[connection name]
A unique name for the connection to be created between Apache
and Tomcat.
[provider]
The name of the provider used to connect to the servlet container.
Currently only the "warp" provider is available.
[host:port]
The host name and port number to which the WARP connection must
attempt to connect. The port is the one you specified in your
"server.xml" file for the "...WarpConnector" connector, not your
HTTP one.
WebAppDeploy [application name] [connection name] [url path]
[application name]
The application name as present in your "webapps" directory in
Tomcat. For example, if you want to deploy a WAR-based web
application, your application name will look something like
"myApplication.war".
[connection name]
The name of a previously declared WebAppConnection directive.
[url path]
The URL path where this application will be deployed.
The "WebAppDeploy" directive is scoped around the current host, meaning that
if you insert it into a "" tag, your application will be
deployed only for that particular virtual host. To deploy the same application
on several virtual hosts, you will have to declare it once inside each
"" tag. This, in accordance with the Servlet specification,
will create a new instance of the web-application per virtual host.
Another directive is available for the WebApp connector. The "WebAppInfo"
directive will allow you to see the current status of all configured
connections and deployed applications. To use it, simply add something like:
WebAppInfo /webapp-info
You can then access the information page hitting your web server for the
following URL:
http://server.name:port/webapp-info/
Have fun...