千万个美丽的未来,抵不上一个温暖的现在,每一个真实的现在,都是我们曾经幻想的未来!
Jan
8
今天把一个Java的应用迁移到另一台机器上,结果启动tomcat时报以下错误:
Jan 8, 2014 2:31:11 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile([省略]/ROOT/WEB-INF/lib/servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Jan 8, 2014 2:31:11 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Jan 8, 2014 2:32:15 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 8 in XML document from file [(省略)/ROOT/WEB-INF/classes/spring-ju.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:404)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:92)
解决方法:
一、
如果在项目中遇到该异常,通常是项目无法下载到spring-beans-2.5.xsd文件而出现的问题,这里的版本号因项目版本而异。
这里需要配置本地的xsd文件,方法如下:
找到你的项目中引用的spring的核心包,spring.jar
用压缩文件打开,找到该路径
org/springframework/beans/factory/xml/
并将这个路径下的xsd文件以下列形式配置到applicationContext.xml文件中,如果有多个配置文件,则全部代替
即以
classpath:/org/springframework/beans/factory/xml/spring-beans-2.5.xsd
代替http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
使得从本地直接读取该配置文件
二、配置文件XML的头部声明,具体根据自己使用的Spring版本决定
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Application context definition for JPetStore's business layer.
- Contains bean references to the transaction manager and to the DAOs in
- dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
引用
Jan 8, 2014 2:31:11 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile([省略]/ROOT/WEB-INF/lib/servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Jan 8, 2014 2:31:11 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Jan 8, 2014 2:32:15 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 8 in XML document from file [(省略)/ROOT/WEB-INF/classes/spring-ju.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:404)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:92)
解决方法:
一、
如果在项目中遇到该异常,通常是项目无法下载到spring-beans-2.5.xsd文件而出现的问题,这里的版本号因项目版本而异。
这里需要配置本地的xsd文件,方法如下:
找到你的项目中引用的spring的核心包,spring.jar
用压缩文件打开,找到该路径
org/springframework/beans/factory/xml/
并将这个路径下的xsd文件以下列形式配置到applicationContext.xml文件中,如果有多个配置文件,则全部代替
即以
classpath:/org/springframework/beans/factory/xml/spring-beans-2.5.xsd
代替http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
使得从本地直接读取该配置文件
二、配置文件XML的头部声明,具体根据自己使用的Spring版本决定
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Application context definition for JPetStore's business layer.
- Contains bean references to the transaction manager and to the DAOs in
- dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
Feb
13
这里主要讲JDK+Tomcat+JDBC+JK2的安装,和JSP虚拟主机的配置方法
如果想看apache+php+mysql前面部分安装过程,请看这里:
apache+mysql+php+GD+zend+eaccelerator+phpmyadmin
四,JDK的安装
1,JDK的安装
2,Tomcat的安装
3.JDBC(JSP与,MSYQL,MSSQL连接)
4,JK2(是APACHE组织指定的连接apceh和tomcat的工具)
5. 启动TOMCAT(jsvc.tar.gz,tomcat启动工具)
具体操作如下:
1. JDK的安装
[root@linuxhero root]# ls
j2sdk-1_4_2_15-linux-i586.bin j2sdk-1_4_2_08-linux-i586-rpm.bin
有两个包.
j2sdk-1_4_2_15-linux-i586-rpm.bin的安装方法
#chmod 755 j2sdk-1_4_2_15-linux-i586-rpm.bin
#./j2sdk-1_4_2_15-linux-i586-rpm.bin (运行JDK自解包)
运行过程中会出现一个用户协议,选择yes即可,会释放出一个rpm包j2sdk-1_4_2_15-linux-i586.rpm.
#rpm –Uvh j2sdk-1_4_2_15-linux-i586.rpm
完成后会在/usr/目录下生成一个/usr/java/j2sdk1.4.2_15目录文件
另一个软件包运行后会直接释放成j2sdk1.4.2_15目录移动合适的位置,如/usr/local/
#chmod 755 j2sdk-1_4_2_15-linux-i586.bin
#./j2sdk-1_4_2_15-linux-i586.bin
# mv j2sdk1.4.2_15 /usr/local/
到此JDK已经安装完成
到/usr/bin目录下,把原用的java,javac文件删除:
#rm -rf java
#rm –rf javac
在/usr/bin 下建立 软连接 java
# ln -s /usr/local/j2sdk1.4.2_15/bin/java /usr/bin/java
# ln -s /usr/local/j2sdk1.4.2_15/bin/javac /usr/bin/javac
# java –version
# javac -version
java version "1.4.2_15"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
为了方便下在的工作建立两个软链接:
ln -s /usr/local/j2sdk1.4.2_15 /usr/local/jdk
ln -s /usr/local/j2sdk1.4.2_15/jre /usr/local/jre
2.Tomcat的安装
#tar -zxvf jakarta-tomcat-5.0.28.tar.gz
# mv jakarta-tomcat-5.0.28 /usr/local/tomcat
设置环境变量:
#Set Environment by NetSeek
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
JRE_HOME=/usr/local/jre
export JRE_HOME
CLASSPATH=/usr=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jre/lib
export CLASSPATH
PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jre/bin
export PATH
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat/
启动tomcat以检查是否存在错误:
#cd /usr/local/tomcat/bin
#./startup.sh
http://IP
地址:8080 可以看到猫头:)成功了。
3.JDBC的安装
#tar -zxvf mysql-connector-java-3.2.0-alpha.tar.gz
#cd mysql-connector-java-3.2.0-alpha
#cp mysql-connector-java-3.2.0-alpha-bin.jar /usr/local/tomcat/common/lib
#tar xfv mssqlserver.tar
#tar xfv msjdbc.tar
#cd lib
# cp *.jar /usr/local/tomcat/common/lib
4.编译安装JK2(整合Tomcat与Apache)
# tar zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
# cd jjakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/
#./configure --with-apxs2=/usr/local/apache/bin/apxs \
--with-java-home=/usr/local/jdk \
--with-tomcat41=/usr/local/tomcat \
--with-apr-lib=/usr/local/apache/lib
#echo $?
报错:
no apxs given
need to check for Perl first, apxs depends on it...
checking for perl... /usr/bin/perl
configure: error: can't locate libapr
解决办法:
安装:apr-1.1.1.tar.gz
apr-util-1.1.1.tar.gz
libtool-1.5.22.tar
解压缩安装libapr
# chmod +x *
# tar xfz apr-1.1.1.tar.gz
# cd apr-1.1.1
# ./configure
# make
# make install
回到......./tomcat目录
#cd ..
解压缩安装libaprutil
# tar xfz apr-util-1.1.1.tar.gz
# cd apr-util-1.1.1
# ./configure --with-apr=../apr-1.1.1
# make
# make install
建立libapr和libaprutil 的软连接到/usr/local/httpd2/lib/目录下
# ln -s /usr/local/apr/lib/libapr-1.so.0.1.1 /usr/local/httpd2/lib/libapr-1.so
# ln -s /usr/local/apr/lib/libapr-1.so.0.1.1 /usr/local/httpd2/lib/libapr-1.so.0
# ln -s /usr/local/apr/lib/libaprutil-1.so.0.1.1 /usr/local/httpd2/lib/libaprutil-1.so
# ln -s /usr/local/apr/lib/libaprutil-1.so.0.1.1 /usr/local/httpd2/lib/libaprutil-1.so.0
再次编译jakarta-tomcat
如果make通不过,/path/to/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache2目录下并无mod_jk2.so产生,则需安装新版libtool.
# libtool --version
ltmain.sh (GNU libtool) 1.4.3 (1.922.2.111 2002/10/23 02:54:36)
[root@linux native2]#
这个版本的libtool编译最新的
jakarta-tomcat-connectors-jk2-2.0.4-src
是不会成功的。
返回到....../tomcat
安装libtool-1.5.22
# chmod +x *
# tar xfz libtool-1.5.22.tar.gz
# cd libtool-1.5.22
# ./configure
# make
# make install
删除原来的/usr/local/httpd2/build/libtool
# rm –rf /usr/local/httpd2/build/libtool
建立新的libtool 软连接
# ln -s /usr/local/bin/libtool /usr/local/httpd2/build/libtool
再次编译jakarta-tomcat
现在就OK了
./configure --with-apxs2=/usr/local/apache/bin/apxs --with-java-home=/opt/j2sdk1.4.2_10 --with-apr-lib=/usr/local/apache/lib
注:--with-tomcat41参数指定Tomcat主目录,编译器没有直接对最新的Tomcat提供特定的编译参数,所以使用tomcat41的参数代替,用—with-java-home参数指定Java的安装路径.
#make
将在/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache目录下,生成的mod_jk2.so复制到Apache的扩展模块目录/usr/local/httpd/modules下,
#cp mod_jk2.so /usr/local/httpd/modules
再将/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/conf目录下的workers2.properties复制到Apache的配置文件目录/usr/local/httpd/conf下:
#cp workers2.properties /usr/local/httpd/conf
再编辑httpd.conf
vi /usr/local/apache/conf/httpd.conf
LoadModule jk2_module modules/mod_jk2.so
之前我的问题是:在已有的WEB服务器上重新安装一套,所以tomcat 老启不来,得KILL掉进程再启动就OK了。
错误:
Syntax error on line 1038 of /etc/httpd/conf/httpd.conf:
Invalid virtual host name
则修改httpd.conf文件,找到#ServerName所在的行,并在其下面加入如下内容即可
ServerName localhost:8008 # 制定服务器的名称和端口,注意端口是8008,而不是8080
检查$CATALINA_HOME/conf/server.xml文件中相关的配置,默认情况下的
相关的信息是被注释掉了,搜索8008,找到那段,把前面的"后面的"-->"都删掉
5. 启动TOMCAT(jsvc.tar.gz,tomcat启动工具)
Apache和Tomcat安装后需要设置自动启动,如果让Tomcat用root身份启动,Tomcat将会拥用root权限,这将可能给系统带来安全隐患,黑客可能利用这个来攻击我们的系统,所以我们得添加一个独立运行此服务的用户:
#useradd -d /usr/local/tomcat -s /usr/sbin/nologin tomcat
#chown -R tomcat:tomcat /usr/local/tomcat
#cd /usr/local/tomcat/bin/
#tar zxvf jsvc.tar.gz
#cd jsvc-src
#sh support/buildconf.sh (只能在些目录里执行,在别处执行会出错)
会显示support/buildconf.sh: configure script generated successfully
#chmod 755 configure
#./configure
#make
#cp native/Tomcat5.sh /usr/sbin/tomcat
#cd /usr/sbin
#chmod 755 tomcat
#vi tomcat
可以看到:
JAVA_HOME=/usr/java/j2sdk1.4.2_03 指定java安装的目录
CATALINA_HOME=/home/tomcat5/jakarta-tomcat-5/build 指定了tomat的安装目录
DAEMON_HOME=/home/tomcat5/jakarta-commons/daemon 指定了tomcat命令所在的目录
TOMCAT_USER=tomcat5 指定tomcat运行后使用的账号
将上面的配置修改如下:
JAVA_HOME=/usr/local/jdk
CATALINA_HOME=/usr/local/tomcat/
DAEMON_HOME=/usr/local/tomcat/bin/
TOMCAT_USER=tomcat
找到$DAEMON_HOME/src/native/unix/jsvc \
将其更改成:$DAEMON_HOME/jsvc-src/jsvc \
修改完保存退出
vi /etc/rc.d/rc.local
在里面添加如下设置:
/usr/sbin/tomcat start
然后重启所有服务!
五,虚拟主机配置方案
要求:
1,DNS的简设置
2,虚拟域名:www.XXXXXX.com,虚拟用户XXXXXX_com
3,允许FTP维护,禁止远程登陆(具体的FTP维护参照二)
4,为虚拟主机添加用户和使用目录
1, DNS的简单设置,
...........中间略
二. 配置虚拟主机
1. 为虚拟主机添加用户和使用目录
#useradd xxxxxxx_com -s /sbin/nologin 添加虚拟用户,不允许登陆
#passwd xxxxxx_com (Do not Hack me 3ks) DnHm3ks 这是我设置的密码:)
#chmod 755 /home/xxxxxx_com
#cd /home/xxxxx_com
#mkdir sites 建立网站存放根目录
#chown xxxxxxx_com:xxxxxx_com sites 改变sites所属组为xxxxx_com
#mkdir logs 站点的日志目录
#chown xxxxxx_com:linuxhero_com logs
#mkdir cgi-bin 目录用来运行CGI程序
#chown xxxxx_com:xxxxxx_com cgi-bin
#mkdir sites/WEB-INF 用来存放Tomcat发布的程序
#chown xxxxx_com:xxxxx_com sites/WEB-INF
2.设置Apache的虚拟主机
#vi /usr/local/httpd/conf/httpd.conf
找到DirectoryIndex 在文件表中加上index.jsp,然后在文件尾添加虚拟主机配置信息:
NameVirtualHost 192.168.0.230:80
#www.xxxxx.com
<VirtualHost 192.168.0.230:80>
ServerAdmin [email protected]
DocumentRoot /home/xxxxx_com/sites
ServerName www.xxxxx.com
ServerAlias linuxhero.com
ErrorLog /home/xxxxx_com/logs/error_log
CustomLog /home/xxxxx_com/logs/access_log common
alias /cgi-bin /home/xxxxx_com/cgi-bin
<Location /cgi-bin>
Options ExecCGI
</Location>
<Location ~ "/*.jsp">
JkUriSet worker ajp13:localhost:8009
</Location>
<Location ~ "/WEB-INF/*">
JkUriSet worker ajp13:localhost:8009
</Location>
<Location ~ "servlet/*">
JkUriSet worker ajp13:localhost:8009
</Location>
</VirtualHost
1. 设置Tomcat的虚拟主机:
vi /usr/local/tomcat/conf/server.xml
在</Engine></Service></Server>上面加入如下:
------------------------------------------------------------------------------
<Host name="www.xxxxx.com" debug="0" appBase="/home/xxxxx_com/sites/"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>xxxxx.com</Alias>
<Context path="" docBase="." debug="0" reloadable="ture"/>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="xxxxx_com_log."
suffix=".txt"
timestamp="true"/>
</Host>
</Engine>
</Service>
</Server>
到此xxxxxxx_com这目录就可以同时支持PHP+JSP+mysql+mssql,啦,相当于LINUX下的WEB全能服务器.
如果想看apache+php+mysql前面部分安装过程,请看这里:
apache+mysql+php+GD+zend+eaccelerator+phpmyadmin
四,JDK的安装
1,JDK的安装
2,Tomcat的安装
3.JDBC(JSP与,MSYQL,MSSQL连接)
4,JK2(是APACHE组织指定的连接apceh和tomcat的工具)
5. 启动TOMCAT(jsvc.tar.gz,tomcat启动工具)
具体操作如下:
1. JDK的安装
[root@linuxhero root]# ls
j2sdk-1_4_2_15-linux-i586.bin j2sdk-1_4_2_08-linux-i586-rpm.bin
有两个包.
j2sdk-1_4_2_15-linux-i586-rpm.bin的安装方法
#chmod 755 j2sdk-1_4_2_15-linux-i586-rpm.bin
#./j2sdk-1_4_2_15-linux-i586-rpm.bin (运行JDK自解包)
运行过程中会出现一个用户协议,选择yes即可,会释放出一个rpm包j2sdk-1_4_2_15-linux-i586.rpm.
#rpm –Uvh j2sdk-1_4_2_15-linux-i586.rpm
完成后会在/usr/目录下生成一个/usr/java/j2sdk1.4.2_15目录文件
另一个软件包运行后会直接释放成j2sdk1.4.2_15目录移动合适的位置,如/usr/local/
#chmod 755 j2sdk-1_4_2_15-linux-i586.bin
#./j2sdk-1_4_2_15-linux-i586.bin
# mv j2sdk1.4.2_15 /usr/local/
到此JDK已经安装完成
到/usr/bin目录下,把原用的java,javac文件删除:
#rm -rf java
#rm –rf javac
在/usr/bin 下建立 软连接 java
# ln -s /usr/local/j2sdk1.4.2_15/bin/java /usr/bin/java
# ln -s /usr/local/j2sdk1.4.2_15/bin/javac /usr/bin/javac
# java –version
# javac -version
java version "1.4.2_15"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
为了方便下在的工作建立两个软链接:
ln -s /usr/local/j2sdk1.4.2_15 /usr/local/jdk
ln -s /usr/local/j2sdk1.4.2_15/jre /usr/local/jre
2.Tomcat的安装
#tar -zxvf jakarta-tomcat-5.0.28.tar.gz
# mv jakarta-tomcat-5.0.28 /usr/local/tomcat
设置环境变量:
#Set Environment by NetSeek
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
JRE_HOME=/usr/local/jre
export JRE_HOME
CLASSPATH=/usr=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jre/lib
export CLASSPATH
PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jre/bin
export PATH
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat/
启动tomcat以检查是否存在错误:
#cd /usr/local/tomcat/bin
#./startup.sh
http://IP
地址:8080 可以看到猫头:)成功了。
3.JDBC的安装
#tar -zxvf mysql-connector-java-3.2.0-alpha.tar.gz
#cd mysql-connector-java-3.2.0-alpha
#cp mysql-connector-java-3.2.0-alpha-bin.jar /usr/local/tomcat/common/lib
#tar xfv mssqlserver.tar
#tar xfv msjdbc.tar
#cd lib
# cp *.jar /usr/local/tomcat/common/lib
4.编译安装JK2(整合Tomcat与Apache)
# tar zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
# cd jjakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/
#./configure --with-apxs2=/usr/local/apache/bin/apxs \
--with-java-home=/usr/local/jdk \
--with-tomcat41=/usr/local/tomcat \
--with-apr-lib=/usr/local/apache/lib
#echo $?
报错:
no apxs given
need to check for Perl first, apxs depends on it...
checking for perl... /usr/bin/perl
configure: error: can't locate libapr
解决办法:
安装:apr-1.1.1.tar.gz
apr-util-1.1.1.tar.gz
libtool-1.5.22.tar
解压缩安装libapr
# chmod +x *
# tar xfz apr-1.1.1.tar.gz
# cd apr-1.1.1
# ./configure
# make
# make install
回到......./tomcat目录
#cd ..
解压缩安装libaprutil
# tar xfz apr-util-1.1.1.tar.gz
# cd apr-util-1.1.1
# ./configure --with-apr=../apr-1.1.1
# make
# make install
建立libapr和libaprutil 的软连接到/usr/local/httpd2/lib/目录下
# ln -s /usr/local/apr/lib/libapr-1.so.0.1.1 /usr/local/httpd2/lib/libapr-1.so
# ln -s /usr/local/apr/lib/libapr-1.so.0.1.1 /usr/local/httpd2/lib/libapr-1.so.0
# ln -s /usr/local/apr/lib/libaprutil-1.so.0.1.1 /usr/local/httpd2/lib/libaprutil-1.so
# ln -s /usr/local/apr/lib/libaprutil-1.so.0.1.1 /usr/local/httpd2/lib/libaprutil-1.so.0
再次编译jakarta-tomcat
如果make通不过,/path/to/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache2目录下并无mod_jk2.so产生,则需安装新版libtool.
# libtool --version
ltmain.sh (GNU libtool) 1.4.3 (1.922.2.111 2002/10/23 02:54:36)
[root@linux native2]#
这个版本的libtool编译最新的
jakarta-tomcat-connectors-jk2-2.0.4-src
是不会成功的。
返回到....../tomcat
安装libtool-1.5.22
# chmod +x *
# tar xfz libtool-1.5.22.tar.gz
# cd libtool-1.5.22
# ./configure
# make
# make install
删除原来的/usr/local/httpd2/build/libtool
# rm –rf /usr/local/httpd2/build/libtool
建立新的libtool 软连接
# ln -s /usr/local/bin/libtool /usr/local/httpd2/build/libtool
再次编译jakarta-tomcat
现在就OK了
./configure --with-apxs2=/usr/local/apache/bin/apxs --with-java-home=/opt/j2sdk1.4.2_10 --with-apr-lib=/usr/local/apache/lib
注:--with-tomcat41参数指定Tomcat主目录,编译器没有直接对最新的Tomcat提供特定的编译参数,所以使用tomcat41的参数代替,用—with-java-home参数指定Java的安装路径.
#make
将在/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache目录下,生成的mod_jk2.so复制到Apache的扩展模块目录/usr/local/httpd/modules下,
#cp mod_jk2.so /usr/local/httpd/modules
再将/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/conf目录下的workers2.properties复制到Apache的配置文件目录/usr/local/httpd/conf下:
#cp workers2.properties /usr/local/httpd/conf
再编辑httpd.conf
vi /usr/local/apache/conf/httpd.conf
LoadModule jk2_module modules/mod_jk2.so
之前我的问题是:在已有的WEB服务器上重新安装一套,所以tomcat 老启不来,得KILL掉进程再启动就OK了。
错误:
Syntax error on line 1038 of /etc/httpd/conf/httpd.conf:
Invalid virtual host name
则修改httpd.conf文件,找到#ServerName所在的行,并在其下面加入如下内容即可
ServerName localhost:8008 # 制定服务器的名称和端口,注意端口是8008,而不是8080
检查$CATALINA_HOME/conf/server.xml文件中相关的配置,默认情况下的
相关的信息是被注释掉了,搜索8008,找到那段,把前面的"后面的"-->"都删掉
5. 启动TOMCAT(jsvc.tar.gz,tomcat启动工具)
Apache和Tomcat安装后需要设置自动启动,如果让Tomcat用root身份启动,Tomcat将会拥用root权限,这将可能给系统带来安全隐患,黑客可能利用这个来攻击我们的系统,所以我们得添加一个独立运行此服务的用户:
#useradd -d /usr/local/tomcat -s /usr/sbin/nologin tomcat
#chown -R tomcat:tomcat /usr/local/tomcat
#cd /usr/local/tomcat/bin/
#tar zxvf jsvc.tar.gz
#cd jsvc-src
#sh support/buildconf.sh (只能在些目录里执行,在别处执行会出错)
会显示support/buildconf.sh: configure script generated successfully
#chmod 755 configure
#./configure
#make
#cp native/Tomcat5.sh /usr/sbin/tomcat
#cd /usr/sbin
#chmod 755 tomcat
#vi tomcat
可以看到:
JAVA_HOME=/usr/java/j2sdk1.4.2_03 指定java安装的目录
CATALINA_HOME=/home/tomcat5/jakarta-tomcat-5/build 指定了tomat的安装目录
DAEMON_HOME=/home/tomcat5/jakarta-commons/daemon 指定了tomcat命令所在的目录
TOMCAT_USER=tomcat5 指定tomcat运行后使用的账号
将上面的配置修改如下:
JAVA_HOME=/usr/local/jdk
CATALINA_HOME=/usr/local/tomcat/
DAEMON_HOME=/usr/local/tomcat/bin/
TOMCAT_USER=tomcat
找到$DAEMON_HOME/src/native/unix/jsvc \
将其更改成:$DAEMON_HOME/jsvc-src/jsvc \
修改完保存退出
vi /etc/rc.d/rc.local
在里面添加如下设置:
/usr/sbin/tomcat start
然后重启所有服务!
五,虚拟主机配置方案
要求:
1,DNS的简设置
2,虚拟域名:www.XXXXXX.com,虚拟用户XXXXXX_com
3,允许FTP维护,禁止远程登陆(具体的FTP维护参照二)
4,为虚拟主机添加用户和使用目录
1, DNS的简单设置,
...........中间略
二. 配置虚拟主机
1. 为虚拟主机添加用户和使用目录
#useradd xxxxxxx_com -s /sbin/nologin 添加虚拟用户,不允许登陆
#passwd xxxxxx_com (Do not Hack me 3ks) DnHm3ks 这是我设置的密码:)
#chmod 755 /home/xxxxxx_com
#cd /home/xxxxx_com
#mkdir sites 建立网站存放根目录
#chown xxxxxxx_com:xxxxxx_com sites 改变sites所属组为xxxxx_com
#mkdir logs 站点的日志目录
#chown xxxxxx_com:linuxhero_com logs
#mkdir cgi-bin 目录用来运行CGI程序
#chown xxxxx_com:xxxxxx_com cgi-bin
#mkdir sites/WEB-INF 用来存放Tomcat发布的程序
#chown xxxxx_com:xxxxx_com sites/WEB-INF
2.设置Apache的虚拟主机
#vi /usr/local/httpd/conf/httpd.conf
找到DirectoryIndex 在文件表中加上index.jsp,然后在文件尾添加虚拟主机配置信息:
NameVirtualHost 192.168.0.230:80
#www.xxxxx.com
<VirtualHost 192.168.0.230:80>
ServerAdmin [email protected]
DocumentRoot /home/xxxxx_com/sites
ServerName www.xxxxx.com
ServerAlias linuxhero.com
ErrorLog /home/xxxxx_com/logs/error_log
CustomLog /home/xxxxx_com/logs/access_log common
alias /cgi-bin /home/xxxxx_com/cgi-bin
<Location /cgi-bin>
Options ExecCGI
</Location>
<Location ~ "/*.jsp">
JkUriSet worker ajp13:localhost:8009
</Location>
<Location ~ "/WEB-INF/*">
JkUriSet worker ajp13:localhost:8009
</Location>
<Location ~ "servlet/*">
JkUriSet worker ajp13:localhost:8009
</Location>
</VirtualHost
1. 设置Tomcat的虚拟主机:
vi /usr/local/tomcat/conf/server.xml
在</Engine></Service></Server>上面加入如下:
------------------------------------------------------------------------------
<Host name="www.xxxxx.com" debug="0" appBase="/home/xxxxx_com/sites/"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>xxxxx.com</Alias>
<Context path="" docBase="." debug="0" reloadable="ture"/>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="xxxxx_com_log."
suffix=".txt"
timestamp="true"/>
</Host>
</Engine>
</Service>
</Server>
到此xxxxxxx_com这目录就可以同时支持PHP+JSP+mysql+mssql,啦,相当于LINUX下的WEB全能服务器.