Pull to refresh

Поднимаем собственный Maven репозиторий Nexus на OpenShift

Reading time5 min
Views14K
image


Последнее время на Хабре стали появляться статьи про OpenShift, что привлекло моё внимание, ведь платформа действительно интересна и грех в ней не поковыряться, да и так совпало, что я начал задумываться найти альтернативу моему уютному Dropbox-репозиторию Maven в связи с отменой возможности иметь прямые ссылки и папки Public в целом ( пруф: habrahabr.ru/post/145864 ).

Итак, сегодня мы с Вами будем устанавливать Maven-репозиторий под управлением Nexus под собственные нужды, а Ваш покорный слуга поделится костылями знаниями, приобретёнными будучи первопроходцем в этом деле.



Вступление


Первым делом нам необходимо зарегистрироваться и создать приложение, этот процесс хорошо описан в статье habrahabr.ru/post/145203, я лишь проведу краткое изложение:
  1. Регистрируемся по ссылке, если Вы этого не сделали раньше;
  2. Создаём DIY приложение (для примера я создал приложение habr с namespace trylogic)
  3. Дальше в настройках приложения добавляем свой ssh-ключ.
  4. Выполняем git clone, как написано на странице. К примеру у меня:
    $ git clone ssh://a3cf48bc92174721a2c49fd823243b3a@habr-trylogic.rhcloud.com/~/git/habr.git/
    

Обратите внимание на адрес, указаный в ссылке для клонирования ( что-то-похожее-на-хеш@app_name-namespace.rhcloud.com ), он нам пригодится для дальнейшего доступа к приложению по ssh.

Tomcat


Почему я выбрал Tomcat, спросите Вы, а не стал пользоваться уже настроенным за нас командой OpenShift контейнером JBoss? Да потому что Nexus в нём не работает:)

Не смотря на наличие статьи на Хабре, описывающей процесс установки Tomcat, я решил воспользоваться статьёй на сайте OpenShift, там и разжевали лучше, и есть шаги по установке IP и портов для тех, кто с Tomcat-ом работает посредственно.
Для тех, кто не владеет английским (или просто кому лень :)) попытаюсь опять же вкратце
  1. Помните я говорил про git-ссылку? Используем её, чтобы зайти по ssh на наш сервер (Для пользователей Windows советую воспользоваться Putty):
    ssh a3cf48bc92174721a2c49fd823243b3a@habr-trylogic.rhcloud.com
    
  2. Отключим стандартную Ruby-заглушку:
    sh ~/habr/repo/.openshift/action_hooks/stop
    # Где habr - имя Вашего инстанса. 
    
  3. Последовательно выполняем (следим за именем приложения, у меня в примере используется habr):
    cd ~/habr/data
    
    wget http://www.bizdirusa.com/mirrors/apache/tomcat/tomcat-7/v7.0.27/bin/apache-tomcat-7.0.27.tar.gz
    
    tar zxvf apache-tomcat-7.0.27.tar.gz
    
    rm apache-tomcat-7.0.27.tar.gz
    
    env |grep INTERNAL_IP
    
  4. Если сейчас правильная фаза луны, мы, выполнив последнюю команду, получим IP-адресс нашего сервера. Сохраните его куда-нибудь, он нам сейчас пригодится.
  5. Буду благодарен в комментариях sed-у, который сам заменит что надо, а я покажу, как поправить файлик server.xml вручную. На сервере стоит только vim, поэтому любителям nano придётся потерпеть:
    $ vim ~/habr/data/apache-tomcat-7.0.27/conf/server.xml
    
  6. Меняем IP и порты:
    • <Server port="8005" shutdown="SHUTDOWN">
      
      на
      <Server port="15005" shutdown="SHUTDOWN">
      

    • <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
      
      на
      <Connector port="15009" protocol="AJP/1.3" redirectPort="8443" />
      

    • <Connector port="8080" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443" />
      
      на
      <Connector port="8080" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     address="IP_АДРЕС_ПОЛУЧЕННЫЙ_ВЫШЕ”
                     redirectPort="15443" />
      

    • <Engine name="Catalina" defaultHost="localhost">
      
      на
      <Engine name="Catalina" defaultHost="IP_АДРЕС_ПОЛУЧЕННЫЙ_ВЫШЕ">
      

    • <Host name="localhost"  appBase="webapps"
                  unpackWARs="true" autoDeploy="true">
      
      на
      <!-- Не забудьте поменять здесь habr-trylogic.rhcloud.com на ВАШ адрес -->
      <Host name="habr-trylogic.rhcloud.com"  appBase="webapps"
                  unpackWARs="true" autoDeploy="true">
      

  7. У Tomcat-а из коробки идёт свой менеджер, грех будет им не воспользоваться. Добавим в ~/habr/data/apache-tomcat-7.0.27/conf/tomcat-users.xml
    <role rolename="manager-gui"/>
    
    <user username="admin" password="mySupaPass" roles="manager-gui"/>
    
    После чего менеджер будет доступен по ссылке http://YOUR_APP_LINK/manager/
  8. В папке с недавно выкачанным Вами git-репозиторием переходим в папку .openshift/action_hooks. Отредактируем файл start, чтобы он выглядел так:
    # не забываем заменить habr на ваше имя приложения
    ~/habr/data/apache-tomcat-7.0.27/bin/startup.sh 
    
    А так же файл stop:
    ~/habr/data/apache-tomcat-7.0.27/bin/shutdown.sh 
    
    Это позволит Вам запускать и останавливать сервер через
    rhc app start -a habr
  9. Не забываем закомитить и отослать ( push ) сделанные Вами изменения


Не так уж и кратко получилось, конечно, но лучше так, чем никак:)


Nexus


Наконец-то мы подошли к герою нашего рассказа — продукту компании Sonatype по имени Nexus.

Казалось бы, что может быть сложного в простой установке приложения в JavaEE контейнер, подумал я и, не долго думая, задеплоил Nexus в свежий Tomcat. Естественно ничего не заработало $) Чтение логов показало, что Nexus пытается создать папку ${user.home}/sonatype-work, но у OpenShift другое мнение на этот счёт, и прав писать в USER_HOME она не даёт, а для записи у нас доступны только 3 папки: data, repo and tmp. NE GUSTO, подумал я, могли бы хотя бы Java Property «user.home» подменять на какую-нить data, но ведь платформа совсем свежая, авось прикрутят.

Держа в уме полученную информацию, которая, между прочим, полезна не только для Nexus, но и для других Java-приложений, пишущих в USER_HOME, приступим:
  1. Открываем наш Tomcat Manager (см. Выше)
  2. Скачиваем war-дистрибьютив Nexus-а: www.sonatype.org/downloads/nexus-2.0.5.war
  3. Пока он качается, кликаем Undeploy приложения, у которого Path указан как /
  4. Дождавшись скачивания, переименовываем скачанный файл nexus-2.0.5.war в ROOT.war
  5. указываем его в менеджере через Select WAR file to upload и нажимаем deploy
  6. По окончанию мы должны увидеть
    OK - Deployed application at context path /
    
  7. Опять заходим на сервер по SSH, где нам потребуется отредактировать файл plexus.properties, выполнив команду
    # сами знаете, что там про замену habr на ваше имя приложения ;)
    vim habr/data/apache-tomcat-7.0.27/webapps/ROOT/WEB-INF/plexus.properties 
    
    где надо поправить параметр nexus-work
    nexus-work=${user.home}/habr/data/sonatype-work/nexus
    
  8. Сохраняем, гордо идём в Tomcat Manager, жамкаем Start на нашем Nexus Application. Кошак должен отрепортить, мол, всё отлично запустилось и наш Nexus доступен по http://YOUR_APP_LINK/. Если этого не произошло — пишите в комментариях, помогу разобраться.


Заключение


Таким образом, мы научились корректно запускать наши приложения в контейнере Tomcat на примере Nexus. Какие у меня впечатления от OpenShift, скажите Вы? Исключительно положительные! Машинки очень отзывчивые, есть доступ по ssh, есть возможность самому устанавливать туда что душе угодно (лишь бы угодники души корректно работали с окружением ;)), 1Гб вполне достаточно для обыденных нужд программиста, плюс канал у них, судя по всему, около 10мбит на инстанс, поэтому кидался файлами с сервером довольно-таки быстро.

Спасибо за внимание,
Админь!
Tags:
Hubs:
+20
Comments11

Articles