【问题标题】:Deploy Apache Archiva on tomcat 6在 tomcat 6 上部署 Apache Archiva
【发布时间】:2013-06-11 14:38:39
【问题描述】:

我正在尝试在我的服务器上部署 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(上面指定的位置),在 /var/lib/tomcat6/conf/Catalina/localhost/ 中创建了 archiva.xml,内容如下:

<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.

我或多或少尝试了所有想到的东西,但总是失败!

有什么想法吗?

【问题讨论】:

  • 需要更多的日志行来识别问题。
  • 我可以让它运行起来。我必须处理几个问题,现在我要写一个解释的答案。不过还是谢谢!

标签: deployment tomcat6 archiva


【解决方案1】:

既然我可以设法让它运行起来,我认为其他人分享我所采取的步骤可能会很有用。这些描述假设已经阅读了archiva的官方installation Instructions,由于官方文档可能会更冗长一些,因此应该是一种额外的解释。

首先我下载了​​»war«并将其存储在/var/lib/tomcat6/archiva,这定义了起点。

1.数据库:

在官方instruction 中,要求下载derby.jarderbytools.jar 以将它们保存在$CATALINA_HOME/lib(在我的情况下指向/usr/share/tomcat6/lib),以使文件可用于所有运行在其上的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 库(那里可能不需要一些)。之后,我在/var/lib/tomcat6/archiva 中创建了目录db 并将其所有者和组更改为tomcat6,但是您要在哪里存储数据库文件取决于您,但重要的是不要创建两个子目录 对于两个需要的数据库,分别是:usersarchiva,在该目录中。

2。邮件

我按照说明将mail.jaractivation.jar复制到tomcats库。

3.档案主目录

阻止archiva运行的错误之一是它试图在/usr/share/tomcat6/.m2中创建一个主目录,但这导致了权限冲突,所以我创建了那个目录并将组和所有者更改为tomcat6。

最后一点我关心的是位于/var/lib/conf/Catalina/localhostarchiva.xml。由于应该替换的路径没有用»粗体«标记,因此很容易监督它们,所以我在这里尝试这样做,使用${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 中搜索错误日志是一种毫无意义,因为其中的消息没有描述明确的问题,因此我想建议阅读同一目录中的localhost.${date}.log,在那里我可以找到更有用的调试信息.

p.s.:在安装 Archiva 之后,对 Apache Continuum 执行了完全相同的步骤,只是替换了文件夹和文件名,这也导致了正在运行的安装。

安装愉快,干杯!

【讨论】:

  • 这很有帮助,谢谢!在我的情况下,我还需要创建和 chown 目录 /var/lib/tomcat6/data 和 /var/lib/tomcat6/repositories。这是在带有archiva-2.2.1的ubuntu-14.04上。
猜你喜欢
  • 2011-12-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多