Ошибка входа через FTP на сервер, созданный в VestaCP или решаем ошибку «connection refused: connect»

👁 88 просмотров

Данная проблема заключается в сервисе vsftpd

Надо попробовать очистить кеш, обновить информацию о репозитории и установить ее еще раз:

sudo apt-get clean
sudo apt-get update
sudo apt-get install --reinstall vsftpd

Если это не сработало, очищаем vsftpd (удаляем его, включая его файлы конфигурации), и переустанавливаем его:

sudo apt-get purge vsftpd
sudo apt-get install vsftpd

 

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

👁 116 просмотров

В данной теме рассмотрим установку 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

👁 244 просмотров

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


Почему именно на удаленном сервере? Потому что, работа 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.

Основные понятия в разработке Java EE

👁 79 просмотров

SNAPSHOT


Вопрос. Что значит приставка «-snapshot» в релизе «x.x.x-snapshot»?

  • Ответ 1. SNAPSHOT это зафиксированное состояние в системе управления версиями. Делаются ежедневно(или еженедельно, как разработка двигается). SNAPSHOT-версии могут оказаться вовсе не рабочими
  • Ответ 2. SNAPSHOT иногда означает, что это почти окончательный вариант данной версии. Что-то наподобие release candidate. Если обычная версия это полностью законченный продукт, то версии SNAPSHOT могут получать обновления, т.к. предполагается, что продукт ещё находится в стадии разработки. Более подробно можно почитать на английском SO здесь.
  • Ответ 3. SNAPSHOT означает, что исходники будут дорабатываться в пределах данной версии. Условно говоря, если твоё приложение использует некую библиотеку, помеченную как SNAPSHOT, то её автор, найдя баг или просто внеся дополнительный функционал, а может и удалив что-то, может залить новый jar’ник библиотеки (артефакта), при этом не поменяв версию. Совесть автора будет чиста, а вот твоё приложение, заново потянув библиотеку из репозитория может уже не собраться.

METADATA/meta data


Вопрос. Что такое METADATA/Метаданные?

  • Ответ 1. Метаданные — это субканальная информация об используемых данных.
  • Ответ 2. Структурированные данные, представляющие собой характеристики описываемых сущностей для целей их идентификации, поиска, оценки, управления ими или набор допустимых структурированных описаний, которые доступны в явном виде и предназначение которых может помочь найти объект.
  • Ответ 3. Термин используется в контексте поиска объектов, сущностей, ресурсов.
  • Ответ 4. Данные из более общей формальной системы, заданную с описывающей свойства системы данных.
  • Ответ 5. Информация о содержащейся на веб-странице свойств информации (создателе и т. п.). Пример: Имя автора правки в тексте. Этот термин в широком смысле слова используется для любой информации о данных: именах таблиц, колонок в таблице в реляционных базах данных, номер версии в файле программы (то есть как информативная часть в бинарном файле) и т. п.

WEB-INF


Вопрос. Что хранится в папке WEB-INF в проекте Java EE?

  • Ответ 1. Папка WEB-INF была создана специально, что-бы разграничить файлы классов и библиотеки классов используемые приложением от остальных html, jpg и прочих файлов, к которых пользователь должен иметь прямой доступ по протоколу http.
  • Ответ 2. Наличие папки WEB-INF — это одно из требований при развертке проекта Java EE:
    • Контейнер сервлетов (например, Tomcat) — если вы используете Apache Tomcat, корневой каталог приложения должен быть помещен в папку webapp. Это может быть другим, если вы используете другой контейнер сервлетов или сервер приложений.
    • API-интерфейс Java Servlet — Java Servlet Java Servlet API заявляет, что ваш корневой каталог приложения должен иметь следующую структуру:
      ApplicationName
      |
      |--META-INF
      |--WEB-INF
            |_web.xml       <-- Here is the configuration file of your web app(where you define servlets, filters, listeners...)
            |_classes       <--Here goes all the classes of your webapp, following the package structure you defined. Only 
            |_lib           <--Here goes all the libraries (jars) your application need

       

    • Ваш домен приложения — теперь, когда вы выполнили требования к контейнеру Servlet (или серверу приложений) и требованиям API Java Servlet, вы можете организовать другие части вашего веб-сервера на основе того, что вам нужно:
      • вы можете поместить свои ресурсы (файлы JSP, текстовые файлы, файлы сценариев) в корневой каталог приложения. Но тогда люди могут обращаться к ним напрямую из своего браузера, вместо того, чтобы их запросы обрабатывались по некоторой логике, предоставленной вашим приложением. Таким образом, чтобы ваши ресурсы не были доступны напрямую, вы можете поместить их в каталог WEB-INF, содержимое которого доступно только для сервера;
      • если вы используете некоторые фреймворки, они часто используют файлы конфигурации. Большинство этих фреймворков (классы, директории, …).
  • Ответ 3. Вы должны помещать WEB-INF любые страницы или части страниц, которые вы не хотите публиковать. Обычно JSP или facelets находятся вне WEB-INF, но в этом случае они легко доступны для любого пользователя. Если у вас есть некоторые ограничения авторизации, для этого можно использоваться WEB-INF.
  • Ответ 4. WEB-INF/lib может содержать сторонние библиотеки, которые вы не хотите упаковывать на системный уровень (JAR могут быть доступны для всех приложений, запущенных на вашем сервере), но только для этого конкретного приложения.
  • Ответ 5. Что касается WEB-INF/classes — он существует в любом веб-приложении, потому что это папка, в которой размещены все скомпилированные источники (а не JARS, а скомпилированные .java-файлы, которые вы написали сами).
  • Ответ 6. Вообще говоря, многие файлы конфигурации также входят в WEB-INF.
  • Ответ 7. Размещение файлов в WEB-INF соблюдается по соображениям безопасности. Например, если несанкционированному лицу разрешен доступ к корневому JSP-файлу непосредственно из URL-адреса, он может перемещаться по всему приложению без какой-либо проверки подлинности и получать доступ ко всем защищенным данным.

META-INF


Вопрос. Что хранится в папке META-INF в проекте Java EE?

  • Ответ 1. Вообще говоря, вы не должны вводить ничего в META-INF самостоятельно.
  • Ответ 2. Следующие файлы / каталоги в каталоге META-INF распознаются и интерпретируются платформой Java 2 для настройки приложений, расширений, загрузчиков классов и служб:
    • MANIFEST.MF — файл манифеста, который используется для определения данных, связанных с расширением и пакетом.
    • INDEX.LIST — файл генерируется новой -iопцией «» инструмента jar, которая содержит информацию о местоположении для пакетов, определенных в приложении или расширении. Он является частью реализации JarIndex и используется загрузчиками классов для ускорения процесса загрузки классов.
    • x.SF — файл подписи для файла JAR. «X» обозначает имя базового файла.
    • x.DSA — Файл блока подписи, связанный с файлом подписи с тем же именем базового файла. Этот файл хранит цифровую подпись соответствующего файла подписи.
    • services/ — в этом каталоге хранятся все файлы конфигурации поставщика услуг.
  • Папка META-INF — это домашний файл MANIFEST.MF . Этот файл содержит метаданные о содержимом JAR. Например, есть запись под названием Main-Class, которая указывает имя класса Java со статическим main () для исполняемых JAR-файлов.