Разверните Apache Archiva на Tomcat 6
Я пытаюсь развернуть 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 запущен и работает. Я следовал инструкциям на этой странице, скопировал все необходимые файлы в 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: 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.
Я пытался более или менее все, что приходило мне в голову, но всегда терпел неудачу!
Любая идея?
1 ответ
Так как мне удалось запустить его, я думаю, кому-то другому было бы полезно рассказать о шагах, которые я предпринял. Эти описания предполагают, что вы уже ознакомились с официальными инструкциями по установке архива и должны быть своего рода дополнительным объяснением, поскольку официальная документация может быть более многословной.
Сначала я скачал "войну" и сохранил ее в /var/lib/tomcat6/archiva
, это определяет отправную точку.
1. База данных:
В официальной инструкции просят скачать derby.jar
а также derbytools.jar
чтобы сохранить их в $CATALINA_HOME/lib
(в моем случае это указывает на /usr/share/tomcat6/lib
) сделать файлы доступными для всех веб-приложений, работающих на этом коте. В своем исследовании я подошел к проекту Apache Derby, где я также нашел эту команду:
sudo apt-get install sun-javadb-core sun-javadb-client
который просто устанавливает Derby DB (в моем случае мне пришлось добавить "Multiverse" в /etc/apt/sources.list
по одному источнику). После этого я бегу:
sudo ln -s /usr/share/javadb/lib/*.jar -t /usr/share/tomcat6/lib
что связывало все необходимые derby-jar с библиотекой Tomcat (вероятно, некоторые из них там не нужны). После этого я создал каталог db
в /var/lib/tomcat6/archiva
и изменил его владельца и группу на tomcat6, но вы должны хранить файлы базы данных, но важно не создавать две подкаталоги для двух необходимых баз данных, а именно: users
а также archiva
внутри этого каталога.
2. Почта
Там я следовал инструкциям и скопировал mail.jar
а также activation.jar
в библиотеку котов.
3. домашний каталог архива
Одна из ошибок, препятствующих запуску архивы, заключалась в том, что она пыталась создать домашний каталог в /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, просто заменив имена папок и имен файлов, что также привело к запуску установки.
Happy Install, ура!