shell - 无法在 Ubuntu 18.04 上将 AEM 作为服务启动

标签 shell ubuntu aem

我正在尝试在 AWS EC2 实例上的 Ubuntu 18.04 上设置 AEM(Adobe Experience Manager)作者即服务。

脚本文件“aem”位于 /usr/bin/aem (文件权限“root”)

#!/bin/bash
#
# description: This service manages the Adobe Experience Manager java process.
# processname: aem6
. /lib/lsb/init-functions
SCRIPT_NAME=`basename $0`
AEM_ROOT=/opt/aem/author
AEM_USER=root

########
BIN=${AEM_ROOT}/crx-quickstart/bin
START=${BIN}/start
STOP=${BIN}/stop
STATUS=${BIN}/status

case "$1" in
  start)
    if [ -f $START ]; then
       echo "Starting AEM Service.."
       /bin/su -l $AEM_USER -c $START
       RETVAL=$?
       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${SCRIPT_NAME}
    fi
   ;;
   stop)
    if [ -f $STOP ]; then
       echo "Stopping AEM Service.."
       /bin/su -l $AEM_USER -c $STOP
       RETVAL=$?
       [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${SCRIPT_NAME}
    fi
    ;;
    status)
      if [ -f $STATUS ]; then
         echo -s "Checking status of $SCRIPT_NAME: "
         /bin/su -l $AEM_USER -c $STATUS
         RETVAL=$?
         [ $RETVAL -eq 0 ] && echo "$SCRIPT_NAME is running"
      fi
   ;;
   restart)
      /bin/su -l ${AEM_USER} -c ${STOP}
      /bin/su -l ${AEM_USER} -c ${START}
   ;;
   reload)
   ;;
   *)
     echo "Usage: $0 {start|stop|status|reload}"
     RETVAL=1
     ;;
esac
exit $RETVAL

服务文件位于 /etc/systemd/system/aem.service (文件权限“root”)
[Unit]
Description=Adobe Experience Manager

[Service]
Type=simple
ExecStart=/usr/bin/aem start
ExecStop=/usr/bin/aem stop
ExecReload=/usr/bin/aem restart
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

检查服务状态时:
ubuntu@ip-109:~$ sudo systemctl status aem 
aem.service - Adobe Experience Manager
Loaded: loaded (/etc/systemd/system/aem.service; enabled; vendor preset: enabled)
Active: active (exited) since Wed 2019-10-23 20:25:21 UTC; 3min 24s ago
Process: 20106 ExecStart=/usr/bin/aem start (code=exited, status=0/SUCCESS)
Main PID: 20106 (code=exited, status=0/SUCCESS)

Oct 23 20:25:21 ip-172-31-14-109 systemd[1]: Started Adobe Experience Manager.
Oct 23 20:25:21 ip-172-31-14-109 aem[20106]: Starting AEM Service..
Oct 23 20:25:21 ip-172-31-14-109 su[20122]: Successful su for root by root
Oct 23 20:25:21 ip-172-31-14-109 su[20122]: + ??? root:root
Oct 23 20:25:21 ip-172-31-14-109 su[20122]: pam_unix(su:session): session opened for user root by (uid=0)
Oct 23 20:25:21 ip-172-31-14-109 aem[20106]: mesg: ttyname failed: Inappropriate ioctl for device
Oct 23 20:25:21 ip-172-31-14-109 su[20122]: pam_unix(su:session): session closed for user root

但看不到“java”进程(使用 ps -ef | grep java)或端口“4502”正在使用(使用 sudo lsof -i -P -n | grep LISTEN)。

我错过了什么?

最佳答案

能够解决问题。问题在于并非所有用户都可以使用“java”。使用默认 (ubuntu) 用户安装 Oracle Java,而 aem脚本作为 root 运行.

安装自定义 Java 的步骤 .. 不是 Ubuntu 默认设置:

  • 下载tar.gz文件“https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz”
  • 使用 SCP
  • 将文件复制到服务器
  • 创建目录mkdir /opt/java
  • 安装复制sudo tar -zxf jdk-8u231-linux-x64.tar.gz -C /opt/java/
  • 更新您的环境以允许所有用户使用 Java。运行此命令
  • sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.8.0_231/bin/java 1
  • 将路径添加到“.bashrc”。打开编辑sudo nano ~/.bashrc
  • 将这些行添加到文件的末尾:
  • export JAVA_HOME=/opt/java/jdk1.8.0_231
  • export PATH=${PATH}:${JAVA_HOME}/bin

  • 在此之后.. 再次启动“aem”服务。它应该工作!

    关于shell - 无法在 Ubuntu 18.04 上将 AEM 作为服务启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58530943/

    相关文章:

    bash - 一个shell脚本如何控制另一个脚本

    linux - Shell 脚本 - 查找今天修改的文件,创建目录并将它们移动到那里

    ubuntu - Windows 10 Ubuntu WSL 无法显示 grep 输出文件名

    java - 如何在 aem groovy 控制台中获取服务?

    dialog - 如何更改 cq :inplaceEditing 的持久性属性

    AEM DefaultValue 写入 JCR

    linux - awk 以尾随零打印 2 个以上的十进制值

    linux - 将并行进程 bash 脚本输出重定向到单个日志文件

    java - 该方法必须覆盖父类(super class)方法

    eclipse - Ubuntu : install lombok in Eclipse IDE show error "can' t write directory"even using sudo