FastNetMon

Thursday, 11 November 2010

Установка Confluence WIki на Debian 5 Lenny

Что это: http://www.atlassian.com/software/confluence/

Вот официальная инструкция по установке: http://confluence.atlassian.com/display/DOC/Confluence+Installation+Guide

Ставить будем в режиме EAR/WAR + Tomcat. Для начала ставим Tomcat: http://phpsuxx.blogspot.com/2010/11/apache-tomcat-55-debian-5-lenny.html

Следом поставим MySQL http://phpsuxx.blogspot.com/2009/12/mysql-debian5-lenny.html и создадим в ней пользователя и базу confluence с неким паролем.

Обращаю внимание, что MySQL нужно переконфигурировать следующим образом (источник):
vi /etc/mysql/my.cnf

И в блок [mysqld] добавить строку:
default-character-set=utf8

И применить изменения:
/etc/init.d/mysql restart

После этого нужно затюнить Tomcat, иначе настройки безопасности не дадут confluence запуститься:
vi /etc/default/tomcat5.5

И в самом низу добавляем:
TOMCAT5_SECURITY=no

Если же забыть это сделать, то в логах получим такой вот ужас и неработающий confluence:
Nov 11 04:23:56 Debian-50-lenny-64-minimal jsvc.exec[24303]: Nov 11, 2010 4:23:56 AM org.apache.catalina.core.ApplicationContext log#012INFO: HTMLManager: start: Starting web application at '/confluence'
Nov 11 04:23:56 Debian-50-lenny-64-minimal jsvc.exec[24303]: Nov 11, 2010 4:23:56 AM org.apache.catalina.core.ApplicationContext log#012INFO: HTMLManager: start: Starting web application at '/confluence'
Nov 11 04:23:56 Debian-50-lenny-64-minimal jsvc.exec[24303]: 2010-11-11 04:23:56,819 INFO [http-8180-Processor25] [com.atlassian.confluence.lifecycle] contextInitialized Starting Confluence 3.4.1 (build #2030)
Nov 11 04:23:56 Debian-50-lenny-64-minimal jsvc.exec[24303]: 2010-11-11 04:23:56,924 INFO [http-8180-Processor25] [beans.factory.xml.XmlBeanDefinitionReader] loadBeanDefinitions Loading XML bean definitions from class path resource [bootstrapContext.xml]
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: 2010-11-11 04:23:57,380 INFO [http-8180-Processor25] [beans.factory.xml.XmlBeanDefinitionReader] loadBeanDefinitions Loading XML bean definitions from class path resource [setupContext.xml]
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: 2010-11-11 04:23:57,421 INFO [http-8180-Processor25] [beans.factory.xml.XmlBeanDefinitionReader] loadBeanDefinitions Loading XML bean definitions from class path resource [bootstrapCacheContext.xml]
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: 2010-11-11 04:23:57,517 ERROR [http-8180-Processor25] [atlassian.confluence.setup.ConfluenceConfigurationListener] contextInitialized An error was encountered while bootstrapping Confluence (see below): #012Error creating bean with name 'com.atlassian.confluence.plugin.PluginsClassLoaderConfigurationListener' defined in class path resource [bootstrapContext.xml]: Cannot resolve reference to bean 'uberClassLoader' while setting bean property 'delegationClassLoader'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uberClassLoader' defined in class path resource [bootstrapContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.atlassian.confluence.util.ConfluenceUberClassLoader]: Constructor threw exception; nested exception is java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)#012org.springframework.beans.facto
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: ry.BeanCreationException: Error creating bean with name 'com.atlassian.confluence.plugin.PluginsClassLoaderConfigurationListener' defined in class path resource [bootstrapContext.xml]: Cannot resolve reference to bean 'uberClassLoader' while setting bean property 'delegationClassLoader'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uberClassLoader' defined in class path resource [bootstrapContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.atlassian.confluence.util.ConfluenceUberClassLoader]: Constructor threw exception; nested exception is java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)#012Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uberClassLoader' defined in class path resource [bootstrapContext.xml]: Instantiation of bean failed; nested e
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: xception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.atlassian.confluence.util.ConfluenceUberClassLoader]: Constructor threw exception; nested exception is java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)#012Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.atlassian.confluence.util.ConfluenceUberClassLoader]: Constructor threw exception; nested exception is java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)#012Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)#012#011at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)#012#011at java.security.AccessController.checkPermission(AccessController.java:546)#012#011at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)#012#011at java.lang.SecurityManager.checkCreateClassLoader(SecurityMa
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: nager.java:594)#012#011at java.lang.ClassLoader.checkCreateClassLoader(ClassLoader.java:178)#012#011at java.lang.ClassLoader.(ClassLoader.java:226)#012#011at com.atlassian.confluence.util.ConfluenceUberClassLoader.(ConfluenceUberClassLoader.java:20)#012#011at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)#012#011at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)#012#011at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)#012#011at java.lang.reflect.Constructor.newInstance(Constructor.java:513)#012#011at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)#012#011at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)#012#011at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:757)#012#011at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanIns
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: tance(AbstractAutowireCapableBeanFactory.java:722)#012#011at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:386)#012#011at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)#012#011at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)#012#011at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)#012#011at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)#012#011at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:267)#012#011at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110)#012#011at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBea
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: nFactory.java:1100)#012#011at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:862)#012#011at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423)#012#011at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)#012#011at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)#012#011at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)#012#011at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)#012#011at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:248)#012#011at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:820)#012#011at org.springframework.context.support.
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: AbstractApplicationContext.registerListeners(AbstractApplicationContext.java:597)#012#011at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:349)#012#011at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:122)#012#011at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:76)#012#011at com.atlassian.confluence.setup.ConfluenceClassPathXmlApplicationContext.(ConfluenceClassPathXmlApplicationContext.java:26)#012#011at com.atlassian.confluence.setup.ConfluenceConfigurationListener.initialiseBootstrapContext(ConfluenceConfigurationListener.java:75)#012#011at com.atlassian.confluence.setup.ConfluenceConfigurationListener.contextInitialized(ConfluenceConfigurationListener.java:40)#012#011at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)#012#011at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)#012#011at org.apache.catalina.manager.M
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: anagerServlet.start(ManagerServlet.java:1173)#012#011at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:549)#012#011at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:105)#012#011at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)#012#011at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)#012#011at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)#012#011at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)#012#011at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)#012#011at java.lang.reflect.Method.invoke(Method.java:597)#012#011at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)#012#011at java.security.AccessController.doPrivileged(Native Method)#012#011at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)#012#011at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)#012#011at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)#012#011at org.apache.catalina
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: .core.Ap
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: plicationFilterChain.internalDoFilter(ApplicationFilterChain.java:262)#012#011at org.apache.catalina.core.ApplicationFilterChain.access$0(ApplicationFilterChain.java:192)#012#011at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:171)#012#011at java.security.AccessController.doPrivileged(Native Method)#012#011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)#012#011at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)#012#011at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)#012#011at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)#012#011at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)#012#011at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)#012#011at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)#012#011at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)#012#011at org.apach
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: e.coyote.http11.Http11Processor.process(Http11Processor.java:874)#012#011at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)#012#011at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)#012#011at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)#012#011at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)#012#011at java.lang.Thread.run(Thread.java:619)
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: 2010-11-11 04:23:57,525 WARN [http-8180-Processor25] [atlassian.config.util.BootstrapUtils] getBootstrapManager Attempting to retrieve bootstrap manager before it is set up: com.atlassian.config.bootstrap.BootstrappedContextLoaderListener.canInitialiseContainer(BootstrappedContextLoaderListener.java:26)
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: 2010-11-11 04:23:57,529 ERROR [http-8180-Processor25] [ContainerBase.[Catalina].[localhost].[/confluence]] listenerStart Exception sending context initialized event to listener instance of class com.atlassian.confluence.languages.ReloadBundlesContextListener#012java.security.AccessControlException: access denied (java.util.PropertyPermission confluence.i18n.reloadbundles read)#012#011at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)#012#011at java.security.AccessController.checkPermission(AccessController.java:546)#012#011at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)#012#011at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)#012#011at java.lang.System.getProperty(System.java:650)#012#011at java.lang.Boolean.getBoolean(Boolean.java:221)#012#011at com.atlassian.confluence.languages.ReloadBundlesContextListener.contextInitialized(ReloadBundlesContextListener.java:22)#012#011at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)#012#011at org.apache.catali
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: na.core.StandardContext.start(StandardContext.java:4216)#012#011at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1173)#012#011at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:549)#012#011at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:105)#012#011at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)#012#011at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)#012#011at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)#012#011at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)#012#011at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)#012#011at java.lang.reflect.Method.invoke(Method.java:597)#012#011at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)#012#011at java.security.AccessController.doPrivileged(Native Method)#012#011at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)#012#011at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)#012#011at org.apache.c
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: atalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)#012#011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:262)#012#011at org.apache.catalina.core.ApplicationFilterChain.access$0(ApplicationFilterChain.java:192)#012#011at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:171)#012#011at java.security.AccessController.doPrivileged(Native Method)#012#011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)#012#011at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)#012#011at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)#012#011at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)#012#011at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)#012#011at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)#012#011at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: 108)#012#011at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)#012#011at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)#012#011at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)#012#011at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)#012#011at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)#012#011at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)#012#011at java.lang.Thread.run(Thread.java:619)
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: 2010-11-11 04:23:57,530 WARN [http-8180-Processor25] [atlassian.config.util.BootstrapUtils] getBootstrapManager Attempting to retrieve bootstrap manager before it is set up: com.atlassian.confluence.setup.ValidLicenseContextListener.shouldRunListener(ValidLicenseContextListener.java:48)
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: 2010-11-11 04:23:57,530 WARN [http-8180-Processor25] [atlassian.config.util.BootstrapUtils] getBootstrapManager Attempting to retrieve bootstrap manager before it is set up: com.atlassian.confluence.upgrade.UpgradeLauncherServletContextListener.contextInitialized(UpgradeLauncherServletContextListener.java:22)
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: Nov 11, 2010 4:23:57 AM org.apache.catalina.core.StandardContext start#012SEVERE: Error listenerStart
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: Nov 11, 2010 4:23:57 AM org.apache.catalina.core.StandardContext start#012SEVERE: Error listenerStart
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: Nov 11, 2010 4:23:57 AM org.apache.catalina.core.StandardContext start#012SEVERE: Context [/confluence] startup failed due to previous errors
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: Nov 11, 2010 4:23:57 AM org.apache.catalina.core.StandardContext start#012SEVERE: Context [/confluence] startup failed due to previous errors
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: 2010-11-11 04:23:57,532 INFO [http-8180-Processor25] [com.atlassian.confluence.lifecycle] contextDestroyed Stopping Confluence
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: Nov 11, 2010 4:23:57 AM org.apache.catalina.core.ApplicationContext log#012INFO: HTMLManager: list: Listing contexts for virtual host 'localhost'
Nov 11 04:23:57 Debian-50-lenny-64-minimal jsvc.exec[24303]: Nov 11, 2010 4:23:57 AM org.apache.catalina.core.ApplicationContext log#012INFO: HTMLManager: list: Listing contexts for virtual host 'localhost'

Далее увеличиваем размер используемой памяти с 128 стандартных мегабайт до гигабайта (или как минимум 256 мегабайт):
vi /etc/default/tomcat5.5

JAVA_OPTS="-Djava.awt.headless=true -Xmx1024M -XX:MaxPermSize=192m"

Если же оставить стандартные 128, то confluence будет стопорится через раз с ошибкой "java.lang.OutOfMemoryError: Java heap space". Аналогично (офдокументация) с XX:MaxPermSize, у меня без указания явного выдавалась ошибка "jsvc.exec[27023]: Exception in thread "http-8180-Processor25" java.lang.OutOfMemoryError: PermGen space".

Теперь нужно скачать само приложение в формате EAR/WAR, открываем страницу http://www.atlassian.com/software/confluence/ConfluenceDownloadCenter.jspa, там выбираем Linux и щелкаем "Show all", из всего появившегося многообразия нам требуется "Confluence 3.4.1 - EAR/WAR (TAR.GZ Archive)", в данный момент прямая ссылка такая:
http://www.atlassian.com/software/confluence/downloads/binary/confluence-3.4.5.tar.gz

Скачиваем:
mkdir /opt/confluence_distrib
cd /opt/confluence_distrib
wget http://www.atlassian.com/software/confluence/downloads/binary/confluence-3.4.5.tar.gz
tar -xf confluence-3.4.5.tar.gz
cd confluence-3.4.5

Далее переходим к конфигурации:
vi /opt/confluence_distrib/confluence-3.4.5/confluence/WEB-INF/classes/confluence-init.properties

И добавляем там в самый низ:
confluence.home=/opt/confluence/

В этой папке confluence будет хранить все свои данные, не нужно указывать в ее качестве папку с дистрибутивом. Создаем ее:
mkdir /opt/confluence

Даем tomcat`у права на запись в нее:
chown tomcat55:root /opt/confluence

Теперь confluence нужно подключить к Tomcat, открываем конфиг:
vi /etc/tomcat5.5/Catalina/localhost/confluence.xml

И добавляем там следующее:
<Context path="/confluence" docBase="/opt/confluence_distrib/confluence-3.4.5/confluence" debug="0" reloadable="true">
</Context>

Если же Вы хотите, чтобы wiki была доступа по /, то прочтите следующее:
To run Confluence without a context path, change the path in the Context tag to an empty string (""). If not using a context path, your config will need to be saved as ROOT.xml rather than confluence.xml.

In Tomcat, a context path name follows the name of its xml file (except for ROOT.xml where no context path is used. Hence if you wish to change the context path to a different name, change both the context path and the name of the xml file. eg. "/wiki" context path should be saved in file wiki.xml.

То есть, если хотим, чтобы Confluence был доступен по /, то открываем файл:
vi /etc/tomcat5.5/Catalina/localhost/ROOT.xml

И добавляем в него:
<Context path="" docBase="/opt/confluence_distrib/confluence-3.4.5/confluence" debug="0" reloadable="true">
</Context>

Но при этом отвалится "Browse" - "Confluence Admin", это происходит из-за конфликта URL "/admin" админ-интерфейса Confluence c админкой TomCat:
HTTP Status 404 - /admin/console.action
type Status report
message /admin/console.action
description The requested resource (/admin/console.action) is not available.
Apache Tomcat/5.5

Пофиксить это можно отключением admin-интерфейса Tomcat:
mv /etc/tomcat5.5/Catalina/localhost/admin.xml /etc/tomcat5.5/Catalina/localhost/admin.old
/etc/init.d/tomcat5.5 restart

Открываем отладочный лог Tomcat:
tail -f /var/log/daemon.log

Перезапускаем Tomcat для применения настроек:
/etc/init.d/tomcat5.5 restart

Все, теперь заходим по адресу:
http://xx.xx.xx.xx:8180/confluence/

И там нас приветствует инсталлятор confluence и готовимся ввести регистрационные ключи. Далее выбираем "Production Install", External Database -> MySQL, далее выбираем тип соединения "Direct JDBC Connection". У нас язык русский, так что нам грозит использование UTF8, не забываем об этом при конфигурировании СУБД (также вписываем данные от ранее созданной базы):

Driver Class Name:
com.mysql.jdbc.Driver

Database URL:
jdbc:mysql://localhost/confluence?autoReconnect=true&sessionVariables=storage_engine%3DInnoDB&useUnicode=true&characterEncoding=utf8

После этого начинаем загрузку базы, далее выбираем "Example Site", чтобы забить вики тестовым контентом. Далее вписываем свои данные и начинаем разбираться во всей этой байде :)

Далее нужно немного разобраться с настройками. Указываем доменное имя: Browse, Confluence Admin, General Configuration, Edit и в поле "Server Base Url" вписываем доменное имя нашего сервера вместо IP.

Настройка почты. Browse, Confluence Admin, General Configuration, Mail Servers, Add a new SMTP mail server, SMTP Host Address: 127.0.0.1, from wiki@yourdomain.ru, Create.

1 comment :

  1. Следом поставим MySQL http://phpsuxx.blogspot.com/2009/12/mysql-debian5-lenny.html и создадим в ней пользователя и базу confluence ... wikolenny.blogspot.de

    ReplyDelete

Note: only a member of this blog may post a comment.