我想知道是否有办法使用外部sonar.properties和wrapper.conf文件启动SonarQube(5.0.1)服务器。
我正在寻找类似于apache" -f"选项 -
/apache2/bin/apachectl -f /path/to/httpd.conf
感谢。
=============================================== =========
如下面的答案中所述,我尝试使用环境变量引用属性。这适用于某些属性。恩。 sonar.jdbc.username& sonar.jdbc.password
对于我来说,作为具有多个环境变量的属性值,它不起作用。
实施例。 sonar.jdbc.url = JDBC:MySQL的:// $ {ENV:MYSQL_HOST}:$ {ENV:MYSQL_PORT} /声纳= ?了useUnicode =真安培;的characterEncoding = UTF8&安培; rewriteBatchedStatements =真
这是我得到的例外 -
2015.03.17 11:48:33 INFO web[o.s.c.p.Database] Create JDBC datasource for= jdbc:mysql://${env:MYSQL_HOST}:${env:MYSQL_PORT}/sonar?useUnicode=3Dtrue&c=
haracterEncoding=3Dutf8&rewriteBatchedStatements=3Dtrue
2015.03.17 11:48:33 ERROR web[o.a.c.c.C.[.[.[/sonar]] Exception sending co= ntext initialized event to listener instance of class org.sonar.server.plat= form.PlatformServletContextListener
java.lang.IllegalStateException: Can not connect to database. Please check = connectivity and settings (see the properties prefixed by 'sonar.jdbc.').
=============================================== ===========
我也试过只有一个env变量 -
$echo $MYSQL_DB_URL
jdbc:mysql://devdbXXX:6000/sonar?useUnicode=true
获得此异常 -
--> Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
WrapperSimpleApp: Encountered an error running main: org.sonar.process.MessageException: Bad format of JDBC URL: ${env:MYSQL_DB_URL}
org.sonar.process.MessageException: Bad format of JDBC URL: ${env:MYSQL_DB_URL}
<-- Wrapper Stopped
如果我对mysql主机网址进行硬编码,则会有效。
与URL格式有关,还在调试......
答案 0 :(得分:4)
在UBUNTU:是的,您可以提供外部文件。如果你在sonarqube bin文件夹中看到sonar.sh文件
#! /bin/sh
#
# Copyright (c) 1999, 2006 Tanuki Software Inc.
#
# Java Service Wrapper sh script. Suitable for starting and stopping
# wrapped Java applications on UNIX platforms.
#
#-----------------------------------------------------------------------------
# These settings can be modified to fit the needs of your application
# Default values for the Application variables, below.
#
# NOTE: The build for specific applications may override this during the resource-copying
# phase, to fill in a concrete name and avoid the use of the defaults specified here.
DEF_APP_NAME="SonarQube"
DEF_APP_LONG_NAME="SonarQube"
# Application
APP_NAME="${DEF_APP_NAME}"
APP_LONG_NAME="${DEF_APP_LONG_NAME}"
# Wrapper
WRAPPER_CMD="./wrapper"
WRAPPER_CONF="../../conf/wrapper.conf"
# Priority at which to run the wrapper. See "man nice" for valid priorities.
# nice is only used if a priority is specified.
PRIORITY=
# Location of the pid file.
PIDDIR="."
您可以在此处定义包装文件的路径WRAPPER_CONF=
,对于sonar.properties,您可以在sonarqube conf文件夹中创建文件链接,并将其重定向到您保存文件的路径。另外一个更难的选择是编辑上面的start.sh文件以接受这些参数作为标志。 (例如,-sp
用于声纳属性,-wc
用于包装器conf)
答案 1 :(得分:1)
可以通过引用环境变量来外部化sonar.properties中的值。
sonarqube / 5.0.1 / conf / sonar.properties header&gt;
# Property values can:
# - reference an environment variable, for example sonar.jdbc.url= ${env:SONAR_JDBC_URL}
看起来这种方法需要最少的文件操作,并解决了我不想对属性值进行硬编码的问题,因为它们会根据环境进行更改。