LINUX.ORG.RU
ФорумAdmin

Переделка скрипта initd в systemd для Centos 7

 , , ,


0

3

Добрый день. Поднял на виртуалке Centos 7 openmeetings 3.0.3(сервер видеоконференций) через https. Все работает прекрасно, но столкнулся с багом, если подключаться удаленно через ssh(терминал) или vnc(запуск в графической среде gnome или xfce4) и стартовать скрипт запуска openmeetings, то не работает конвертация документов(doc,xls и т.д.), pdf и картинки загружаются на рабочую область нормально. Так же если захожу на вирт.машину на прямую через консоль(без граф.оболочки) и стартую openmeetings, то конвертация документов не работает,но если запустить gnome или xfce и оттуда запустить,то конвертация работает. Грешу на libreoffice что он не может полноценно работать(не стартуют определенные библиотеке или еще что...) при запуске в centos через терминал(прямой доступ без ssh) или удаленное подключение по vnc(хотя граф.часть отображается раб.стол,среда и т.д. значит оно все таки загружается...). Поэтому решил переделать скрипт запуска openmeetings в systemd для автозагрузки, может тогда все нужное само будет подтягиваться, да и руками каждые раз чтобы не запускать.

Оригинальный скрипт запуска red5:
#!/bin/sh -e
#
# Startup script for Red5
export RED5_HOME=/opt/red5303
start_red5="$RED5_HOME/red5.sh start"
stop_red5="$RED5_HOME/red5-shutdown.sh stop"
start() {
echo -n "Starting Red5: "
${start_red5} &
echo "done."
}stop() {
echo -n "Shutting down Red5: "
${stop_red5}
echo "done."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 10
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac
exit 0

Вариант для openmeetings red5.service

[Unit]
Description=Run script Red5
After=syslog.target network.target
[Service]
Type=forking
RemainAfterExit=yes
ExecStart=/opt/red5303/red5.sh start
ExecStop=/opt/red5303/red5-shutdown.sh stop
PIDFile=/var/run/red5
[Install]
WantedBy=multi-user.target
Опыта с systemd вообще нет, читал мануал к нему, тяжко. Дайте пожалуйста добрый совет может я вообще не туда копаю и есть способ разобраться в офисе?



Последнее исправление: cetjs2 (всего исправлений: 2)

по поводу нерабочего LO надо смотреть в сторону SELinux. в owncloud такая же проблема.

была решена настройкой selinux

powerguy ★★★
()
Последнее исправление: powerguy (всего исправлений: 1)
Ответ на: комментарий от powerguy

показываю /opt/red5303/red5.sh

#!/bin/bash

if [ -z "$RED5_HOME" ]; then 
  export RED5_HOME=`pwd`; 
fi

P=":" # The default classpath separator
OS=`uname`
case "$OS" in
  CYGWIN*|MINGW*) # Windows Cygwin or Windows MinGW
  P=";" # Since these are actually Windows, let Java know
  ;;
  Darwin*)

  ;;
  SunOS*)
      if [ -z "$JAVA_HOME" ]; then 
          export JAVA_HOME=/opt/local/java/sun6; 
      fi
  ;;
  *)
  # Do nothing
  ;;
esac

echo "Running on " $OS

# JAVA options
# You can set JVM additional options here if you want
if [ -z "$JVM_OPTS" ]; then 
    JVM_OPTS="-Xverify:none -XX:+TieredCompilation -XX:+UseBiasedLocking -XX:+UseStringCache -XX:+UseParNewGC -XX:InitialCodeCacheSize=8m -XX:ReservedCodeCacheSize=32m -Dorg.terracotta.quartz.skipUpdateCheck=true"
fi
# Set up logging options
LOGGING_OPTS="-Dlogback.ContextSelector=org.red5.logging.LoggingContextSelector -Dcatalina.useNaming=true"
# Set up security options
SECURITY_OPTS="-Djava.security.debug=failure"
# Jython options
JYTHON="-Dpython.home=lib"

export JAVA_OPTS="$LOGGING_OPTS $SECURITY_OPTS $JAVA_OPTS $JVM_OPTS $JYTHON"

if [ -z "$RED5_MAINCLASS" ]; then
  export RED5_MAINCLASS=org.red5.server.Bootstrap
fi

for JAVA in "${JAVA_HOME}/bin/java" "${JAVA_HOME}/Home/bin/java" "/usr/bin/java" "/usr/local/bin/java"
do
  if [ -x "$JAVA" ]
  then
    break
  fi
done

if [ ! -x "$JAVA" ]
then
  echo "Unable to locate Java. Please set JAVA_HOME environment variable."
  exit
fi

export RED5_CLASSPATH="${RED5_HOME}/red5-service.jar${P}${RED5_HOME}/conf${P}${CLASSPATH}"

# start Red5
echo "Starting Red5"
exec "$JAVA" -Dred5.root="${RED5_HOME}" $JAVA_OPTS -cp "${RED5_CLASSPATH}" "$RED5_MAINCLASS" $RED5_OPTS
orel56
() автор топика
Ответ на: комментарий от disarmer

Это очень плохой совет. Где гарантия, что дисплей обязательно будет :0? В конце концов, где гарантия, что иксы будут запущены к моменту старта юнита? (А они наверняка не будут, потому что это хедлесс-виртуалка.)

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от powerguy

Тупо отключив SELInux проблему не решило.

Буду копать тогда дальше в этом направлении.

orel56
() автор топика
Ответ на: комментарий от intelfx

Я как понял дисплей там используется только в вызываемом libreoffice, так что к моменту обработки запроса скорее всего уже будут(если конечно запускаются при загрузке)

Дисплей может быть и не :0, но в инитскрипте я его не увидел, поэтому дефолт. По хорошему надо смотреть env в запущенных иксах

disarmer ★★★
()
Ответ на: комментарий от intelfx

Можно же в After= указать после какой службы грузиться или же в WantedBy=graphical.target но хотелось бы без него.)

orel56
() автор топика
Ответ на: комментарий от disarmer

делаю systemctl daemon-reload потом systemctl start red5.service пишет

Unit red5.service has begun starting up.
дек 11 14:51:32 OPENMEETINGS red5.sh[5720]: Running on  Linux
дек 11 14:51:32 OPENMEETINGS red5.sh[5720]: Starting Red5
дек 11 14:51:33 OPENMEETINGS red5.sh[5720]: Error: Could not find or load main c
дек 11 14:51:33 OPENMEETINGS systemd[1]: red5.service: control process exited, c
дек 11 14:51:33 OPENMEETINGS systemd[1]: Failed to start squash portage & layman
-- Subject: Unit red5.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit red5.service has failed.
-- 
-- The result is failed.
дек 11 14:51:33 OPENMEETINGS systemd[1]: Unit red5.service entered failed state.
lines 8-30/30 (END)

содержание red5.service

[Unit]
Description=squash portage & layman tree
After=syslog.target network.target

[Service]
Type=forking
RemainAfterExit=yes
ExecStart=/opt/red5303/red5.sh start
ExecStop=/opt/red5303/red5-shutdown.sh stop
Environment=DISPLAY=:0
PIDFile=/var/run/red5

[Install]
WantedBy=multi-user.target

orel56
() автор топика
Ответ на: комментарий от orel56

Ни один из этих способов не подходит.

WantedBy=graphical.target означает лишь, что юнит будет автозапускаться при запуске системы в графическом режиме (эквивалент пятого ранлевела) — что совершенно не гарантирует упорядочивания относительно других юнитов (любых).

After=display-manager.service уже ближе, но всё равно некорректно, т. к. дисплейный менеджер не обязан запускать иксы сразу же после своего запуска.

Естественно, здесь мы рассматриваем «как правильно». Если делать в режиме «авось заработает», тогда, конечно, всё допустимо... А, в любом случае, здесь дело наверняка не в иксах. Иначе бы при запуске из VNC-сессии всё работало.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

LO для OM x-сервер не нужен. На DISPLAY должен быть пустым!

vel ★★★★★
()
Ответ на: комментарий от intelfx

Согласен.

С офисом возможно нужно копать в сторону SELinux. А пока можно вернуться в сторону скрипт запуска red5.sh он по сути запускает java сервер red5. Systemd и java это вообще реально? Я не нашел в гугле не одной внятной статьи прото как запустить red5 и подобное ему через systemd...

orel56
() автор топика

systemd вроде хотел же решать проблемы а не создавать?

Как же столько благородных донов спорят вокруг какого ерундового скрипта?

APM
()

в runlevel 5 загрузку ставить не пробовал ?

handbrake ★★★
()
Ответ на: комментарий от intelfx

Стартонуло!!! Финальный вариант red5.service:

[Unit]
Description=Run script Red5 
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/opt/red5303/red5.sh start
ExecStop=/opt/red5303/red5-shutdown.sh stop
Environment=DISPLAY=:0
WorkingDirectory=/opt/red5303

[Install]
WantedBy=multi-user.target

делаю systemctl daemon-reload потом systemctl start red5.service потом systemctl enable red5.service перезагружаюсь и проверяю. Все работает за исключением конвертации документов))) неунываю, тут же запускаю gnome или xfce4 при этом не останавливую red5.service и чудо конвертация работает))) Надо крутить офис за я**а. Спасибо огромное ВСЕМ за помощь!!!

orel56
() автор топика
6 апреля 2015 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.