操作系統:centos 7 (x86)
一、問題描述:使用root啟動時,一直反饋 SonarQube is not running
問題原因:不能夠使用root用戶進行啟動
解決方案:①創建一個其他用戶(如sonar) adduser sonar 設置密碼 passwd sonar
②更改sonarqube的安裝目錄的用戶組 chown -R sonar:sonar sonarqube-XXX
③切換用戶啟動 su sonar xxxx/sonar.sh start
二、啟動時可能會遇到一個現象, 服務一會掛掉或者啟動不起來,使用sonar.sh console 命令查看后,輸出日志如下:
wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. jvm 1 | jvm 1 | 2020.09.14 23:51:49 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqu jvm 1 | 2020.09.14 23:51:49 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001 jvm 1 | 2020.09.14 23:51:49 ERROR app[][o.s.a.p.ManagedProcessHandler] Fail to launch process [es] jvm 1 | java.lang.IllegalStateException: Cannot write Elasticsearch yml settings file jvm 1 | at org.sonar.application.es.EsYmlSettings.writeToYmlSettingsFile(EsYmlSettings.java:53) jvm 1 | at org.sonar.application.ProcessLauncherImpl.writeConfFiles(ProcessLauncherImpl.java:151) jvm 1 | at org.sonar.application.ProcessLauncherImpl.launch(ProcessLauncherImpl.java:84) jvm 1 | at org.sonar.application.SchedulerImpl.lambda$tryToStartProcess$2(SchedulerImpl.java:196) jvm 1 | at org.sonar.application.process.ManagedProcessHandler.start(ManagedProcessHandler.java:73) jvm 1 | at org.sonar.application.SchedulerImpl.tryToStartProcess(SchedulerImpl.java:194) jvm 1 | at org.sonar.application.SchedulerImpl.tryToStartEs(SchedulerImpl.java:146) jvm 1 | at org.sonar.application.SchedulerImpl.tryToStartAll(SchedulerImpl.java:138) jvm 1 | at org.sonar.application.SchedulerImpl.schedule(SchedulerImpl.java:112) jvm 1 | at org.sonar.application.App.start(App.java:69) jvm 1 | at org.sonar.application.App.main(App.java:98) jvm 1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) jvm 1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) jvm 1 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.j jvm 1 | at java.base/java.lang.reflect.Method.invoke(Method.java:566) jvm 1 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240) jvm 1 | at java.base/java.lang.Thread.run(Thread.java:834) jvm 1 | Caused by: java.nio.file.AccessDeniedException: /opt/sonarqube-7.6/temp/conf/es/elasticsearch.yml jvm 1 | at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90) jvm 1 | at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
問題原因: 用root啟動過會創建temp目錄,該目錄為root用戶所有,使用自己創建的sonar用戶啟動時就會報錯
解決方案:使用root用戶修改該文件夾的用戶組(temp),讓它屬於sonarqube的啟動用戶(自己創建的那個),再次啟動就ok了
chown -Rf sonar:sonar /opt/sonarqube-7.6/temp