Установка и настройка TeamCity под Ubuntu

Потребовалось поднять TeamCity для наших разработчиков. Вооружившись Google и терпением начал изучать различные мануалы.
Имеем Ubuntu Server 13.10 amd64, Apache 2, свежий TeamCity.

Распаковываем скаченный архив TeamCity в /var/www/teamcity
Меняем владельца:

sudo chown -R www-data /var/www/teamcity

Если хочется, то меняем порт на котором висит Teamcity:

sudo nano /var/www/teamcity/conf/server.xml

Создаем файл запуска:

touch /etc/init.d/teamcity

со следующим содержанием:

#!/bin/sh
# /etc/init.d/teamcity -  startup script for teamcity
export TEAMCITY_DATA_PATH="/var/www/teamcity/.BuildServer"

case $1 in
start)
 start-stop-daemon --start  -c www-data --exec /var/www/teamcity/bin/teamcity-server.sh start
;;

stop)
 start-stop-daemon --start -c www-data  --exec  /var/www/teamcity/bin/teamcity-server.sh stop
;;

esac

exit 0

Не забываем сделать его запускаемым

sudo chmod 0755 /etc/init.d/teamcity

Теперь регистрируем скрипт запуска:

sudo update-rc.d teamcity defaults

Запускаем вручную:

sudo /etc/init.d/teamcity start

Получим ошибку, если не установлена Java
Устанавливаем Java:

sudo apt-get purge openjdk*
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install openjdk-7-jdk

ИЛИ

sudo apt-get install oracle-java7-installer

Теперь все запустится на порту 8111 (по умолчанию), но хочется на 80 порту все иметь (проще). Для этого используем Apache в роли прокси.
Доустанавливаем необходимые модули:

sudo apt-get install libapache2-mod-proxy-html libapache2-mod-gnutls

Активируем модуль

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo /etc/init.d/apache2 restart

Создаем новый virtualHost в папке /etc/apache2/sites-available

sudo touch /etc/apache2/sites-available/teamcity.conf

Содержание примерно следующее:

<VirtualHost *:80>
    ServerAdmin admin@contoso.com
    ServerAlias teamcity.contoso.com
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia full

    <proxy *>
    Order deny,allow
    Allow from all
    </proxy>

    ProxyPass        /  http://192.168.0.5:8111/
    ProxyPassReverse /  http://192.168.0.5:8111/

</VirtualHost>

где 192.168.0.5 сервер где крутится TeamCity
Активируем наш виртуальный хост:

sudo a2ensite teamcity.conf

И перезагружаем Apache:

sudo /etc/init.d/apache2 reload

Не забываем прописать на DNS сервере A-запись

192.168.0.5 A teamcity.contoso.com

Разворачивание из бекапа


Если бекап TeamCity_Backup_20140725_170732.zip
Для того, что бы восстановить (при обновлении или еще после чего) следуем по шагам:

  1. останавливаем сервис Teamcity:
/etc/init.d/teamcity stop
  1. Копируем в корень TeamCity файл database.hsqldb.properties.dist из /var/www/teamcity/.BuildServer/config (считаем, что БД у нас HSQLDB)
  2. Удаляем все из /var/www/teamcity/.BuildServer/config/ и /var/www/teamcity/.BuildServer/system/
  3. Идем в папку bin:
cd /var/www/teamcity/bin
  1. Запускаем восстановление:
./maintainDB.sh restore -F TeamCity_Backup_20140725_170732.zip -A /var/www/teamcity/.BuildServer/ -T /var/www/teamcity/database.hsqldb.properties.dist

Если хочет получить переменную JAVA_HOME, то даем так:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle
  1. Запускаем сервис TeamCity
/etc/init.d/teamcity start
  1. Заходим в веб-морду и следуем инструкциям
Поделиться
Отправить
2013   nix