URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7527
[ Назад ]

Исходное сообщение
"Автозапуск Java прилажений"

Отправлено Alex_Eys , 14-Май-12 10:44 
Здравствуйте уважаемы форумчане!

Необходимо в школе развернуть электронный журнал.
Вот этот вот: http://www.rujel.net/
Система FreeBSD.

В цулом все развернул, все работает. Но когда запускаю сайты через Apache+mod_WebObjects, сайты почему-то кривые...
Не работает ни одна ссылка, все криво и т.д.

Решил не мучаться, а запускать Rujel демоном. Как JavaMonitor.
Над скриптом rc.f/ тож долго голову не ломал - взял за основу тот же JavaMonitor.

Что получилось... Исходный скрипт JavaMonitor:

    #!/bin/sh

    # $FreeBSD: ports/www/webobjects/files/JavaMonitor.sh.in,v 1.3 2012/01/14 08:57:21 dougb Exp $
    #
    # PROVIDE: JavaMonitor
    # REQUIRE: NETWORKING SERVERS
    # BEFORE: DAEMON
    # KEYWORD: shutdown
    #
    # Define these JavaMonitor_* variables in one of these files:
    #       /etc/rc.conf
    #       /etc/rc.conf.local
    #
    # DO NOT CHANGE THESE DEFAULT VALUES HERE

    . /etc/rc.subr

    name="JavaMonitor"
    rcvar=JavaMonitor_enable

    load_rc_config "$name"
    load_rc_config NEXT

    JavaMonitor_enable="${JavaMonitor_enable-"NO"}"
    JavaMonitor_user="${JavaMonitor_user-www}"
    JavaMonitor_flags="${JavaMonitor_flags-"-WOPort 56789"}"
    JavaMonitor_pidfile="${JavaMonitor_pidfile:-/var/run/webobjects/${name}.pid}"
    JavaMonitor_logfile="${JavaMonitor_logfile:-/var/log/webobjects/${name}.log}"
    NEXT_ROOT="${NEXT_ROOT-/usr/local/apple}"

    pidfile="${JavaMonitor_pidfile}"
    logfile="${JavaMonitor_logfile}"
    runuser="${JavaMonitor_user}"

    procname=`basename /usr/local/diablo-jdk1.6.0/bin/java`
    log_args=">>${logfile} 2>&1 "
    run_command="${NEXT_ROOT}/Library/WebObjects/JavaApplications/${name}.woa/${name}"
    flags="-p ${pidfile} ${run_command} ${JavaMonitor_flags}"
    command="/usr/sbin/daemon"
    command_args="${log_args}"

    export NEXT_ROOT=${NEXT_ROOT}

    start_precmd="start_precmd"

    start_precmd()
    {
      if [ "x${runuser}" = "xroot" ]; then
        err 1 "You have to set ${name}_user to a non-root user for security reasons"
      fi
      touch ${pidfile} && chown ${runuser} ${pidfile}
      touch ${logfile} && chown ${runuser} ${logfile}
    }

    run_rc_command "$1"

Мой скрипт:
    #!/bin/sh

    # PROVIDE: Rujel
    # REQUIRE: NETWORKING SERVERS
    # BEFORE:  DAEMON
    # KEYWORD: shutdown

    . /etc/rc.subr

    name="Rujel"
    rcvar=Rujel_enable

    load_rc_config "$name"
    NEXT_ROOT="${NEXT_ROOT-/usr/local/apple}"
    #Rujel_user="${Rujel_user-www}"
    Rujel_enable="${Rujel_enable-"NO"}"
    Rujel_flags="${Rujel_flags-"-WOPort 2000"}"
    Rujel_pidfile="${Rujel_pidfile:-/var/run/webobjects/${name}.pid}"
    Rujel_logfile="${Rujel_logfile:-/var/log/webobjects/${name}.log}"

    pidfile="${Rujel_pidfile}"
    logfile="${Rujel_logfile}"
    #runuser="${Rujel_user}"

    procname=`basename /usr/local/diablo-jdk1.6.0/bin/java`
    log_args=">>${logfile} 2>&1 "
    run_command="${NEXT_ROOT}/Local/Library/WebObjects/Applications/${name}.woa/${name}"
    flags="-p ${pidfile} ${run_command} ${Rujel_flags}"
    command="/usr/sbin/daemon"
    command_args="${log_args}"

    export NEXT_ROOT=${NEXT_ROOT}

    #start_precmd="start_precmd"
    #start_precmd()
    #{
    #    if [ "x${runuser}" = "xroot" ]; then
    #    err 1 "You have to set ${name}_user to a non-root usrt for security reasons"
    #    fi
    #    touch ${pidfile} $$ chown ${runuser} ${pidfile}
    #    touch ${logfile} $$ chown ${runuser} ${logfile}
    #}

    run_rc_command "$1"

При тестировние все работет, но вот при перезагрузке машины Ружель не стартует:
    Reading UNIXClassPath.txt ...
    Launching Rujel.woa ...
    java
    java -DWORootDirectory="/usr/local/apple" -DWOLocalRootDirectory="/usr/local/apple/Local" -DWOUserDirectory="/" -DWOEnvClassPath="" -DWOApplicationClass=net.rujel.Application -DWOPlatform=UNIX -Dcom.webobjects.pid=1626 -classpath WOBootstrap.jar com.webobjects._bootstrap.WOBootstrap -WOPort 2000 -WOFrameworksBaseURL /WebObjects/Rujel.woa/Frameworks
    exec: java: not found

P.S. С java я вообще первый раз имею дело. Как я понимаю, скрипт, который Rujel.woa/Rujel,
после всяких инициалицации, запускает яву, указывает ей Java прилажение. И ошибка то, мол яву не нахожу...
Хотя JavaMonitor запускается без проблем. Еще раз повторюсь Ружель тоже стартует и останавливается rc.d скриптом
без проблем, но только тогда, когдя я уже вошел в систему. А при запуске ПК - фига... А надо чтоб стартовала...

Прошу вашей помощи.


Содержание

Сообщения в этом обсуждении
"Автозапуск Java прилажений"
Отправлено zcasper , 14-Май-12 12:00 
>[оверквотинг удален]
>  exec: java: not found
> P.S. С java я вообще первый раз имею дело. Как я понимаю,
> скрипт, который Rujel.woa/Rujel,
> после всяких инициалицации, запускает яву, указывает ей Java прилажение. И ошибка то,
> мол яву не нахожу...
> Хотя JavaMonitor запускается без проблем. Еще раз повторюсь Ружель тоже стартует и
> останавливается rc.d скриптом
> без проблем, но только тогда, когдя я уже вошел в систему. А
> при запуске ПК - фига... А надо чтоб стартовала...
> Прошу вашей помощи.

Порядок инициализации системы проверяли?


"Автозапуск Java прилажений"
Отправлено dima , 14-Май-12 12:39 

>> при запуске ПК - фига... А надо чтоб стартовала...
>> Прошу вашей помощи.

прописать путь к java в скрипте


"Автозапуск Java прилажений"
Отправлено Alex_Eys , 14-Май-12 13:10 
>>> при запуске ПК - фига... А надо чтоб стартовала...
>>> Прошу вашей помощи.
> прописать путь к java в скрипте

Спасибо.

Скрипт, который запускает Java приложение:
  ...
  eval exec java ...

подправил на:
  eval exec /usr/local/bin/java ...

Все нормально работает.

P.S.
Только я дурак или лыжи не едут?
Он же должен без полного пути видеть /usr/local/bin/java. И опять же в JavaMonitor указано просто java  и работает...

В принципе проблема решена, но мне такое решение не очень нравится. Потому что не понимаю, почему в одном случае нормально работает (JavaMonitor), в другом нет, надо полностью путь прописывать...


"Автозапуск Java прилажений"
Отправлено deadmustdie , 14-Май-12 13:54 
> Он же должен без полного пути видеть /usr/local/bin/java. И опять же в
> JavaMonitor указано просто java  и работает...

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

PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
export PATH

> В принципе проблема решена, но мне такое решение не очень нравится. Потому
> что не понимаю, почему в одном случае нормально работает (JavaMonitor), в
> другом нет, надо полностью путь прописывать...

При запуске из консоли срабатывает пользовательский файл инициализации, в котором
могут быть прописаны свои отдельные пути запуска программ.


"Автозапуск Java прилажений"
Отправлено baywind , 25-Май-12 13:14 
> В цулом все развернул, все работает. Но когда запускаю сайты через Apache+mod_WebObjects,
> сайты почему-то кривые...
> Не работает ни одна ссылка, все криво и т.д.

Описание проблемы смутное, но похоже, что не подгружаются статические ресурсы (JavaScript, CSS, картинки).
Apache должен отдавать их сам напрямую (не через WebObjects). А для этого что-то где-то надо настроить.
Посмотрите, где он их пытается взять и настройте Apache, чтобы по этому URL отдавал содержимое директорий WebServerResources в Rujel.woa и фреймворках.

> Решил не мучаться, а запускать Rujel демоном. Как JavaMonitor.

Так делать не рекомендуется, поскольку при прямом доступе по порту, запущенное WebObjects приложение может принимать управляющие команды.
Например, злоумышленник может установить у себя JavaMonitor и скомандовать из него журналу отключиться.
Хотя, в России немного найдется специалистов, которые об этом знают.

Если удастся добиться успеха, опишите, пожалуйста, установку в вики:
http://atomic.rujel.net/mediawiki/index.php/Сообщество


"Автозапуск Java прилажений"
Отправлено Alex_Eys , 25-Май-12 15:18 
Спасибо. О проблеме безопасности при доступе к WO я не знал.

> Например, злоумышленник может установить у себя JavaMonitor и скомандовать из него журналу отключиться.
> Хотя, в России немного найдется специалистов, которые об этом знают.

Интернет он такой, что знает один, то знают все. А школьники (наиболее заинтересованный взломщик) способны на многое. Вроде сидит себе, не ждешь от него ничего, а он как выдал решение задачи, над которой сам месяц бился и не решил.

Пока меня загрузили другой, очень объемной и важной, работой. Но обязательно, в свободное время, попытаюсь запустить WO через apache. Обещаю при успехе описать процесс установки.

На данный момент я считаю что не очень корректно выкладывать процесс установки Rujel+FreeBSD, раз такая вот проблема с безопасностью. Но если необходимо, я выложу.

С уважением,
Алексей.


"Автозапуск Java прилажений"
Отправлено baywind , 26-Май-12 13:08 
>> Хотя, в России немного найдется специалистов, которые об этом знают.
> Интернет он такой, что знает один, то знают все. А школьники (наиболее

Мало знать о возможности, надо ещё уметь ей воспользоваться.

> На данный момент я считаю что не очень корректно выкладывать процесс установки
> Rujel+FreeBSD, раз такая вот проблема с безопасностью. Но если необходимо, я
> выложу.

Я думаю, пока не горит. Лучше всё таки правильную установку описывать )

Руководства по деплойменту WebObjects на BSD:
на русском:
http://eshade.blogspot.com/2008/10/blog-post_16.html
на английском:
http://wiki.wocommunity.org/x/jwAQ