sonarqube

1、先决条件

机器上必须得有 Java(Oracle JRE 或 OpenJDK),版本是11。

2、硬件要求

  • 小规模的最少需要2GB的RAM才能运行。
  • 磁盘空间量取决于分析的代码量。
  • 需要安装在读写性能良好的硬盘上(数据文件夹包含了Elasticsearch 索引,当服务器启动并运行的时候,将在这些索引上完成大量I/O)。
  • SonarQube 在服务器端不支持 32 位系统。然而,SonarQube 确实在扫描仪端支持 32 位系统。
    3、linux部署前提:
vm.max_map_count大于或等于 524288
fs.file-max大于或等于 131072
运行 SonarQube 的用户可以打开至少 131072 个文件描述符
运行 SonarQube 的用户至少可以打开 8192 个线程

可以使用以下命令查看值:

sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
ulimit -u

为当前会话动态的设置(临时的):

sysctl -w vm.max_map_count=524288
sysctl -w fs.file-max=131072
ulimit -n 131072
ulimit -u 8192

永久设定:

vim /etc/sysctl.conf

fs.file-max = 131072
vm.max_map_count = 524288   ##要添加的内容。加在文章末尾即可

sysctl -p   ##生效


vim /etc/security/limits.d/99-sonarqube.conf
#增加sonarqube用户大开文件数
sonarqube   -   nofile   131072
sonarqube   -   nproc    8192 ```

4、安装jdk

apt-get update
apt-get install default-jdk
java -version
javac -version

5、安装PostgreSQL12

apt install gcc make bzip2  ##需要的组件

wget http://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.bz2
tar xvf postgresql-12.2.tar.bz2
cd postgresql-12.2/

#编译安装
./configure --prefix=/opt/pgsql12 --without-readline --without-zlib
make world
make install-world
 
#新增pgsql用户,添加密码
adduser postgres
passwd postgres
 
#创建数据目录并授权
mkdir -p /data/postgres/data
chown -R postgres:postgres /data/postgres/data
 
#切换postgres用户操作
su - postgres
#初始化数据库
/opt/pgsql12/bin/initdb -D /data/postgres/data
#启动数据库
/opt/pgsql12/bin/pg_ctl -D /data/postgres/data -l logfile start

#进入数据库
/opt/pgsql12/bin/psql

#创建sonar数据库账户和密码
CREATE USER sonar WITH PASSWORD 'sonar123456';
CREATE DATABASE sonardb WITH OWNER sonar ENCODING UTF8;
GRANT ALL PRIVILEGES ON DATABASE sonardb TO sonar;

6、安装sonarqube

#创建用户
useradd sonarqube
passwd sonarqube

#下载

#解压
unzip sonarqube-enterprise-8.9.8.54436.zip

#给更改用户,es不能使用root用户运行
chown -R sonarqube:sonarqube sonarqube-8.9.8.54436/

#修改/opt/sonarqube-8.9.8.54436/conf/sonar.properties(修改前先复制一份做备份)
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar123456
sonar.jdbc.url=jdbc:postgresql://localhost/sonardb
sonar.web.javaAdditionalOpts=-javaagent:/opt/sonarqube-8.9.8.54436/SonarQubeAgent-1.1-SNAPSHOT.jar   ##破解的插件。不要放在往下的目录中。
sonar.web.port=9000
sonar.ce.javaAdditionalOpts=-javaagent:/opt/sonarqube-8.9.8.54436/SonarQubeAgent-1.1-SNAPSHOT.jar
sonar.path.logs=/data/sonar/log/sonarqube     
sonar.path.data=/data/sonar/data
sonar.path.temp=/data/sonar/temp

##更改用户
chown -R sonarqube:sonarqube /data/sonar

##将破解所要用到的jar包:SonarQubeAgent-1.1-SNAPSHOT.jar放入目录中。

##更改java的位置
vim /opt/sonarqube-8.9.8.54436/conf/wrapper.conf

wrapper.java.command=/usr/bin/java     (可以通过which java找到对应的地址)
除了上述的一些操作,还需要给使用到的目录文件给权限。具体的权限如何给,还不知道嘞……
目前我给sonar.sh给了777 linux-x86-64给了777 sonarqube-8.9.8.54436给了770  elasticsearch/给了770 总之,权限很重要,会导致起不来

启动:
su sonarqube
/opt/sonarqube-8.9.8.54436/bin/linux-x86-64/sonar.sh start (或者使用console,可以看见启动过程但是是交互的,不能关闭)

破案了
在/opt/sonarqube-8.9.8.54436/bin/linux-x86-64/sonar.sh中编辑RUN_AS_USER=sonarqube,就可以在root用户下直接做启动操作以sonarqube用户身份。

7、访问:

http://172.168.1.216:9000

输入许可证: Q29tcGFueT1Vbmtub3duCkRpZ2VzdD1Ob3RSZXF1aXJlZApFZGl0aW9uPUVudGVycHJpc2UKRWRpdGlvbkxhYmVsPUVudGVycHJpc2UKRXhwaXJhdGlvbj0yMDk5LTAxLTAxCk1heExvYz05MjIzMzcyMDM2ODU0Nzc1ODA2ClBsdWdpbnM9YWJhcCxjcHAscGxzcWwsc2VjdXJpdHksc29uYXJhcGV4LHN3aWZ0LHRzcWwsdmJuZXQsY29ib2wscGxpLHJwZyx2YgpGZWF0dXJlcz0qClNlcnZlcklkPSoKU3VwcG9ydD1mYWxzZQpUeXBlPW55MGM=

上述许可证是从下述整体base64加密获得,可以使用转换工具: https://www.qqxiuzi.cn/bianma/base64.htm

Company=Unknown
Digest=NotRequired
Edition=Enterprise
EditionLabel=Enterprise
Expiration=2099-01-01
MaxLoc=9223372036854775806
Plugins=abap,cpp,plsql,security,sonarapex,swift,tsql,vbnet,cobol,pli,rpg,vb
Features=*
ServerId=*
Support=false
Type=ny0c

8、汉化

在/opt/sonarqube-8.9.8.54436/extensions/plugins中放入汉化的jar包,重启服务即可。

9、自启动

/etc/systemd/system/postgresql.service

[Unit]
#简短描述
Description=postgresql.service  
#在network.target服务之后运行,这里可以不要
After=network.target
[Service]
Type=forking
#服务的类型,常用的有 simple(默认类型) 和 forking。默认的 simple 类型可以适应于绝大多数的场景,因此一般可以忽略这个参数的配置。而如果
User=postgres      
Group=postgres
#工作目录
WorkingDirectory=/data/postgres/data
#启动命令
ExecStart=/opt/pgsql12/bin/pg_ctl -D /data/postgres/data -l logfile start
#重新加载
ExecReload=/opt/pgsql12/bin/pg_ctl -D /data/postgres/data -l logfile restart
#停止程序
ExecStop=/opt/pgsql12/bin/pg_ctl -D /data/postgres/data -l logfile stop
#是否给服务分配独立的临时空间,需要
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#和前面的 Wants 作用相似,只是后面列出的不是服务所依赖的模块,而是依赖当前服务的模块。
编写完上述的脚本之后,可以使用重载生效。最差的方法就是使用重启服务器查看生效情况。
systemctl daemon-reload  ##重载
systemctl enable --now  ##设定开机自启动
systemctl start postgresql.service  ##启动
systemctl status postgresql.service  ##查看状态
systemctl is-active postgresql.service   ##判断服务是否启动
/etc/systemd/system/sonarqube.service
[Unit]
#描述
Description=Sonarube Service
#代表要在其他的某些程序完成之后再执行.这些服务启动后,才允许启动Sonarube服务
After=syslog.target network.target

[Service]
Type=forking
#绝对地址
ExecStart=/opt/sonarqube-8.9.8.54436/bin/linux-x86-64/sonar.sh start
#绝对地址
ExecStop=/opt/sonarqube-8.9.8.54436/bin/linux-x86-64/sonar.sh stop
#启动的用户名
User=sonarqube
#启动的用户所在组
Group=sonarqube
Restart=always
#重启时间
RestartSec=120
LimitNOFILE=131072   ##这个必须加
LimitNPROC=8192

[Install]
#服务级别相当于3 分配到multi-user.target这个服务组上;multi-user.target是系统默认的服务组,系统为这个服务组分配了一个权限,允许multi-user.target服务组中所有的服务可以随系统启动而自动启动;
#即,只要把一个服务分配到multi-user.target这个服务组中,那么这个服务就可以随系统启动而自动启动了
WantedBy=multi-user.target
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值