Как прикрепить домен или субдомен к проекту на Java EE / Tomcat, если у вас на сервере еще и Vesta CP со своим Apache/PHP

👁 91 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Допустим, есть такая ситуация, когда на сервере с одним IP — адресом вы хотите разместить параллельно и проекты PHP сервером Apache на порту 80/8080 и проекты Java EE, которые запущены на любом порту, к примеру на 8085, так как к порту 80/8080 уже не привяжешь. Сервер с PHP проектами управляются при помощи Vesta CP, поэтому весь арсенал управления доменами делаем и него. Ниже список операций для прикрепления.

  1. Первым делом прикрепляем наш домен, если он у нас другом ресурсе к нашему серверу через записи NS;
  2. Создаем новый WEB — хостинг с эти доменом через панель Vesta CP;
  3. После создания хостинга с этим доменом или поддоменом залезаем в корень хостинга и кидаем туда .htaccess с записями перенаправления на наш Java EE проект с его портом
RewriteEngine on
RewriteRule ^(.*)$ http://localhost:port/MyJavaProject/$1 [P]
#localhost - ip адрес нашего сервера
#port - порт, на котором запушен наш Tomcat
#MyJavaProject - контекст проекта

Деплой проекта war под Tomcat в среде Java EE. Статья 1001.

👁 160 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Почему статья 1001? Потому что любой, кто сталкивался первый раз с развертыванием проекта в Java EE подтвердит неоднозначные трудности. В данной статье, в виде различных ситуаций дадим решения данной проблемы.

1.Есть готовый .war — проект, который надо развернуть на удаленном или локальном сервере

Что мы делаем:

  • берем ProjectName.war — проект и кидаем в папку webapps не меняя ни название и ни расширение после компиляции;
  • перезапускаем сервер Tomcat. В виндовс это можно сделать любым способом, а на сервере Linu[ выполняем команду:
sudo service tomcat9 restart
  • далее идем в строку нашего браузера запускаем в адресной сроке наш проект http://hostname:8085/ProjectName/ и ждем, в зависимости от веса вашего проекта через секунды или минуты задеплоится ваш проект и запустится;
  • закинутый исходник ProjectName.war в папке webapps не удалять, иначе проект раздеплоится, хотя и создается папка work/localhost/ProjectName/, но она пустая.

 

2. Есть готовый war — проект, нужно его задеплоить на сервер Tomcat при помощи менеджера проектов Tomcat

Что мы делаем:

  • Первым первым делом настраиваем сервер, чтобы иметь права на управление скриптами и проектами, для этого идем в папку /conf и редактируем там файл tomcat-users.xml, там, где упоминается юзер, примерно так
 <role rolename="manager-gui"/>
 <role rolename="manager-script"/>
 <role rolename="manager-jmx"/>
 <role rolename="manager-status"/>
 <role rolename="admin-gui"/>
 <role rolename="admin-script"/>
 
 <user username="user" password="password" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
  • далее устаналиваем права на папку webapps, как 777, если не будет работать то и на папку work. Потому что, есть случай, когда менеджер не может задеплоить ваш проект по причине нехватки прав на запись в эти папки, учитывая то, что он загружает в эти папки ваш проект и в случае ошибки может выдать вот такой текст
    <em>FAIL - Deploy Upload Failed, Exception: [java.io.FileNotFoundException: </em>
  • идем по адресу http://hostname:8085/manager/, страница запросит данные юзера, которые мы выше прописали в файле tomcat-users.xml в виде логина: user и пароля: password. После авторизации находим кнопку загрузки на сервер и загружаем наш проект ProjectName.war и запускаем по адресу  http://hostname:8085/ProjectName/

 

Установка сервера Tomcat 8/9 на Ubuntu 16

👁 150 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

В данной теме рассмотрим установку Apache Tomcat 8/9 на ОС Ubuntu 16.

Обновление пакетов Ubuntu

Первым делом нам нужно обновить все пакеты Linux/Ubuntu командой в терминале

apt-get update && apt-get upgrade

Установка JDK

Вторым делом, конечно же, нам нужна среда выполнения Java, на котором, собственно, и написан данный сервер. Для установки JDK набираем команду

apt-get install default-jdk

Для проверки удачной установки выполнил команду вывода установленной версии JDK

java -version

Это должно вывести что-то на подобие

openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2ubuntu0.16.04.2-b14)
OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)

Добавление нового пользователя для работы с сервером

Это не обязательно, но из-за соображения безопасности не рекомендуется работать с сервером из пользователя root и поэтому, добавим нового пользователя для этого в систему

useradd -r username --shell /bin/false

 

Скачка архива Tomcat 8/9 и установка

Для установки нам надо будет скачать архив с Tomcat 8 или Tomcat 9. В данном примере установим версию 9. Разницы в установке версий 8 и 9 нет. Для скачки нужно знать текущее зеркало загрузки, они могут меняться и на данный момент, официальным зеркалом была ссылка на странице загрузки

копируем эту ссылку в буфер, заходим в раздел /opt

cd /opt

и скачиваем в данный раздел архив с сервером

wget http://apache-mirror.rbc.ru/pub/apache/tomcat/tomcat-9/v9.0.0.M22/bin/apache-tomcat-9.0.0.M22.tar.gz

Не обязательно скачивать через терминал, можно загрузить через любой файловый менеджер и делаем разархивацию содержимого

tar -zxf apache-tomcat-9.0.0.M22.tar.gz

Делаем символическую ссылку на разархивированную папку с сервером для удобной навигации по имени ссылки и устанавливаем привилегии на папку с новым пользователем, которого мы до этого создали

ln -s apache-tomcat-9.0.0.M22 tomcat-latest
chown -hR username: tomcat-latest apache-tomcat-9.0.0.M22

Создание сервиса для работы с сервером

Для работы с сервером в виде сервиса из командной строки необходимо создать специальный файл с именем сервиса и расширением *.service в папке /etc/systemd/system/, в данном случае именуем данный сервис как tomcat.service, в котором пропишем список операций для запуска, рестарта и остановки сервера Tomcat

[Unit]
Description=Tomcat9
After=network.target

[Service]
Type=forking
User=username
Group=usergroup

Environment=CATALINA_PID=/opt/tomcat-latest/tomcat.pid
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
Environment=CATALINA_HOME=/opt/tomcat-latest
Environment=CATALINA_BASE=/opt/tomcat-latest
Environment="CATALINA_OPTS=-Xms512m -Xmx512m"
Environment="JAVA_OPTS=-Dfile.encoding=UTF-8 -Dnet.sf.ehcache.skipUpdateCheck=true -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC"

ExecStart=/opt/tomcat-latest/bin/startup.sh
ExecStop=/opt/tomcat-latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Сохраняем данный файл и запускаем сервер

systemctl daemon-reload
systemctl start tomcat
systemctl enable tomcat

 

Настройка сервера

Это базовый список операций для установки, далее нужно настроить установленный Tomcat, чтобы он работал на сервере через терни безопасности.

Tomcat на локальном сервере и удаленном работает по дефолту по разному. На локальном не возникают проблемы с правами и безопасностью, а на удаленном можно встретиться со всем этим сюрпризом и можно на этом убить немало времени.

Нам нужно, сначала дать полные права под папку проектов на удаленном сервере

далее, создать пользователя в файле конфигурации Tomcat — conf/tomcat-users.xml в каждом разделе в папке META-INF отредактировать файл context.xml.

Проблема входа в разделы менеджера приложений Tomcat 8/9 связана с блокировкой текущего URL, по которому мы пытаемся открыть сайт. Данная проблема решается , в дополнении с прописью ролей в tomcat-users.xml

 <role rolename="manager-gui"/>
 <role rolename="manager-script"/>
 <role rolename="manager-jmx"/>
 <role rolename="manager-status"/>
 <role rolename="admin-gui"/>
 <role rolename="admin-script"/>
 <user username="username" password="password" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

Еще и редактированием, точнее, закоментированием тега Valve в файле context.xml в папке META-INF открываемого проекта

<?xml version="1.0" encoding="UTF-8"?>
...
<Context antiResourceLocking="false" privileged="true" >
...
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
...
</Context>

Файл context.xml может находится в любом проекте и отвечает за доступ к проекту из удаленного URL.

Вывод сообщения 403 Access Denied на Tomcat 8/9 в разделе Manager App/Host Manager/Server Status

👁 337 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

В данном посте режим проблемы доступа в разделы менеджера и вообще, любого проекта, который мы ходим настроить на УДАЛЕННОМ СЕРВЕРЕ.


Почему именно на удаленном сервере? Потому что, работа Tomcat на локальном сервере и удаленном работает по дефолту по разному. На локальном не возникают проблемы с правами и безопасностью, а на удаленном можно встретиться со всем этим сюрпризом и можно на этом убить немало времени.

Нам нужно, сначала дать полные права под папку проектов на удаленном сервере

далее, создать пользователя в файле конфигурации Tomcat — conf/tomcat-users.xml в каждом разделе в папке META-INF отредактировать файл context.xml.

Проблема входа в разделы менеджера приложений Tomcat 8/9 связана с блокировкой текущего URL, по которому мы пытаемся открыть сайт. Данная проблема решается , в дополнении с прописью ролей в tomcat-users.xml

 <role rolename="manager-gui"/>
 <role rolename="manager-script"/>
 <role rolename="manager-jmx"/>
 <role rolename="manager-status"/>
 <role rolename="admin-gui"/>
 <role rolename="admin-script"/>
 <user username="username" password="password" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

Еще и редактированием, точнее, закоментированием тега Valve в файле context.xml в папке META-INF открываемого проекта

<?xml version="1.0" encoding="UTF-8"?>
...
<Context antiResourceLocking="false" privileged="true" >
...
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
...
</Context>

Файл context.xml может находится в любом проекте и отвечает за доступ к проекту из удаленного URL.

Отправка AJAX — запросов к сервлету Java

👁 621 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Для взаимодействия пользователя серверной частью очень часто нужно использовать запросы, которые позволяют отправлять и принимать данные без обновления текущей страницы иначе говоря асинхронные AJAX — запросы. В сегодняшнем примере покажем, как сделать запрос со страницы пользователя на сервер, где у нас стоит сервер Tomcat 8, а серевер будет асинхронно отвечать пользователю.

Для того, чтобы отправить ассинхронные запросы можно воспользоваться еще и апплетами, которые будут грузиться в HTML — код на стороне клиента, но минусом такого подхода является необходимость дополнительно устанавливать клиенту плагины для браузера, а иногда, этот плагин, из-за несовметимости или блокировки будет не работать и нам эта возня, как и клиенту вообще не нужно…

Что потребуется? Потребуется:

  • Пользовательская HTML — страница, на котором работает AJAX — код через jQuery;
  • Сервер, на котором установлен Tomcat … 7 — 8 … или любой другой, поддерживающий сервлеты;
  • Любимая Java — IDE(NetBeans, Eclipse, IntelliJ IDEA, …).

Постановка задачи

Допустим есть страница index.html, на котором есть формы ввода пароля и логина. Наша задача:

  • асинхронно отправить со стороны клиента index.html данные вводимого пользователя на сторону сервера через AJAX;
  • обработать эти данные(проверить наличие в БД, проверить на допустимость символов, на количество символов и т.д.) через сервлет AuthServlet.java;
  • асинхронно отправить данные о статусе входа со стороны сервера на сторону клиента через тот же AJAX.

Практика

HTML — страница, которая показывается клиенту состоит из пару полей логина и пароля и одной кнопки

auth-forms-of-post-servlet-ajax-login

Ниже представлен код клиентской страницы auth.html

<!DOCTYPE html>
<html>
    <head>
        <title>Авторизация через через AJAX-JAVA</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script type="text/javascript" src="jquery-1.11.1.min.js"></script>
        <script type="text/javascript" src="script.js"></script>
        <style>
            body{
                background-color: azure;
                text-align: center;
                font-family: "Lucida Sans Unicode"
            }
            .auth-forms{
                width: 30%;
                margin: auto;
                background-color: background;
                text-align: center;
                margin-top: 200px;
            }
            .auth-forms input, button{
                margin: 10px;
                height: 30px;
                padding: 3px;
                border: none;
                border-radius: 2px;
            }
            #auth-info{
                margin: 5px;
                height: 50px;
                text-align: center;
                padding: 5px;
            }
        </style>
    </head>
    <body>
        <div>
            <form class="auth-forms">
                <div id="auth-info"></div>
                <input type="text" placeholder="Логин" id="login"/>
                <br/>
                <input type="password" placeholder="Пароль" id="password"/>
                <br/>
            </form>
            <br/>
            <button id="button">Вход</button>
        </div>
    </body>
</html>

Код для обработки событий на стороне клиента в виде файла JavaScript — script.js

$(document).ready(function(){
    $("#button").click(function(){
        var data = {};
        data = {"login":$("#login").val(), "password":$("#password").val()};
        //
        $.ajax
        ({
            type: "POST",//Метод передачи
            data: data,//Передаваемые данные в JSON - формате
            url: 'AuthServlet',//Название сервлета
            success:function(serverData)//Если запрос удачен
            {
                $("#auth-info").css({"background-color":serverData.backgroundColor, "height": "50px", "color":"white"});
                $("#auth-info").html(serverData.serverInfo);
            },
            error: function(e)//Если запрос не удачен
            {
                $("#auth-info").css({"background-color":"#CC6666", "height": "50px", "color":"white"});
                $("#auth-info").html("Запрос не удался!");
            }
        });
    });
});

Код для проверки и переотправки информационных сообщений о статусе авторизации представлен сервлетом AuthServlet.java

package ru.websofter.smilerado;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONException;
import org.json.JSONObject;

/**
 *
 * @author WebSofter
 */
@WebServlet(name = "AuthServlet", urlPatterns = {"/AuthServlet"})
public class AuthServlet extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, JSONException {
        response.setContentType("application/json");//Отправляем от сервера данные в JSON -формате
        response.setCharacterEncoding("utf-8");//Кодировка отправляемых данных
        try (PrintWriter out = response.getWriter()) {
            JSONObject jsonEnt = new JSONObject();
            if(request.getParameter("login").equals("myLogin")&&request.getParameter("password").equals("myPassword"))
            {
                jsonEnt.put("backgroundColor","#99CC66");
                jsonEnt.put("serverInfo", "Вы вошли!");
            }else
            {
                jsonEnt.put("backgroundColor","#CC6666");
                jsonEnt.put("serverInfo", "Введен неправильный логин или пароль!"); 
            }
            out.print(jsonEnt.toString());
        }
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (JSONException ex) {
            Logger.getLogger(AuthenticationServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (JSONException ex) {
            Logger.getLogger(AuthenticationServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    @Override
    public String getServletInfo() {
        return "Short description";
    }// 

}

После ввода логина и пароля сервер проверяет на наличие и соответствие и, в соответствии со статусом авторизации, выдает сообщение либо о  правильности ввода или об ошибочности

auth-forms-of-post-servlet-ajax-login-ok-info

 

auth-forms-of-post-servlet-ajax-login-no-ok-info

Запуск сервера Tomcat 8 на порту 80 под Linux

👁 138 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Данную проблему можно решить 2 -мя, известными для меня, способами:

  1. через дополнительный сервис authbind;
  2. через перенаправление в таблице IP адресов.

В посте расскажем про второй способ, так как он более, легок и быстр.
Как правило, запуск сервера Tomcat на 80 порту, и вообще с портами ниже 1024, осложнено в виду безопасности или занятости другими сервисами или службами. Перед тем, как работать с 80 портом на Linux-подобных системах с Tomcat 8 необходимо освободить этот порт от других служб. Особенно, этот порт любит сервер Apache и, желательно, решить проблему замены этого порта на другой.

Одним из решением данной проблемы является перенаправление трафика запросов с 80 порта на порт выше 1024, на котором работает наш сервер Tomcat 8, по умолчанию, это порт 8080 и он определен в файле конфигурации tomcat/conf/server.xml. Для перенаправления изменим конфигурацию в iptables двумя командами:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080    
iptables -t nat -A PREROUTING -p udp -m udp --dport 80 -j REDIRECT --to-ports 8080

И все, проблема с привязкой Tomcat 8 к порту 80 решена.

Часть 2. Java EE. Развертывание проекта Tomcat 8 на OpenShift

👁 137 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

В первой части данной статьи рассматривалась тема про интеграцию и запуск первого проекта на Tomacat 8 с IDE Netbeans 8.2. В данной части рассмотрим пример развертывания, или, иначе говоря,загрузка готового релиза проекта на удаленный сервер, где он будет уже использоваться клиентами. В роли сервера можно использовать люубую платформу, где стоит ОС Windows, Ubuntu, Mint, CentOS, Red Hat и т.д., для которых есть релизы сервера Tomcat. В данном примере рассмотрим пример развертки нашего проекта на бесплатном облачном хостинге OpenShift, который предлагает сервер на Red Hat. По сути дела, OpenShift — это отдельный проект от той же Red Hat для масштабируемых проектов в облачной вычислительной системе, которая работает на ОС Red Hat. OpenShift предлагает сервер c характеристиками:

512 MB RAM
100 MB swap
1 GB disk space

чего очень даже предостаточно для мелких проектов.

Система OpenShift представляет из себя сервис из рода PaaS. Platform as a Service (PaaS, «платформа как услуга») — модель предоставления облачных вычислений, при которой потребитель получает доступ к использованию информационно-технологических платформ: операционных систем, систем управления базами данных, связующему программному обеспечению, средствам разработки и тестирования, размещённым у облачного провайдера.

 

Доступ клиентов к проекту

Перед тем, как создать проект нужно создать доменное имя третьего уровня для проектов в доменной зоне второго уровня rhcloud.com. Это логично, потому что мы делаем наш проект доступным для клиентов, а клиенты могут увидеть наш проект через браузер и через доменную часть проекта. Делается это бесплатно в самой системе OpenShift. На самом деле, это будет частью доменного имени для нескольких проектов, а другая часть будет добавляться в зависимости от того, как вы назовете часть доменного имени конкретного проекта. К примеру, вы создали доменную зону projectsdomain.rhcloud.com, где projectsdomain — общее , уникальное в пределах OpenShift и доменная зона под ваши проекты. А остальная часть будет добавляться через дефис. К примеру, вы сделали чат на Tomcat и назвали домен данного чата, как chatproject, то полноценная ссылка, по которой будет доступен ваш чат на OpenShift будет выглядеть, как chatproject-projectsdomain.rhcloud.com. На самом -то деле, такое длинное название для ссылки на проект — это не приговор, а необходимость OpenShift и это ограничение окупается бесплатностью облачной системы и возможностью дополнить название домена уникальным образом. Вариантом решения данной проблемы является регистрация домена проекта на стороннем регистраторе доменов и указание в панели управления данного домена ссылки на projectchat-projectsdomain.rhcloud.com и делается это через поля CNAME, указав в роли параметра новый домен, а в роли значения — ссылку  chat-mydomain.rhcloud.com на наш проект на OpenShift

overview-platform-features-14

Подробнее об этом можно почитать по ссылке официальной документации.

 

Установка необходимого ПО на сервер

Вся структура управления проектом производится, в основном из командной строки Red Hat, а начальную установку необходимого ПО можно произвести и из панели управления через аккаунт консоли OpenShift. Весь набор ПО, которую можно «юзать» представлен на странице, через кнопку «Add application…». На странице добавления программы в проект есть множество ПО, начиная от БД и заканчивая интерпретаторами Python.

openshift-tomcat-dep-app-page

Из всего этого разнообразия, исходя из темы данной статьи, нам нужен сервер на основе Tomcat 8. На момент написания статьи Tomcat 8 не предоставлен на сервисе OpenShift и это можно решить выбором Tomcat 7 и принципиальных отличий не будет, если проект не использует специфичные для Tomcat 8 функций.

create-tomca-tcatridge-on-openshift-png-of-article

На следующем шаге, после создания проекта мы попадем на панель, где будут все наши проекты и наш проект chatproject

created-tomcat-catridge-on-openshift

Нажав на данный проект мы попадем в панель управления данным проектом, где можно дополнительно поднастроить или дополнить наш проект. Особое внимание требует панель «Source Code», где находиться ссылка для доступа к коду проекта.

 

created-tomcat-catridge-on-openshift-info-on-panel

OpenShift не располагает какой-то панелью для редактирования и загрузки релиза проекта на сервер, но вместо этого он выдает ссылки для аутентификации и ссылку для доступа к исходному коду. Как этими ссылками пользоваться рассмотрим далее

Аутентификация и доступ к серверу Red Hat через канал SSH

Для того, чтобы управлять севером Red Hat будем пользоваться программой PuTTY, которая позволит нам осуществить связь с удаленным сервером из нашего компьютера через консоль и выполнять различные команды для настройки системы.

Принцип RSA — аутентификации заключается в генерации 2-х ключей: публичного и приватного. Приватный ключ должен быть у нас на компьютере для нашего PuTTY, а публичный — на сервере для OpenShift, далее.

Вместе с PuTTY загрузим и PuTTYgen для генерации RSA ключей, посредством которых мы можем связаться и аутентифицироваться на удаленном сервере через SSH протокол.

Для генерации ключей открываем программу PuTTYgen, жмем на кнопку «Generate» и проводим мышкой по области под процесс-баром

puttygen-create-private-and-public-keys-for-openshift-proj

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

puttygen-create-private-and-public-keys-for-openshift-proj-2

Далее, для подключения к удаленному серверу нам достаточно иметь под рукой:

  1. Приватный и публичны ключи, сгенерированные при помощи PuTTYgen;
  2. Логин к Red Hat серверу нашего проекта;
  3. Программа PuTTY для аутентификции и выполнения команд через консоль.

Логин к серверу проекта генерируется OpenShift и можно узнать, нажав на ссылку «Remote Access» на панели проекта

login-catridge-on-openshift-panel

А для того, чтобы OpenShift знал наш публичный ключ, то его надо прописать в поле регистрации SSH -ключей на панели «Settings», нажав на кнопку «Add a new key»

add-new-ssh-public-key-openshift-settings-panel

При добавлении нового ключа задаем имя и копируем текст публичного ключа, который был сгенерирован у нас программой PuTTYgen жмем create

process-add-new-ssh-public-key-openshift-settings-panel

И все, теперь нам нужно все нужные данные в PuTTY и соединиться с удаленным сервером на OpenShift, где царит мир команд Red Hat. Для этого открываем PuTTY

puttygen-create-new-session-of-openshift-connection

После ввода всех данных и нажатия кнопки «Open»мы попадаем в командную консоль Red Hat, где потребуется ввести ключевую фразу, которую мы вводили при регистрации приватного ключа и где уже можем творить что угодно с сервером, включая установку и удаление программ и файлов

puttygen-command-console-of-openshift-connection

Загрузка проекта на удаленный сервер OpenShift

После того, как выбрали и установили нужное ПО на наш сервер с определенным публичным доменном и настроили проект, необходимо подготовить инструменты для загрузки проекта из нашего компьютера на сервер Red Hat под нашим аккаунтом OpenShift.

Для этого есть несколько способов, но мы воспользуемся одним из них — загрузка через инструмента контроля версий GIT TortoiseGIT. После загрузки и установки данного инструмента нам необходимо настроить локальный GIT репозиторий. Для этого создаем папку на нашем компьютере, где будет репозиторий загружаемого проекта и внутри этой папки жмем левой кнопкой мыши на пустую область и выбираем пункт «Git Clone…»

git-clone-in-git-repositoriy

Далее выйдет окно предварительной настройки проекта, где вводим ссылку на исходники нашего проекта, скопировав его из OpenShift панели проекта и указав на файл приватных ключей, которую мы ранее сгенерировали

git-clone-in-git-repositoriy-settings-panel

После этого жмем «Ок» и исходники с сервера проекта скопируются в наш локальный Git — репозиторий. В данной папке заходим в папку webapps и копируем туда наш проект с раширением .war из папки дистрибутива, где его построил IDE NetBeans переименовав его в ROOT.war. Далее заходим в корневую папку скачанных исходников в репозитории и из меню ЛКМ выбираем пункт «Git commit -> «master» …»

commit-master-git-repo-proj

После нажатия выйдет окно настройки коммта. Коммит(commit) — это сеанс загрузки проекта на сервера из локального репозитория с комментарием об изменениях. В окне весь список того, чего нет на сервере или того, что не синхронизировано в соответствии с содержимым на сервере. Т.е., всякое изменение в локальной репозитории должно быть отражено в репозитории на сервере, поэтому, Git — инструмент и предназначен для управления всей этой «кашей»

commit-master-do-process-commiting

Далее нажимаем на кнопку «ОК» и выйдет окно с процессом и с кнопкой «Push…»

process-commit-master-do-process-commiting

на которую нажмем и выйдет окно с преднастройками

process-commit-master-do-process-commiting-width-presettings

Нажимаем «ОК» и вводим ключевую фразу для наших ключей, которую мы создали при генерации в PuTTY в появившемся окошке

process-commit-master-do-process-commiting-width-presettings-keyphrase

далее, жмем «ОК» и пойдет процесс переброски обновленных файлов из локального репозитория на репозиторий проекта на сервере OpenShift

process-commit-master-do-process-commiting-succes

Теперь, после удачной переброски, закрываем это окно и переходим по ссылке нашего проекта projectchat-projects.domain.rhcloud.com, где мы и увидим его в задеплоенном или, иначе говоря, в развернутом виде на нашем сервере.

 

Часть 1. Java EE. Интеграция Tomcat 8 и NetBeans 8.2 и создание проекта Hello World

👁 705 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Java EE(Java Platform, Enterprise Edition) — это платформа и набор спецификаций языка Java для серверных проектов на уровне средних и крупных предприятий.

Основное назначение данной платформы — это реализация процессов сетевого обмена информацией через Интернет. Это свободная платформа со свободными программными и инструментальными средствами разработки.

В данной статье будет подробно описано как создать свой первый проект на платформе Java EE.

Что потребуется?

Нам потребуются для этого 3 шага:

  • установить требуемое ПО;
  • интегрировать скачанное ПО;
  • создать проект и развернуть на сервере.

Установка требуемого ПО

Нам потребуется скачать и установить следующий перечень ПО:

  • Tomcat 8 — сервер для запуска проекта Java EE;
  • IDE NetBeans — для создания и развертывания проекта Java EE;
  • Дополнительные модули для NetBeans для поддержки создания проектов JavaME.

tomcay-logo-imgTomcat 8 скачивается с официального сайта Apache. Есть разные варианты установки, это инсталлятор с пошаговой установкой и  архив программы, не требующий инсталляции. Мы скачаем инсталлятор и проследуем подсказкам. После скачивания запускаем инсталлятор, жмем «Next», далее соглашаемся с лицензией и жмем «I Agree» и появится окно

tomcay-inst-next-choose-components

Оставляем все по умолчанию. Если кратко, то «Host Manager» — это менеджер проектов, который помогает развертывать и удалять проекты с сервера Tomcat через браузер. Нам он не нужен, не будем устанавливать, также, и примеры, пример мы сами создадим. Жмем «Next»

tomcay-inst-next-configВ данном окне нам необходимо придумать логин и пароль для нашего сервера, а в пункте «Roles» задать роли для пользователя. По умолчанию там стоит manager-gui и мы добавляем к нему, через запятые, еще две роли: manager-script и manager-admin. Они нам будут необходимы при интеграции с NetBeans, остальное оставляем как есть и жмем «Next» появится окно выбора папки Java -машины, если Tomcat нашел эту папку,  у меня она находится по пути «C:\Program Files\Java\jre1.8.0_45», то оставляем, если нет, то выбираем. Жмем «Next» и выйдет окно выбора папки установки, я оставил по умолчанию «C:\Program Files\Apache Software Foundation\Tomcat 8.0». Жмем «Next» и пойдет процесс установки

tomcay-inst-next-finish

После окончания оставляем галочку «Run Apache Tomcat» для запуска, а с «Show Readme» снимаем, жмем «Finish» и начнется запуск сервера. Мы можем в любой момент остановить и запустить сервер через Monitor Tomcat, который будет доступен трее в процессе запуска

tomcay-inst-next-tree

Если сервер запущен, то на значке будет зеленый треугольник, а если остановлен — красный. Если мы вышли из монитора нажав на пункт Exit, то сможем заново запустить через «Пуск» в категории «Apache Tomcat 8.0 Tomcat8»

tomcat-monitor-app-puskНа данный момент с Tomcat закончили. Переходим к следующей программе.

 

netbeans-logo-img

IDE NetBeans скачиваем с официального сайта NetBeans. При скачивании выбираем PHP — конфигурации с минимальным количеством модулей, остальные мы сам установим

netbeans-download-confПосле скачивания запускаем инсталлятор и следуем подсказкам, оставляя все по умолчанию, если у вас нет других требований.

Все, программы мы установили. Теперь запускаем NetBeans и устанавливаем необходимые модeли для разработки проектов Java EE. Для этого заходим в пункт меню «Tools» > «Plugins»

netbeans-tools-pluginИ в открывшмся диалоговом окне, в раскладке доступных модулей «Available Plugins» выбираем все модули с с категориями Java EE и Java WEB and EE

netbeans-tools-plugins-selectЖмем «Install», соглашаемся со всеми лицензиями и подтверждаем установки. После окончания NetBeans предложит перезагрузиться -соглашаемся и все, мы можем, теперь, через меню создавать стандартные проекты Java EE.

Интеграция Tomcat и Netbeans

В NetBeans, для того, чтобы посмотреть текущие активные серверы, нам необходимо открыть вкладку сервисов. Для этого переходим в пункт меню «Window» > «Services»

service-windowПосле этого откроется новая вкладка сервисов, где в пункте «Servers» мы увидим наш активный сервер Tomcat

nb-active-serversПри при попытке развернуть пункт «Web Applications» выйдет диалоговое окно, которое потребует с нас логин и пароль. Вводим логин и пароль, которые мы устанавливали в процессе установки Tomcat

nb-active-servers-depl-appsи мы увидим все текущие, развернутые, проекты, которые есть у нас на сервере.

На этом все, интеграция закончена. Далее создаем проект Java EE «Hello World».

Создаем проект  развертываем на сервере

Идем в меню «File» > «New Project…»

choose-new-proj-typeВыбираем тип проекта из категории «Java Web» > «Web Application» и жмем «Next»

type-np-tomcat-proj-nameЗадаем имя проекта и жмем «Next»

type-np-tomcat-proj-serverВыбираем наш сервер, версию Java EE и жмем «Finish», так как фреймфорки мы не будем использовать для нашего простого примера.

Структура проекта состоит из нескольких папок

np-tomcat-hw-projВ папке «Web Pages» будут храниться фронтенд — файлы: html, JavaScript, CSS…в папке «META-INF» могут храниться дополнительные библиотеки, в папке «WEB-INF» могут храниться файлы конфигурации. При развертывании проекта сюда, обычно добавляется конфигурационный файл web.xml с дополнительными параметрами обработки запросов. Папке «Source Packages» буде наш Java EE — код, который будет обрабатывать запросы.

Давайте добавим новый пакет «helloworld» с классом «HelloWorld.java» в папке исходников «Source Packages». Кода класса дан ниже

 

package helloworld;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
/**
 *
 * @author admin
 */
public class HelloWorld extends HttpServlet {
  public void doGet (HttpServletRequest req,
                     HttpServletResponse res)
    throws ServletException, IOException
  {
    PrintWriter out = res.getWriter();//Создаем поток вывода
    out.println("<html>");
        out.println("<head>");
            out.println("<title>");
                out.println("Hello World Page");//Заголовок страницы
            out.println("</title>");
        out.println("</head>");
    out.println("<body>");
        out.println("<center>");
            out.println("Hello, world!");//Выводим видимую чсть HTML
        out.println("</center>");
    out.println("</body>");
    out.println("</html>");
    out.close();//Закрываем поток вывода
  }
}

В папку «META-INF» добавляем фал конфигурации web.xml со следующим содержимым

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http:/java.sun.com/dtd/web-app_2_3.dtd">
    <welcome-file-list>
        <welcome-file>
            index.html
        </welcome-file>
    </welcome-file-list>
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>helloworld.HelloWorld</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>hello

Данный код сообщит нашему серверу, чтобы при обращении к странице http://localhost:8080/hello/ у нас был выполнен Java — код из класса HelloWorld.java.
Давайте, изменим и код файла index.html для наглядности перепишем его содержимое так

<!DOCTYPE html>
<html>
    <head>
        <title>Hello World!</title>
        <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>It is the "Hello World" Java EE project!</div>
    </body>
</html>

index.html будет запрошен по умолчанию при обращении к странице через обычный адрес http://localhost:8080/HelloWorld/, так как мы задали это правило через web.xml. В итоге наш проект получится вот таким

nb-tomcat-ready-project
Проект готов, нам осталось его построить, развернуть и запустить. Для этого наводим мышкой на имя проекта и ЛКМ

nb-tomcat-ready-build-depl-runвыбираем сначала пункт «Build», потом «Deploy», что значит «Развернуть», потом «Run» и среда запустит страницу в браузере через адрес http://localhost:8080/HelloWorld/. По умолчанию у нас запуститься index.html, так как мы еще задали еще одну страницу http://localhost:8080/HelloWorld/hello/ через web.xml, который обрабатывает созданный нами класс, то давайте взглянем и на ее результат

nb-tomcat-ready-class-resКак видим, все отлично работает и код Java запускается через наш сервер, выводя HTML — код в виде страницы.

Дистрибутив сервлета «*.war» и развертывание вне среды NetBeans

Выше мы описали как развернуть проект внутри среды IDE NetBeans, это удобно в процессе проектирования, но что, ели нам требует закинуть на сервер Tomcat уже готовый проект? Давайте рассмотрим это поподробнее. Когда мы строим проект через команду «Build», то NetBeans создает конечный файл — дистрибутив, который является законченной реализацией проекта. Данный дистрибутив доступен в 2-х видах в 2-х папках проекта, это:

  • HelloWorld\build\web;
  • HelloWorld\dist.

В папке «HelloWorld\build\web» проект находиться в разархивированном виде. Это уже рабочий сервлет(так называются программы Java EE), который можно уже закинуть на сервер, а в папке «HelloWorld\dist» дистрибутив находиться в виде «HelloWorld.war». Формат «*.war» — это обычный «*.zip» формат и можно открыть архиватором и внутри него будет тоже самое, что и в папке HelloWorld\build\web. Для запуска на сервере можно использовать оба, но в архиве используют когда запускают сервлет на удаленном сервере, так как это удобно, когда весь сайт закачивают одним архивом.

Давайте развернем дистрибутив на наш сервер вне среды и чтобы наш проект был доступен не через адрес http://localhost:8080/HelloWorld/, а через адрес http://localhost/. Для этого переходим в корневую папку Tomcat и в папку готовых сервлетов «C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps» в данной папке у нас будут подпапки

nb-tomcat-apps-dirДанные папки — это развернутые приложения(сервлеты) по умолчанию. Особо следует выделить папку ROOT. Данная папка содержит приложение, котрое буде запускаться по умолчанию, т.е. по адресу http://localhost:8080/   и мы должны наш дистрибутив закинуть туда, удалив ее содержимое. После того, как мы закинули содержимое дистрибутива нам необходимо указать серверу Tomcat на необходимость обрабатывать запросы через порт 80, а не через 8080. Это даст нам возможность обращаться к хосту по адресу http://localhost/ для этого открываем файл server.xml в папке «C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf»  и заменяем порт 8080 на 80 в

    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

и не забываем перезапустить сервер Tomcat, чтобы изменения в конфигурациях порта вступили в силу, а то проект не запустится. После всех описанных операций мы можем зайти на наш сайт теперь по адресу http://localhost/

nb-tomcat-depl-proj-localhostНа этом запуск примера закончена! 🙂