четверг, 31 марта 2011 г.

Установка Apache Archive на Ubuntu Server

Из цикла '1001 велосипед'.

Есть такая замечатлеьная програмка как Archive. Помогает сэкономить кучу времени и нервов разработчикам, работающим с Maven проектами (особенно актуально для контор, не могущих позволить себе нормальный интернет канал).
Так вот, есть следующая задача:
а) установить это чудо на Ubuntu Server (ssh, без XServer-а)
б) сделать автоматический запуск и остановку
в) разнести исполняемый код\конфиги и данные по нужным даректориям
г) сделать это с минимальными исправлениями самого дистрибутива archiv-ы

С первым пунктом вроди-бы все понятно. Со вторым - болие или менее. С третиьим - пришлось чуть чуть помудрить, потому как приложение написано так, что все находится в одной папке (бинарники, конфиги, базы данных и кеш артифактов).


Шаг 1. Подготовка

Идем на офсайт и читаем. Особенно внимательно читаем вот это: Installing Standalone Distribution of Apache Archiva.
На момент написания статьи, актуальной версией было 1.3.4. Поэтому все пути и ссылки соответсвующие.
Качаем дистрибутив, и устанавливаем в /opt
wget http://apache.vc.ukrtel.net//archiva/binaries/apache-archiva-1.3.4-bin.tar.gz
tar xfz *.tar.gz
sudo mv apache-archiva-1.3.4 /opt/

Шаг 2. Установка JDK

Для фанатов Sun:
sudo apt-get install sun-java6-bin

Шаг 3. Создаем структуру директорий

Конфиги лежат в conf, maven артифакты и БД хранятся в data, логи в logs. Читаем еще раз Installing Standalone Distribution of Apache Archiva: Объявив переменную ARCHIVA_BASE можно все это добро вынести в отдельную папку (рекомендуют в /var/archive).
Но:
1. Хотелось бы настройки иметь в /etc/archive
2. Данные репозитория на отдельном диске /mnt/data.
Для этого:
Создаем хранилище данных:
sudo mkdir /mnt/data/archiva/data

Создаем папки в /var:
sudo mkdir /var/archiva
sudo mkdir /var/archiva/logs
sudo rmdir /opt/apache-archiva-1.3.4/logs/
sudo ln -s /mnt/data/archiva/data/ /var/archiva/data

Создаем папку с конфигами:
sudo mkdir /etc/archiva
sudo ln -s /etc/archiva /var/archiva/conf
sudo mv /opt/apache-archiva-1.3.4/conf/* /mnt/data/archiva/conf/
sudo rmdir /opt/apache-archiva-1.3.4/conf/

На этом манипуляции с папками закончены.

Шаг 4. Базовая конфигурация

Есть несколько пунктов:
а) сервер должен слушать порт 80 вместо 8080
б) лог derby долен ложится в папку логов а не в корень приложения
в) Ограничить используемую память до 256МБ.
Для этого редактируем /etc/archiva/wrapper.conf.
sudo nano /etc/archiva/wrapper.conf
Находим секцию:
# Java Additional Parameters
#wrapper.java.additional.1=
wrapper.java.additional.1=-Dappserver.home=.
wrapper.java.additional.2=-Dappserver.base=%ARCHIVA_BASE%
wrapper.java.additional.3=-Djetty.logs=%ARCHIVA_BASE%/logs
И добавляем строчки:
wrapper.java.additional.4=-Djetty.port=18080
wrapper.java.additional.5=-Dderby.stream.error.file=%ARCHIVA_BASE%/logs/derby.log
И правим вот эт строки:
# Initial Java Heap Size (in MB)
wrapper.java.initmemory=64
# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256

Также нужно установить переменную среды ARCHIVA_BASE в /var/archiva. Для этого открываем скрипт запуска:
sudo nano /opt/apache-archiva-1.3.4/bin/archiva
Находим начальные строчки:
# Application
APP_NAME="archiva"
APP_LONG_NAME="Apache Archiva"
И добавляем:
ARCHIVA_BASE="/var/archiva"
export ARCHIVA_BASE

Способ топортный, но... самый простой.

Шаг 5. Тестовый запуск

sudo /opt/apache-archiva-1.3.4/bin/archiva console
Ждем, потом в броузере пробуем открыть:
http://host_name:80/archiva/

Также проверяем что в директории приложения нету папок logs и data
ls /opt/apache-archiva-1.3.4
И проверяем что логи и данные в ожидаемых местах:
ls /var/archiva/logs
ls /mnt/data/archiva/data

Шаг 6. Регестрируем сервис

Добавляем скрипт в /etc/init.d/ и регестрируем:
sudo ln -s /opt/apache-archiva-1.3.4/bin/archiva /etc/init.d/archiva
sudo update-rc.d archiva defaults

Все, при загрузке системмы сервер стартует, при кореектной остановке системмы - сервер корректно останавливается.
Статус можно посмотреть использую команду:
sudo service archiva status
Ручной старт\стоп\рестарт можно сделать используя команды:
sudo service archiva start
sudo service archiva stop
sudo service archiva restart

Комментариев нет:

Отправить комментарий