3

我正在尝试在我的服务器上部署 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 本身已启动并正在运行。我按照此页面上的说明,将所有必要的 jar 复制到 lib(上面指定的位置),使用该内容创建了archiva.xmlin :/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.

我或多或少地尝试了我想到的一切,但总是失败!

任何的想法?

4

1 回答 1

4

由于我可以设法让它运行,我认为其他人分享我所采取的步骤可能很有用。这些描述假设已经阅读了archiva的官方安装说明,并且由于官方文档可能会更冗长一些,因此应该是一种附加说明。

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

1. 数据库:

在官方说明中,要求下载derby.jarderbytools.jar保存它们$CATALINA_HOME/lib(在我的情况下指向/usr/share/tomcat6/lib),以使文件可用于在此 tomcat 上运行的所有 Web 应用程序。在我的研究中,我遇到了apache derby 项目,在那里我还发现了这个命令:

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-jars 链接到 tomcat 库(那里可能不需要一些)。之后,我在其中创建了目录db并将/var/lib/tomcat6/archiva其所有者和组更改为 tomcat6,但这取决于您要存储数据库文件的位置,但重要的是不要为两个需要的数据库创建两个子目录users,即:和archiva,在那个目录里面。

2. 邮件

在那里,我按照说明复制并复制mail.jaractivation.jartomcats 库。

3.archiva主目录

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

最后但并非最不重要的一点是,我关心archiva.xml位于/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错误日志是一种毫无意义的信息,因为其中的消息没有描述明确的问题,因此我建议localhost.${date}.log在同一目录中阅读,在那里我可以找到更有用的调试信息。

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

安装愉快,加油!

于 2013-06-13T07:33:47.493 回答