2013-04-18 3 views
2

проект со следующими технологиями и компонентами всплыл: до до решения Web стека сначала в составе с Ubuntu, JDK, JBoss, Spring MVC 3,0 + и MySQL.Open Source Application Server Solution

При планировании этого проекта, я изо всех сил, чтобы найти ответы на следующие вопросы для первых шагов, передовой практики и последовательности:

1) Имеет ли JDK (и JBoss) необходимо установить как «корень '? (Я видел статьи, в которых упоминается это не очень хорошая идея, чтобы работать в корне, если это абсолютно необходимо в связи с летальным исходом.)

2) Нужно ли Ubuntu быть установлен как сервер для того, чтобы выполнить все это, или же оно также может быть установлено как рабочий стол ? Я не смог определить, нужно ли устанавливать JBoss и MySQL поверх Linux в качестве сервера.

3) ли Maven необходимость использовать в Spring STS для того, чтобы получить JBoss и MySQL (и в будущем спящий режим), чтобы успешно работать вместе?

4) Моя цель заключается в установке в этом порядке: а) Ubuntu -> б) Java -> с) JBoss -> d) Spring STS -> е) MySQL. Есть ли вопиющие конфликты в этой последовательности?

ответ

0

JBoss потребует Java (рекомендуется Java 7), прежде чем он что-либо сделает. Я не думаю, что это действительно «устанавливает» для одного, а скорее просто распаковывает в какой-то каталог (даже если вы устанавливаете его из диспетчера пакетов, он просто извлекает сам). Я задаю себе вопрос о необходимости Spring, поскольку JBoss и Java EE в целом действительно делают все, что делает Spring, и лучше сейчас. Если у вас нет особых требований к весне, я бы поставил под сомнение эту дополнительную зависимость.

Для Linux - на высоком уровне любая ОС может быть «сервером», все, что ему нужно, - это возможность обслуживать вещи (веб-страницы, ssh-соединения и т. Д.). В мире M $ разные «уровни» ОС были специально разработаны на основе ожидаемой задачи/рабочей нагрузки. Так, например, хотя Windows 7 действительно может работать как сервер, она не предназначена для этого и поэтому может не быть оптимизирована или содержать вспомогательные утилиты и инструменты, чтобы сделать жизнь проще, чем системный администратор системы. Windows Server, с другой стороны, включает в себя все «обычные» серверные инструменты и множество полезных свойств для упрощения обслуживания и настройки сервера.

В linux land, это не такая вещь. Linux - это ядро, которое говорит взад и вперед с голосом металла и т. Д., И производители Distro возьмут это и построят ОС вокруг ядра, в основном просто прикрепляя любые пакеты, которые они считают своими дистрибутивами ... например, wget или cat или любые другие стандартные приложения для пользователей, а также некоторые нестандартные, такие как mysql или java, или что угодно.

Теперь некоторые дистрибутивы linux будут адаптироваться к тому, чтобы быть «сервером» готовым, в то время как другие будут адаптировать себя к настольной ОС. Разница? Это действительно какие-то пакеты по умолчанию, которые производитель дистрибуции решает включить или нет. Например, подавляющее большинство серверов linux запускаются полностью без головы, поэтому нет никаких оснований для того, чтобы X11 и огромная раздутая среда графического интерфейса были установлены и/или запущены в этой системе ... это бессмысленно. Кроме того, пользователю «средний joe» не нужен MySQL, установленный по умолчанию на его настольной системе, поскольку он будет раздувать его систему, и он, вероятно, никогда не будет использовать его.

В основном это относится к установленным по умолчанию пакетам.

Некоторые серверные дистрибутивы Linux используют это в дальнейшем и проявляют особую осторожность при создании обновлений, патчей или новых выпусков во имя стабильности и безопасности, в то время как, с другой стороны, большинство настольных дистрибутивов более беспорядочны с их обновлениями, поскольку, если он ломается веб-браузер домашних пользователей, это, вероятно, не очень большое дело ... но если обновление сервера ломает стек приложений веб-сервера, теперь это серьезная проблема.

Таким образом, вы обнаружите, что серверные ОС, такие как CentOS (основанные на RHEL), очень медленны, чтобы задействовать «самые последние и самые лучшие» функции, которые настольные ОС получают на ранней стадии. Их целью является высокая безопасность и долгосрочная стабильность.

Теперь, для Ubuntu. Хотя я определенно знаю, что многие люди используют Ubuntu в качестве выбора своей серверной ОС (отчасти из-за того, что Amazon выбирает Ubuntu как виртуальную виртуальную машину Linux для своего облака ECS), но я бы действительно поставил под вопрос это. Ubuntu не сосредоточен на том, чтобы быть сервером. Он ориентирован на отличную универсальную настольную ОС. Да, версия LTS предназначена для долгосрочной стабильности, но она основана на настольной ОС, поэтому она все еще не в центре внимания.

IMHO, я бы пошел с CentOS, потому что это бесплатная и полностью бинарная совместимая версия RHEL - и RHEL - это де-факто стандарт для корпоративных серверов Linux. Имейте в виду, однако, способ RHEL делать вещи немного отличается от способа debian - так что нет apt-get, вместо этого вы должны использовать yum install. Сценарии запуска различны, и некоторые способы делать вещи разные, но на самом деле, когда вы знаете Linux, вы используете know linux.

EDIT: Также проверьте на Jenkins - свою бесплатную систему непрерывного интегрирования с открытым исходным кодом, которая работает на JBoss или Tomcat или в любом другом контейнере и может автоматически вывести ваш код из репо (github, git, svn и т. Д.) И скомпилировать/упакуйте его, а затем подтолкните к живому развертыванию. Вы настраиваете скрипты сборки ANT или Maven, и это может начаться по расписанию или, тем не менее, вы его настраиваете.

EDIT EDIT: Я бы также рекомендовал использовать OpenJDK, так как он, вероятно, включен в ваш менеджер пакетов (почти для каждого экземпляра) и будет более обновлен, чем версия oracle, если он также находится в вашем диспетчере пакетов. Я обнаружил, что большинство «серверных» дистрибутивов будет иметь OpenJDK 7, а только Oracle java 6 в менеджерах пакетов. Кроме того, установка его через диспетчер пакетов позволит вам обновить его на тонну.

+0

Спасибо SnakeDoc. Это интересное представление о аспекте сервера и о деталях, о которых нужно подумать. То, что вы предлагаете здесь, имеет смысл. Что касается Spring, он запрашивается для этого проекта - я в основном знаком с Eclipse-ish аспектом окружающей среды. Включение Spring, похоже, добавляет дополнительный компонент кривой обучения; мысль о будущем заключается в том, что это упростит ситуацию. Я говорю это не как эксперт, а только слушаю его от так называемых экспертов. – David

+0

Хмм ... Я никогда не использовал Spring самостоятельно, и я новичок в Java EE (я занимаюсь разработкой Java, а не EE-ориентированным), но из того, что я слышу/собираю, Spring изначально имел в виду замена Java EE в те времена, когда Java EE была ужасно ужасной. С тех пор Java EE имеет долгий путь, с собственным контейнером Oracle (GlassFish), включая большинство функциональных возможностей Java EE по умолчанию. JBoss - это просто реализация одной и той же структуры Java EE. Java EE является стандартом, но реализация зависит от поставщика (Red Hat в случае JBoss). – SnakeDoc

+0

Я мог бы быть на весне, хотя, поэтому я сделал бы домашнюю работу, прежде чем просто поверить в чужое слово. Если это действительно поможет в любом случае, пойдите для этого. *** говоря о менталитете большего количества зависимостей == больше проблем – SnakeDoc

0
  1. Установлен как корень, почему бы и нет? Запуск от root, вероятно, не очень хорошая идея.
  2. Если вам нужен рабочий стол, установите настольный дистрибутив. Если вам нужен сервер, установите серверный дистрибутив. Это не изменяет то, что может и не может быть запущено в ОС. Он изменяет только то, что установлено по умолчанию.
  3. Maven - это инструмент для сборки. JBoss не заботится о том, как вы создаете свое приложение. Все, о чем идет речь, - это приложение, которое вы развертываете, является действительным приложением Java EE.
  4. Нет. Вам нужна ОС, поэтому Ubuntu должен быть первым. JBoss и (AFAIK) Spring STS нуждаются в JRE для запуска, поскольку они являются приложениями Java, поэтому перед ними должна быть установлена ​​Java. MySQL не зависит от JBoss, STS и Java, поэтому вы можете установить его, когда захотите.

Обратите внимание, что если вы боретесь только с этой частью установки, будьте готовы страдать вместе с остальными. Создание Java EE webapp - это не кусок торта, и вам, вероятно, стоит найти опытного разработчика, который, как вам кажется, только начинается с Java.

+0

Спасибо JB Nizet. Я ценю ваш ответ. Мне сказали, что это может занять некоторое время, но также сказал, что это не «ракетостроение». Уверенность низкая, но амбиции и моральный дух высоки. Мне нужно только сосредоточиться и добиться. Почему это так сложно? Требуется ли много настраиваемого кода? Я ищу в Интернете и понимаю, что это не очень четкое сокращение. Смиренно, Дэвид. – David

+0

Это не ракетостроение, но требуется много времени, терпения, испытаний и ошибок, чтобы изучить все части и выбрать правильные пути: HTTP, HTML, CSS, JavaScript, Java, OO design, Servlet, JSP, Spring MVC, инжекция зависимостей, структура приложений Java EE, EJB, JPA, JPQL, конфигурация JBoss, SQL, дизайн базы данных, тестирование и издевательские рамки. Вам нужно будет узнать все это, если вы еще не знаете их. Удачи: это длинное, но интересное путешествие. –

+0

Кажется, я буду занят. Мне нужны камни и рогатка. Это новый Голиаф в моей жизни. Спасибо, JB Nizet. – David