Инсталяция Glassfish 3.0.1 на Убунту

Недавно пришлось поднимать Стеклянную рыбу на Убунте с нуля. Здесь я расскажу по-порядку про установку и настройку этой связки.
Имеется Glassfish 3.0.1 и Ubuntu 10.04 LTS.
image

1. Настройка системы

Конечно же мы не хотим, чтобы Glassfish стартовал с правами root. Для этого создадим нового пользователя:

#создаём нового пользователя glassfish
sudo adduser --home /home/glassfish --system --shell /bin/bash glassfish
 
#создаём новую группу для администрирования glassfish
sudo groupadd glassfishadm
 
#добавляем пользователя в группу
sudo usermod -a -G glassfishadm $myAdminUser


Настройка и управление Glassfish осуществляется через административный интерфейс, который доступен по-умолчанию по адресу localhost:4848. Желательно чтобы файрвол блокировал доступ к админке извне. Кроме того с сервером идёт и командная утилита asadmin, с помощью которой можно выполнить теже настройки, что и через вебинтерфейс.

2. Java

Glassfish требует JDK 6 (сертифицирован для JDK 1.6.0_20). Рекомендую сначала удалить OpenJDK.

#удаление OpenJDK
sudo apt-get remove openjdk-6-jre openjdk-6-jdk
 
#возможно без этого не пойдёт
sudo apt-get install python-software-properties
 
#добавим репозиторий
sudo add-apt-repository "deb <a href="http://archive.canonical.com/">archive.canonical.com/</a> lucid partner"
 
#обновим
sudo apt-get update
 
#установка JDK
sudo apt-get install sun-java6-jdk sun-java6-jre
 
#можно удалить ненужное
sudo apt-get autoremove
 
#проверка
cd /etc/alternatives
ls -lrt java*


3. Установка Glassfish

Пользователь, которого мы создали выше, скачает и установит сервер в /home/glassfish/

#если нет "unzip" установим его
sudo apt-get install unzip
 
#меняем пользователя
sudo su glassfish
 
#подготовим место для архива
cd /home/glassfish/
mkdir downloads
cd /home/glassfish/downloads/
 
#download & unzip
wget <a href="http://download.java.net/glassfish/3.0.1/release/glassfish-3.0.1.zip">download.java.net/glassfish/3.0.1/release/glassfish-3.0.1.zip</a>
unzip glassfish-3.0.1.zip
 
#перенесём в нужное место
mv /home/glassfish/downloads/glassfishv3/* /home/glassfish/
 
#glassfish user bye-bye
exit
 
#меняем группу дериктории
sudo chgrp -R glassfishadm /home/glassfish
 
#для уверенности: меняем владельца дериктории на glassfish
sudo chown -R glassfish /home/glassfish
 
#делаем исполняемые файлы исполняемыми
sudo chmod -R +x /home/glassfish/bin/
sudo chmod -R +x /home/glassfish/glassfish/bin/


Ну что, первый старт?

#сменим пользователя
sudo su glassfish
 
#стартуем glassfish
/home/glassfish/bin/asadmin start-domain domain1
#должен не ругаться...
 
#останавливаем glassfish
/home/glassfish/bin/asadmin stop-domain domain1
#должен не ругаться...
 
#bye-bye glassfish юзер
exit


4. Старт скрипт

Сделаем, чтобы сервер стартовал и останавливался удобно. Для этого создадим файл /etc/init.d/glassfish и будем использовать утилиту asadmin.

#создадим файл…
sudo vi /etc/init.d/glassfish
#… со следующим содержанием:
#! /bin/sh
 
#если проблема с JAVA_PATH
export AS_JAVA=/usr/lib/jvm/java-6-sun
 
GLASSFISHPATH=/home/glassfish/bin
 
case "$1" in
start)
echo "starting glassfish from $GLASSFISHPATH"
sudo -u glassfish $GLASSFISHPATH/asadmin start-domain domain1
#нам понадобится это позже, когда включим https
#sudo -u glassfish $GLASSFISHPATH/asadmin --secure start-domain domain1
;;
restart)
$0 stop
$0 start
;;
stop)
echo "stopping glassfish from $GLASSFISHPATH"
sudo -u glassfish $GLASSFISHPATH/asadmin stop-domain domain1
#нам понадобится это позже, когда включим https
#sudo -u glassfish $GLASSFISHPATH/asadmin --secure stop-domain domain1
;;
*)
echo $"usage: $0 {start|stop|restart}"
exit 3
;;
esac
:


5. Автостарт

Инит-скрипт у нас есть, сделаем так, чтобы Glassfish стартовал вместе с Убунту.

#инит-скрипт должен быть изполняемым
sudo chmod a+x /etc/init.d/glassfish
 
#стартуй Glassfish вместе с Убунту
sudo update-rc.d glassfish defaults
 
#если установлен apache2:
#остановим apache2
sudo /etc/init.d/apache2 stop
#уберём его из автостарта
update-rc.d -f apache2 remove


Теперь мы можем стартовать Glassfish следующим образом:

#старт
/etc/init.d/glassfish start
 
#стоп
/etc/init.d/glassfish stop
 
#рестарт
/etc/init.d/glassfish restart


6. Настройка безопасности

#наш любимый пользователь
sudo su glassfish
 
#сменим мастер пароль, поумолчанию - пусто
/home/glassfish/bin/asadmin change-master-password --savemasterpassword=true
#prompt: вводим новый пароль ==> myMasterPwd
 
#стартуем Glassfish
/home/glassfish/bin/asadmin start-domain domain1
 
#изменяем пароль администратора
/home/glassfish/bin/asadmin change-admin-password
#1. вводим "admin" для имени (поумолчанию)
#2. нажимаем enter потому что старый пароль пустой
#3. вводим новый пароль ==> myAdminPwd
 
 
/home/glassfish/bin/asadmin login
#prompt:
#user = admin
#password = myAdminPwd
#==> сохраняет файл в /home/glassfish/.asadminpass
 
#теперь останавливаем Glassfish
/home/glassfish/bin/asadmin stop-domain domain1
 
#новый сертификат для https
cd /home/glassfish/glassfish/domains/domain1/config/
keytool -list -keystore keystore.jks -storepass myMasterPwd
keytool -delete -alias s1as -keystore keystore.jks -storepass myMasterPwd
keytool -keysize 2048 -genkey -alias myAlias -keyalg RSA -dname "CN=myHome,O=myHome,L=Brjansk,S=Blub,C=Russia" -validity 3650 -keypass myMasterPwd -storepass myMasterPwd -keystore keystore.jks
keytool -keysize 2048 -genkey -alias s1as -keyalg RSA -dname "CN=myHome,O=myHome,L=Brjansk,S=Blub,C=Russia" -validity 3650 -keypass myMasterPwd -storepass myMasterPwd -keystore keystore.jks
keytool -list -keystore keystore.jks -storepass myMasterPwd
 
 
# изменяем /opt/glassfishv3/glassfish/domains/domain1/config/domain.xml
 
#сначала стартуем Glassfish
/home/glassfish/bin/asadmin start-domain domain1
 
# включаем https для админки
/home/glassfish/bin/asadmin set server-config.network-config.protocols.protocol.admin-listener.security-enabled=true
#==> теперь нужно всегда использовать "asadmin --secure ..."
#соответственно изменяем инит-скрипт /etc/init.d/glassfish
 
#изменение JVM параметров
#смотрим текущие jvm параметры
/home/glassfish/bin/asadmin --secure list-jvm-options
#установим ряд важных jvm параметров
/home/glassfish/bin/asadmin --secure delete-jvm-options -- -client
/home/glassfish/bin/asadmin --secure create-jvm-options -- -server
/home/glassfish/bin/asadmin --secure delete-jvm-options -- -Xmx512m
/home/glassfish/bin/asadmin --secure create-jvm-options -- -Xmx2048m
/home/glassfish/bin/asadmin --secure create-jvm-options -- -Xms1024m
#чтобы никто не догадался, что у нас Стеклянная рыба :)
/home/glassfish/bin/asadmin --secure create-jvm-options -Dproduct.name=""
#рестарт, чтобы изменения вступили в силу
/home/glassfish/bin/asadmin --secure stop-domain domain1
/home/glassfish/bin/asadmin --secure start-domain domain1
#смотрим всё ли правильно
/home/glassfish/bin/asadmin --secure list-jvm-options
 
#параметр x-powered-by в http header также содержит имя сервера - уберём её
/home/glassfish/bin/asadmin --secure set server.network-config.protocols.protocol.http-listener-1.http.xpowered-by=false
/home/glassfish/bin/asadmin --secure set server.network-config.protocols.protocol.http-listener-2.http.xpowered-by=false
/home/glassfish/bin/asadmin --secure set server.network-config.protocols.protocol.admin-listener.http.xpowered-by=false
 
#bye-bye пользователь glassfish
exit


7. Go-go Glassfish

Ну вот и всё, наслаждаемся…

#стартуем glassfish
sudo /etc/init.d/glassfish start
 
#убираем glassfish из автозапуска
#update-rc.d -f glassfish remove

Спасибо за внимание.


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.