SonarQube 6.5から6.6にアップグレードした後、elasticsearchを取得すると「rootとして実行できません」エラーが発生します。他に変更はありません。
CentOSリリース6.8(最終)Java(TM)SEランタイム環境(ビルド1.8.0_101-b13)
Java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.Java:106) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.Java:195) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.Java:342) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.Java:132) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.Java:123) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.Java:67) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.Java:134) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.cli.Command.main(Command.Java:90) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:91) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:84) [elasticsearch-5.6.2.jar:5.6.2]
2017.10.20 11:59:14 WARN es[][o.e.b.ElasticsearchUncaughtExceptionHandler] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: Java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.Java:136) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.Java:123) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.Java:67) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.Java:134) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.cli.Command.main(Command.Java:90) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:91) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:84) ~[elasticsearch-5.6.2.jar:5.6.2]
Caused by: Java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.Java:106) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.Java:195) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.Java:342) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.Java:132) ~[elasticsearch-5.6.2.jar:5.6.2]
... 6 more
また、Docker内ではなくCentos 7でルートとしてSonarQubeを実行しているこの問題も発生しました。前のコメントで述べたように、問題はElasticSearchをアップグレードするSonarQubeに由来し、新しいバージョンではもはやrootとして実行することを許可していません。
私の環境では、修正は非常に簡単でした。ユーザー(「ソナー」)とグループ(「ソナー」)を作成して、sonarqubeファイルを「所有」していました。 SonarQubeプロセスはルートとして実行されていたため、ログと一時ファイルはルートが所有していました。
1。サービスを停止しました。
2。すべての所有者を再割り当てしました(「chown -R sonar:sonar /opt/sonarqube-6.6」)
3。 #RUN_AS_USER=
行48の/opt/sonarqube-6.6/bin/linux-x86-64/sonar.sh
をRUN_AS_USER=sonar
に変更し、sonarqubeサービスとelasticsearchサービスの両方が問題なく再起動した。データベースをアップグレードするためにhttp://<sonarhost:port>/setup
に行かなければならず、そこからすべてがうまくいきました。
Systemdの変更:
User=sonar
Group=sonar
すべてのソースと#RUN_AS_USER=sonar
実行されます。ルートで実行してからソナーにsuすると、環境にエラーがあるようです
同じ問題に直面し、私のソナーサービスファイルにいくつかの変更を加えると、動作し始めます。以下は私のソナーサービスファイルです
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
#Type=simple
User=sonar
Group=sonar
PermissionsStartOnly=true
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
StandardOutput=syslog
LimitNOFILE=65536
LimitNPROC=8192
#TimeoutStartSec=5
Restart=always
[Install]
WantedBy=multi-user.target
また、ソナーユーザーのホームディレクトリを変更します
$ usermod -d /opt/sonarqube sonar
Sonarqube-6.5をダウンロードし、新しいユーザー「sonar」を設定しようとしましたが、それでもUbuntuが同じ理由で失敗します-Ubuntu 16.4。