1:第一个坑
本地一直用的7.4,给服务器上部署时特意从官网下载了7.9, 没有认真看文档,部署后才发现这个版本不支持mysql。 而7.8版本是最后一个支持mysql的版本,只好切换到7.8.
2:第二个坑:ElasticSearch
java.nio.file.AccessDeniedException: /usr/local/sonarQube/sonarqube-7.8/temp/conf/es/elasticsearch.yml
Sonar会用到ElasticSearch,但是ElasticSearch 不支持root账号执行,所以需要用其他账号运行。
步骤如下:
1:准备账号,无论是新建还是用旧的账号,必须给予sonar的目录权限。
2:设置sonar.properties
sonar.search.javaAdditionalOpts=-Dbootstrap.system_call_filter=false
3: 设置wrapper.conf
wrapper.java.additional.1=-Dsonar.wrapped=true
-Dbootstrap.system_call_filter=false
4: 添加内容:/sonarqube-7.8/elasticsearch/config/elasticsearch.yml
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
如果以上方法无效:可能是临时文件导致:删除sonarqube temp目录下的所有文件即可。
其他:
错误信息:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
原因:普通用户执行问题
解决:切换到root用户,编辑/etc/security/limits.conf
添加 userName hard nofile 65536
userName soft nofile 65536
错误信息:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因:操作系统的vm.max_map_count参数设置太小导致的
解决:切换超级用户,编辑/etc/sysctl.conf
添加 vm.max_map_count=655360
保存退出,执行 sysctl -p