Pull to refresh

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

Lumber room
Awaiting invitation
Недавно пришлось поднимать Стеклянную рыбу на Убунте с нуля. Здесь я расскажу по-порядку про установку и настройку этой связки.
Имеется 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 http://archive.canonical.com/ 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 http://download.java.net/glassfish/3.0.1/release/glassfish-3.0.1.zip
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

Спасибо за внимание.
Tags:
Hubs:
You can’t comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.