Установка и настройка 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
Для того, что бы восстановить (при обновлении или еще после чего) следуем по шагам:
- останавливаем сервис Teamcity:
/etc/init.d/teamcity stop
- Копируем в корень TeamCity файл database.hsqldb.properties.dist из /var/www/teamcity/.BuildServer/config (считаем, что БД у нас HSQLDB)
- Удаляем все из /var/www/teamcity/.BuildServer/config/ и /var/www/teamcity/.BuildServer/system/
- Идем в папку bin:
cd /var/www/teamcity/bin
- Запускаем восстановление:
./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
- Запускаем сервис TeamCity
/etc/init.d/teamcity start
- Заходим в веб-морду и следуем инструкциям