【问题标题】:Atlassian Fisheye Crucible - Init.d service fisheye No default permission scheme exists Error creating bean with name 'defaultMentionParserListener'Atlassian Fisheye Crucible - Init.d service fisheye 不存在默认权限方案 创建名为“defaultMentionParserListener”的 bean 时出错
【发布时间】:2017-07-24 02:29:16
【问题描述】:

Ubuntu 14.04(VirtualBox/Vagrant 机器)。

鱼眼神器zip version: 3.9.1

由于它没有附带init.d级别的启动脚本,所以我创建了以下脚本/etc/init.d/fisheye

#!/bin/bash

# FISHEYE_HOME: The path to the FishEye installation. It's recommended to create a symbolic link to the latest version so
# the process will still work after upgrades. Be sure to update the symlink itself when upgrading.
# Example: ln -s /usr/local/atlassian/applications/fisheye/4.2.0 /usr/local/atlassian/applications/fisheye/latest
FISHEYE_HOME="/mnt/fecru-3.9.1"

# FISHEYE_INST: The path to store Fisheye data.
# The 2 lines below should be uncommented only if you don't have the environment variables set in /etc/environment file.
#export FISHEYE_INST="/mnt/fecru-3.9.1_fisheye_data"
#mkdir -p $FISHEYE_INST || sudo mkdir -p $FISHEYE_INST

fisheyectl() {
    if [ ! -f "$FISHEYE_HOME/fisheyeboot.jar" ] ; then
       echo "Error: Could not find $FISHEYE_HOME/fisheyeboot.jar"  
       exit 1
    fi
    #exec "$FISHEYE_HOME/bin/fisheyectl.sh" "$1"
    "$FISHEYE_HOME/bin/fisheyectl.sh" "$1"
}

case "$1" in
        start)
                fisheyectl start
                ;;
        stop)
                fisheyectl stop
                ;;
        restart)
                fisheyectl stop
                sleep 10
                fisheyectl start
                ;;
        status)
                fecru_pid=$(ps -eAf|grep fecru|grep -v grep|sed "s/[ \t][ \t]*/ /g"|cut -d" " -f2|head -1)
                if [[ -n "${fecru_pid}" ]]; 
                then
                    echo "Process 'fecru' fisheye/crucible is running. PID (${fecru_pid})"
                else
                    echo "Process 'fecru' fisheye/crucible is NOT running."
                fi
                ;;

        *)
                echo "Usage: $0 {start|stop|status|restart}"
esac

echo "- Log files are available here:" 
if [[ -n "${FISHEYE_INST}" ]]; 
then
  echo "$(find "${FISHEYE_INST}/var/log" | sed "s/^/  /")"; 
else
  echo "$(find "${FISHEYE_HOME}/var/log" | sed "s/^/  /")"
fi
echo

exit 0

作为root 用户,当我尝试运行service fisheye start 时,我看到它启动了进程,但最终失败并显示以下主要错误。

2017-03-03 19:59:30,586 ERROR - No default permission scheme exists
2017-03-03 19:59:30,743 ERROR - The Web context could not be started
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'defaultMentionParserListener' defined in URL 

完整日志: /mnt/fecru-3.9.1/var/log/fisheye.out file: download here

我怎样才能得到这个决心并开始鱼眼? 文件夹 /mnt/fecru-3.9.1 对用户 root 具有有效的 775 权限(递归设置)。

打开 fisheyectl.sh 文件的调试(shell / bash -x)选项,显示:

+ CMD=/usr/bin/java  -Xmx1024m  -Dfisheye.library.path= -Dfisheye.inst=/mnt/fecru-3.9.1 -Djava.awt.headless=true -Djava.endorsed.dirs=/mnt/fecru-3.9.1/lib/endorsed -jar /mnt/fecru-3.9.1/fisheyeboot.jar start 
+ echo Starting FishEye/Crucible... Output redirected to /mnt/fecru-3.9.1/var/log/fisheye.out
Starting FishEye/Crucible... Output redirected to /mnt/fecru-3.9.1/var/log/fisheye.out
+ whoami
root
+ echo

+ echo

+ nohup sh -c exec /usr/bin/java  -Xmx1024m  -Dfisheye.library.path= -Dfisheye.inst=/mnt/fecru-3.9.1 -Djava.awt.headless=true -Djava.endorsed.dirs=/mnt/fecru-3.9.1/lib/endorsed -jar /mnt/fecru-3.9.1/fisheyeboot.jar start 

【问题讨论】:

    标签: bash permissions init.d atlassian-fisheye atlassian-crucible


    【解决方案1】:

    我不必是root。我转向 root 用户,因为我遇到了那些奇怪的权限问题,即使 vagrant/root 用户在 /mnt/fecru-3.9.1 文件夹上递归设置了 775 (vagrant:root as chown)。

    解决方案是: 1) 我将 init.d 级别脚本更改为设置 FISHEYE_INST 文件夹(与 /mnt/fecru-3.9.1 文件夹不同。

    #!/bin/bash
    
    # FISHEYE_HOME: The path to the FishEye installation. It's recommended to create a symbolic link to the latest version so
    # the process will still work after upgrades. Be sure to update the symlink itself when upgrading.
    # Example: ln -s /usr/local/atlassian/applications/fisheye/4.2.0 /usr/local/atlassian/applications/fisheye/latest
    FISHEYE_HOME="/mnt/fecru-3.9.1"
    
    # FISHEYE_INST: The path to store Fisheye data.
    # The 2 lines below should be uncommented only if you don't have the environment variables set in /etc/environment file.
    export FISHEYE_INST="/mnt/fecru-3.9.1_fisheye_data"
    mkdir -p $FISHEYE_INST || sudo mkdir -p $FISHEYE_INST
    
    fisheyectl() {
        if [ ! -f "$FISHEYE_HOME/fisheyeboot.jar" ] ; then
           echo "Error: Could not find $FISHEYE_HOME/fisheyeboot.jar"  
           exit 1
        fi
        "$FISHEYE_HOME/bin/fisheyectl.sh" "$1" 
    }
    
    case "$1" in
            start)
                    fisheyectl start
                    ;;
            stop)
                    fisheyectl stop
                    ;;
            restart)
                    fisheyectl stop
                    sleep 10
                    fisheyectl start
                    ;;
            status)
            fecru_pid=$(ps -eAf|grep fecru|grep -v grep|sed "s/[ \t][ \t]*/ /g"|cut -d" " -f2|head -1)
                    if [[ -n "${fecru_pid}" ]]; 
                    then
                        echo "Process 'fecru' fisheye/crucible is running. PID (${fecru_pid})"
                    else
                        echo "Process 'fecru' fisheye/crucible is NOT running."
                    fi
                    ;;
    
            *)
                    echo "Usage: $0 {start|stop|status|restart}"
    esac
    
    echo "- Log files are available here:" 
    if [[ -n "${FISHEYE_INST}" ]]; 
    then
      echo "$(find "${FISHEYE_INST}/var/log" 2>/dev/null | sed "s/^/  /")"; 
    else
      echo "$(find "${FISHEYE_HOME}/var/log" 2>/dev/null | sed "s/^/  /")"
    fi
    echo
    
    exit 0
    

    2) 注意:/mnt/fecru-3.9.1 文件夹是我解压缩放在/mnt 文件夹下的工件得到的。 3) 当我设置FISHEYE_INST 变量时,该进程将使用该文件夹(用于运行Fisheye/Crucible)进程并将其数据/日志存储在/mnt/fecru-3.9.1_fisheye_data

    4) 现在我可以是任何具有有效sudo 访问权限的用户(并且不必是root)。

    5) 所以我跑了sudo service fisheye startsudo service fisheye status,这个启动步骤在端口 8060(默认)上启动了 Fisheye 门户。

    vagrant@myubuntuvagrant:~$ sudo service fisheye status
    Process 'fecru' fisheye/crucible is running. PID (9080)
    - Log files are available here:
      /mnt/fecru-3.9.1_fisheye_data/var/log
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheye-2017-03-03.log
      /mnt/fecru-3.9.1_fisheye_data/var/log/fisheye.out
    

    这次日志文件(根据基于 FISHEYE_INST 的新位置)是:/mnt/fecru-3.9.1_fisheye_data/var/log/fisheye.out,它显示以下内容:

        17  2017-03-03 21:25:54,927 INFO  - =======================================================
        18  2017-03-03 21:25:54,927 INFO  - 
        19  2017-03-03 21:25:54,928 INFO  - Welcome to FishEye!
        20  2017-03-03 21:25:54,928 INFO  - 
        21  2017-03-03 21:25:54,928 INFO  - You need to configure an admin password and enter your
        22  2017-03-03 21:25:54,928 INFO  - license key. You can do this by accessing FishEye through
        23  2017-03-03 21:25:54,928 INFO  - a web browser, once the server has started:
        24  2017-03-03 21:25:54,928 INFO  - 
        25  2017-03-03 21:25:54,935 INFO  - http://myubuntuvagrant:8060
        26  2017-03-03 21:25:54,935 INFO  - 
        27  2017-03-03 21:25:54,936 INFO  - Refer to the FishEye administration guide
        28  2017-03-03 21:25:54,936 INFO  - for more information:
        29  2017-03-03 21:25:54,936 INFO  - 
        30  2017-03-03 21:25:54,937 INFO  - https://confluence.atlassian.com/display/FISHEYE/Starting+to+use+FishEye
        31  2017-03-03 21:25:54,937 INFO  - 
        32  2017-03-03 21:25:54,937 INFO  - =======================================================
        33  2017-03-03 21:25:54,937 INFO  - 
        34  2017-03-03 21:25:54,940 INFO  - Your Server ID is B0SX-F5FH-3753-40DM
        35  2017-03-03 21:25:55,251 INFO  - Adding secondary content dir of /mnt/fecru-3.9.1_fisheye_data/content
        36  2017-03-03 21:26:02,175 INFO  - Starting database...
        37  2017-03-03 21:26:03,233 INFO  - BoneCP - tracking statements enabled for pool [mainPool]
        38  2017-03-03 21:26:05,304 INFO  - BoneCP - tracking statements enabled for pool [retriablePool]
        39  2017-03-03 21:26:05,786 INFO  - Database started.
        40  2017-03-03 21:26:07,515 INFO  - Starting plugin system...
    2017-03-03 21:25:54,937 INFO  - 
    2017-03-03 21:25:54,937 INFO  - =======================================================
    2017-03-03 21:25:54,937 INFO  - 
    2017-03-03 21:25:54,940 INFO  - Your Server ID is B0SX-F5FH-3753-40DM
    2017-03-03 21:25:55,251 INFO  - Adding secondary content dir of /mnt/fecru-3.9.1_fisheye_data/content
    2017-03-03 21:26:02,175 INFO  - Starting database...
    2017-03-03 21:26:03,233 INFO  - BoneCP - tracking statements enabled for pool [mainPool]
    2017-03-03 21:26:05,304 INFO  - BoneCP - tracking statements enabled for pool [retriablePool]
    2017-03-03 21:26:05,786 INFO  - Database started.
    2017-03-03 21:26:07,515 INFO  - Starting plugin system...
    2017-03-03 21:26:11,119 INFO  - Mail system not configured.
    2017-03-03 21:26:55,616 INFO  - Plugin system started.
    2017-03-03 21:26:57,088 INFO  - Server started on :8060 (http) (control port on 127.0.0.1:8059)
    

    注意:当我使用 Vagrant 机器时,在我的 vagrant 文件配置 Vagrantfile 中,我的访客 VM (ubuntu) 和主机 (Mac OS) 上有以下端口映射。

      # Create a forwarded port mapping which allows access to a specific port
      # within the machine from a port on the host machine. In the example below,
      # accessing "localhost:8080" will access port 80 on the guest machine.
      config.vm.network "forwarded_port", guest: 80, host: 8180
      config.vm.network "forwarded_port", guest: 8060, host: 8160
    

    这意味着,我可以访问在我的主机 Mac 机器上的端口 8060 上运行在来宾 VM 中的应用程序/门户,作为端口 8160。

    因此,执行http://localhost:8160 -OR- http://10.20.30.40:8160(我的 Mac 机器的 IP)将显示 Fisheye 门户正在运行,我可以轻松配置。

    我不知道为什么默认安装文件夹是 /mnt/fecru-3.9.1,因为我将 FISHEYE_INST 变量注释掉了,然后即使用户/所有者和组设置为 vagrant/root,我也会收到这些错误并在整个路径中具有775 权限。

    设置FISHEYE_INST 解决了这个问题。

    这个 init.d 脚本也可以通过添加一点逻辑来创建一个 PID 文件来增强。

    操作 startstoprestartstatus 都按预期工作。

    vagrant@myubuntuvagrant:~$ sudo service fisheye status
    Process 'fecru' fisheye/crucible is running. PID (9080)
    - Log files are available here:
      /mnt/fecru-3.9.1_fisheye_data/var/log
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheye-2017-03-03.log
      /mnt/fecru-3.9.1_fisheye_data/var/log/fisheye.out
    
    vagrant@myubuntuvagrant:~$ sudo service fisheye stop
    INFO  - Using log4j configuration file: /mnt/fecru-3.9.1/log4j-client.xml
    INFO  - FishEye arguments: []
    FishEye Shutdown successfully
    Problem connecting to 127.0.0.1:8059
    java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:210)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
        at java.io.InputStreamReader.read(InputStreamReader.java:184)
        at java.io.BufferedReader.fill(BufferedReader.java:161)
        at java.io.BufferedReader.readLine(BufferedReader.java:324)
        at java.io.BufferedReader.readLine(BufferedReader.java:389)
        at com.cenqua.fisheye.ctl.BaseRemoteCommand.sendCommand(BaseRemoteCommand.java:96)
        at com.cenqua.fisheye.ctl.BaseRemoteCommand.mainImpl(BaseRemoteCommand.java:57)
        at com.cenqua.fisheye.ctl.Stop.main(Stop.java:11)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.cenqua.fisheye.FishEyeCtl.mainImpl(FishEyeCtl.java:101)
        at com.cenqua.fisheye.FishEyeCtl.main(FishEyeCtl.java:44)
    - Log files are available here:
      /mnt/fecru-3.9.1_fisheye_data/var/log
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheye-2017-03-03.log
      /mnt/fecru-3.9.1_fisheye_data/var/log/fisheye.out
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheyectl-2017-03-03.log
    
    vagrant@myubuntuvagrant:~$ sudo service fisheye status
    Process 'fecru' fisheye/crucible is NOT running.
    - Log files are available here:
      /mnt/fecru-3.9.1_fisheye_data/var/log
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheye-2017-03-03.log
      /mnt/fecru-3.9.1_fisheye_data/var/log/fisheye.out
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheyectl-2017-03-03.log
    
    vagrant@myubuntuvagrant:~$ sudo service fisheye start
    Starting FishEye/Crucible... Output redirected to /mnt/fecru-3.9.1_fisheye_data/var/log/fisheye.out
    - Log files are available here:
      /mnt/fecru-3.9.1_fisheye_data/var/log
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheye-2017-03-03.log
      /mnt/fecru-3.9.1_fisheye_data/var/log/fisheye.out
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheyectl-2017-03-03.log
    
    vagrant@myubuntuvagrant:~$ sudo service fisheye status
    Process 'fecru' fisheye/crucible is running. PID (9657)
    - Log files are available here:
      /mnt/fecru-3.9.1_fisheye_data/var/log
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheye-2017-03-03.log
      /mnt/fecru-3.9.1_fisheye_data/var/log/fisheye.out
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheyectl-2017-03-03.log
    
    vagrant@myubuntuvagrant:~$ 
    

    6) 门户(每个映射的端口 8160)就像:

    注意:对于在重新启动/启动时自动启动 fisheye 服务/进程的机器,我运行了以下命令:sudo update-rc.d fisheye defaults 并确保 /etc/init.d/fisheye 文件具有有效的 755可执行权限。

    为了测试这一点,在完成上述操作后,我退出了我的 Ubuntu vagrant 机器,转到我的 Vagrantfile 所在的文件夹,然后运行以下命令:vagrant halt; vagrant up; vagrant ssh。我再次登录到我的流浪机器,在那里我运行以下命令以确保 Fisheye/Crucible 服务/进程正在运行:

    vagrant@myubuntuvagrant:~$ ps -eAf|grep fecru
    root      1119     1 65 21:55 ?        00:00:21 /usr/bin/java -Xmx1024m -Dfisheye.library.path= -Dfisheye.inst=/mnt/fecru-3.9.1_fisheye_data -Djava.awt.headless=true -Djava.endorsed.dirs=/mnt/fecru-3.9.1/lib/endorsed -jar /mnt/fecru-3.9.1/fisheyeboot.jar start
    vagrant   2023  1924  0 21:55 pts/0    00:00:00 grep --color=auto fecru
    vagrant@myubuntuvagrant:~$ date
    Fri Mar  3 21:55:39 UTC 2017
    vagrant@myubuntuvagrant:~$ sudo service fisheye status
    Process 'fecru' fisheye/crucible is running. PID (1119)
    - Log files are available here:
      /mnt/fecru-3.9.1_fisheye_data/var/log
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheye-2017-03-03.log
      /mnt/fecru-3.9.1_fisheye_data/var/log/fisheye.out
      /mnt/fecru-3.9.1_fisheye_data/var/log/atlassian-fisheyectl-2017-03-03.log
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 2020-09-05
      相关资源
      最近更新 更多