我正在尝试在我的服务器上部署Apache Archiva,但它一直都失败了。
规格:
os: ubuntu 10.04
tomcat: Apache Tomcat/6.0.24
jvm: 1.6.0_27-b27
$CATALINA_HOME : /usr/share/tomcat6
$CATALINA_BASE : /var/lib/tomcat6
$CATALINA_OPTS : "-Dappserver.home=$CATALINA_HOME -Dappserver.base=$CATALINA_BASE"
path to lib : $CATALINA_BASE/common/lib
#java -version
java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.3) (6b27-1.12.3-0ubuntu1~10.04.1)
OpenJDK Client VM (build 20.0-b12, mixed mode, sharing)
Tomcat本身正在运行。我按照此page上的说明,将所有必要的jar复制到lib(上面指定的位置),在archiva.xml
中使用该内容创建了/var/lib/tomcat6/conf/Catalina/localhost/
:
<Context path="/archiva" docBase="/var/lib/tomcat6/archiva/apache-archiva-1.4-M4.war">
<Resource name="jdbc/users"
auth="Container"
type="javax.sql.DataSource"
username="philipp"
password="xxx"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
url="jdbc:derby:////localhost:1527/archivausers;create=true" />
<Resource name="jdbc/archiva"
auth="Container"
type="javax.sql.DataSource"
username="philipp"
password="xxx"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
url="jdbc:derby://localhost:1527/archivadata;create=true" />
<Resource name="mail/Session"
auth="Container"
type="javax.mail.Session"
mail.smtp.host="localhost"/>
</Context>
在tomcat管理器中单击»start«后:FAIL - Application at context path /archiva could not be started
catalina.out
上的最后一行是:
SCHWERWIEGEND: A web application created a ThreadLocal with key of type[java.lang.ThreadLocal] (value [java.lang.ThreadLocal@69bf9]) and a value of type [org.apache.logging.log4j.core.impl.Log4jLogEvent] (value [Logger=org.springframework.web.context.ContextLoader Level=ERROR Message=Context initialization failed]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.
11.06.2013 16:29:30 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SCHWERWIEGEND: A web application created a ThreadLocal with key of type [null] (value [org.apache.logging.log4j.spi.DefaultThreadContextMap$1@1ea380c]) and a value of type [null] (value [null]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.
我或多或少地想到了我想到的一切,但总是失败!
任何想法?
答案 0 :(得分:4)
由于我可以设法让它运行,我认为对其他人分享我采取的步骤可能会有用。这些描述假设一个人已经阅读了archiva的官方installation Instructions,并且应该是一种额外的解释,因为官方文档可能更冗长。
首先我下载了“war”并将其存储在/var/lib/tomcat6/archiva
中,这定义了起点。
<强> 1。数据库:强>
在官方instruction中,要求我们下载derby.jar
和derbytools.jar
以将其保存在$CATALINA_HOME/lib
(在我的情况下指向/usr/share/tomcat6/lib
)中使文件可用于在此tomcat上运行的所有Web应用程序。在我的研究中,我来到了apache derby project,在那里我也找到了这个命令:
sudo apt-get install sun-javadb-core sun-javadb-client
只安装了derby db(在我的情况下,我必须在/etc/apt/sources.list
中添加»multiverse«在一个来源)。之后我跑了:
sudo ln -s /usr/share/javadb/lib/*.jar -t /usr/share/tomcat6/lib
是什么将所有需要的derby-jar链接到tomcat lib(可能在那里不需要一些)。之后我在db
中创建了目录/var/lib/tomcat6/archiva
并将其所有者和组更改为tomcat6,但是由您决定存储数据库文件的位置,但重要的是不要为所需的两个数据库创建两个子目录,namly:users
和archiva
,在该目录中。
<强> 2。邮件强>
我按照说明操作并将mail.jar
和activation.jar
复制到了tomcats库。
第3。 archiva主目录
阻止archiva运行的错误之一是它试图在/usr/share/tomcat6/.m2
中创建主目录,但这导致权限冲突,因此我创建了该目录并将组和所有者更改为tomcat6。 / p>
最后但并非最不重要我关注位于archiva.xml
的{{1}}。由于应该替换的路径未标记为“粗体”,因此很容易监督它们,所以我尝试在此处使用/var/lib/conf/Catalina/localhost
指出:
${path}
这应该是一切,我希望我没有忘记任何事情。在<Context path="/archiva"
docBase="${path to the archiva war archive here}">
<Resource name="jdbc/users"
auth="Container"
type="javax.sql.DataSource"
username="sa"
password=""
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
url="jdbc:derby:${path to the db folder}/users;create=true" />
<Resource name="jdbc/archiva"
auth="Container"
type="javax.sql.DataSource"
username="sa"
password=""
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
url="jdbc:derby:${path to db folder}/archiva;create=true" />
<Resource name="mail/Session"
auth="Container"
type="javax.mail.Session"
mail.smtp.host="localhost"/>
</Context>
中搜索错误日志是一种毫无意义的事情,因为那里的消息没有描述明确的问题,因此我想建议在同一目录中读取catalina.out
,其中我可以找到调试信息更有用。
p.s。:安装Archiva之后,为Apache Continuum做了同样的步骤,只是替换了文件夹和文件名,这也导致了正在运行的安装。
快乐安装,欢呼!