# 说明

本章为devops环境的快速绿色安装教程

涉及的安装介质为:

DevOps_6.5GA_Installer.tar.gz
DevOps_6.5GA_Extension_Installer.tar.gz

# Java环境配置

说明: 安装包中不提供jdk,请安装服务需要对应jdk时,自行下载安装j对应jdk版本

# 1.解压jdk-*_linux-x64_bin.tar.gz文件到目录

以jdk1.8为例

# tar -zxvf jdk-8-linux-x64.tar.gz

# 2.修改/etc/profile文件

# vi /etc/profile
//添加如下内容
export JAVA_HOME=/usr/local/jdk1.8.0_261(您的 JDK 存放路径)
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

# 3.重新加载/etc/profile配置

# source /etc/profile

# 4.java版本测试

# java -version
//出现如下内容说明验证成功
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

# 5.依赖关系

基于jdk1.8运行的服务如下:
devops6.5
nexus3.16

基于jdk11运行的服务如下:
jenkins2.361

基于jdk17运行的服务如下:
sonarqube9.9
dependencytrack4.7.1

其他说明:
jenkins流水线通常使用jdk1.8进行应用启动等操作,当需要执行相关操作时需要在Configure System>Global properties>Environment variables中配置jdk1.8目录。

# Devops安装手册

说明:安装包中不提供jdk和mysql,为了安装顺利,请自行下载安装jdk1.8和mysql5.7。

# 自动化部署devops步骤

# 1.解压DevOps_6.5GA_Installer.tar.gz

# tar -zxvf DevOps_6.5GA_Installer.tar.gz -C 指定目录

解压后的devops_install目录包含文件如下

为了便于离线环境演示构建部署流程,新建了sampleProjectCode目录,存放了demowar和demojar源码压缩包,可自行解压使用。

# 2.通过conf.ini配置文件更改devops配置

# vi conf.ini

修改devops服务端口和依赖的jdk1.8安装的根目录

修改devops运行环境mysql数据库配置

端口为空时会默认使用8787端口

# 3.进入到安装目录下的1-devops-6.5目录

# cd 1-devops-6.5

1-devops-6.5目录包含文件如下

# 4.执行数据初始化脚本

执行db_init.sh,自动初始化devops数据库

启动前请保证环境中安装了mysql且将mysql配置到了系统环境变量中!

# sh 执行db_init.sh

启动脚本流程如下

从conf.ini获取mysql配置信息

根据配置信息连接mysql服务

当存在对应数据库时,判断数据是否已经初始化过了
判断条件为是否存在sysadmin系统管理员用户

当不存在数据库或数据没有初始化时,执行数据库脚本
mysql数据库sql脚本目录为:
devops根目录下db-scripts/mysql/
包括结构文件,数据文件和结构和数据文件。

初始化完毕后更新devops数据库连接文件
数据库连接文件位置:devops根目录下1-devops-6.5/WEB-INF/_srv/config/user-config.xml文件
---
<configValue key="C3p0-Url">${db.url}</configValue>
<configValue key="C3p0-UserName">${db.userName}</configValue>
<configValue key="C3p0-Password">${db.password}</configValue>
---
可自行更改该文件修改数据库连接配置!

非本机mysql数据库或其他类型数据库初始化时可以自行获取初始化脚本执行,目录位置devops根目录下db-scripts

初始化sql目录如下

可自行初始化数据库后更改devops根目录下1-devops-6.5/WEB-INF/_srv/config/user-config.xml文件以连接对应数据库

00-devops-ddl-all.sql:数据库表结构脚本
01-devops-data-all.sql:数据库数据脚本
devops-all.sql:数据库表结构和数据全量脚本

数据库连接依赖c3p0和mysql5的驱动,可通过下列链接下载。
c3p0-0.9.0.jar
mysql-connector-java-5.1.40.jar
连接其他数据库时请自行下载依赖文件放置devops根目录下/WEB-INF/lib/中

# 5.执行启动脚本

执行startDevOps.sh,自动化启动nexus服务

# sh startDevOps.sh

启动脚本流程如下

获取脚本所在目录
baseHome=$(cd `dirname $0`; pwd)
cd $baseHome
获取安装包根目录
cd ..
confHome=`pwd`

获取端口配置文件
baseConf=$confHome/conf.ini

读取devops启动端口,默认为8787

如果devops安装包根目录存在primetonlicense.xml文件,则自动更新替换license文件
目标license文件位置为devops安装包根目录下WEB-INF/_srv/primetonlicense.xml
可自行修改该文件更新权限文件

获取启动jdk位置
java8home=$(readINI $baseConf jdk jdk8_home)

判断端口是否被占用

启动服务
nohup ${java8home}/bin/java -Xms512m -Xmx4096m -DhttpPort=$devopsPort -DminThreads=50 -DmaxThreads=500 -DLocalHostPort= -jar $baseHome/devops-bootstrap.jar >$baseHome/nohup.out &


启动详情日志查看devops根目录下nohup.out 文件

# 6.Devops服务验证

根据devops所在主机ip:8787访问devops服务

默认用户:sysadmin;

默认密码:000000;

进入主界面则安装成功;

# 7.停止devops

执行stopDevOps.sh,自动化关闭devops服务

# sh stopDevOps.sh

关闭脚本流程如下

判断服务是否已经关闭

未关闭的话执行关闭命令
ps -ef | grep httpPort=$devopsPort | grep -v grep | awk '{print $2}' | xargs kill -9

# readme说明

运维脚本包括:
devops服务启动脚本:startDevOps.sh
devops服务关闭脚本:stopDevOps.sh
devops默认数据库devops初始化脚本:db_init.sh
devops初始化数据库脚本:db-scripts/

数据库初始化脚本
devops运行基于数据库,本安装包不携带mysql安装包,请自行安装并且将mysqlbin目录加入环境变量中!
如果通过mysql数据库启动可配置conf.ini中mysql数据库信息
db_init.sh启动自行读取并初始化数据库,已经初始化过数据将不在更新,会同步更新devops数据库配置文件信息。

数据库连接文件位置:devops根目录下1-devops-6.5/WEB-INF/_srv/config/user-config.xml文件
-------
            <configValue key="C3p0-Url">${db.url}</configValue>
            <configValue key="C3p0-UserName">${db.userName}</configValue>
            <configValue key="C3p0-Password">${db.password}</configValue>
-------

数据初始化sql目录:db-scripts/
非mysql类型数据库初始化脚本可以选择对应数据库类型,选择对应devops-all.sql即可


说明
devops启动依赖jdk1.8,启动时会自动读取读取conf.ini中jdk8_home作为启动所需jdk根目录,请提前配置!!!
将primetonlicense.xml文件置于devops根目录,启动时会自行更新license文件
可以通过修改全局配置文件conf.ini修改服务端口,修改时请保证服务关闭,重新启动服务,新端口生效

devops服务启动脚本内容包括:
从devops根目录获取primetonlicense.xml文件更新授权文件。
从全局配置文件conf.ini读取devops端口,若没有配置则默认端口为8787。
启动devops服务,若端口被占用,则中止启动操作。
启动日志文件nohup.out在devops根目录中。

devops服务关闭脚本内容包括:
从全局配置文件conf.ini读取devops端口,若没有配置则默认端口为8787。
关闭devops服务,若端口没有被占用,则判定已被关闭,中止关闭操作。

通过sh 加脚本名称执行脚本。

默认用户凭证:
- username:sysadmin
- password:000000


# Jenkins安装手册

说明: 安装包中不提供jdk,为了安装顺利,请自行下载安装jdk11和jdk1.8。

# 自动化部署Jenkins步骤

# 1.解压DevOps_6.5GA_Installer.tar.gz

# tar -zxvf DevOps_6.5GA_Installer.tar.gz -C 指定目录

解压后的devops_install目录包含文件如下

# 2.通过conf.ini配置文件更改Jenkins端口

# vi conf.ini

修改Jenkins服务端口和依赖的jdk11和jdk1.8安装的根目录

端口为空时会默认使用8686端口

# 3.执行启动脚本

执行startup.sh,自动化启动jenkins服务

# cd 2-jenkins-2.361
# sh startup.sh

启动脚本流程如下

获取脚本所在目录
baseHome=$(cd `dirname $0`; pwd)
cd $baseHome
获取安装包根目录
cd ..
confHome=`pwd`

获取端口配置文件
baseConf=$confHome/conf.ini

读取jenkins启动端口,默认为8686

从conf.ini中读取配置jdk11_home根目录环境运行jdk
java11home=$(readINI $baseConf jdk jdk11_home)

从conf.ini中读取配置jdk8_home根目录
java8home=$(readINI $baseConf jdk jdk8_home)

读取本机ip
localIp=`hostname -I`

更新工具路径到相对安装目录下
sed -i "s|<string>.*/jdk</string>|<string>$java8home</string>|" $baseHome/work/config.xml
sed -i "s|<string>.*/apache-maven-3.3.9</string>|<string>$baseHome/apache-maven-3.3.9</string>|" $baseHome/work/config.xml
sed -i "s|<string>.*/apache-maven-3.3.9/bin</string>|<string>$baseHome/apache-maven-3.3.9/bin</string>|" $baseHome/work/config.xml
sed -i "s|<string>.*/sonar-scanner-4.0.0.1744-linux</string>|<string>$baseHome/sonar-scanner-4.0.0.1744-linux</string>|" $baseHome/work/config.xml
sed -i "s|<home>.*/sonar-scanner-4.0.0.1744-linux</home>|<home>$baseHome/sonar-scanner-4.0.0.1744-linux</home>|" $baseHome/work/hudson.plugins.sonar.SonarRunnerInstallation.xml
sed -i "s|<jenkinsUrl>.*</jenkinsUrl>|<jenkinsUrl>http://$localIp:$jenkinsPort/</jenkinsUrl>|" $baseHome/work/jenkins.model.JenkinsLocationConfiguration.xml
sed -i "s|<localRepository>.*</localRepository>|<localRepository>$baseHome/maven-data/</localRepository>|" $baseHome/apache-maven-3.3.9/conf/settings.xml

判断端口是否被占用

设置工作目录
# workspace
JENKINS_WORK=${baseHome}/work

设置运行内存
# minMemSize & maxMemSize
minMemSize=2048
maxMemSize=2048

静默启动服务
JAVA_OPTS="${JAVA_OPTS} -Dfile.encoding=utf-8 -Xmx${maxMemSize}m -Xms${minMemSize}m -DJENKINS_HOME=${JENKINS_WORK} -Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true -Dorg.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.ADMIN_AUTO_APPROVAL_ENABLED=true"
nohup ${java11home}/bin/java ${JAVA_OPTS} -jar ${baseHome}/jenkins.war --httpPort=${jenkinsPort} >$baseHome/nohup.out &

启动详情日志查看jenkins根目录下nohup.out 文件

# 4.jenkins服务验证

根据主机ip:8686访问jenkins服务

默认用户:sysadmin; 默认密码:Sysadmin000;

*进入服务后需要自行修改Jenkins URL

Configure System
Jenkins Location
Jenkins URL
http://jenkins所在主机ip:端口/

# 5.停止jenkins

执行关闭脚本

# sh shutdown.sh

关闭脚本流程如下

判断服务是否已经关闭

未关闭的话执行关闭命令
ps -ef |grep jenkins |grep -v grep |awk '{print $2}' |xargs kill -9

# readme说明

运维脚本包括:
startup.sh:启动脚本
shutdown.sh:关闭脚本

应用默认端口为8686
**每次服务停止后可以通过修改conf.ini中的端口更新服务端口,重新执行startup.sh后生效。一定要保证更改配置时服务已经被停止!**

***
jenkins运行依赖fontconfig等根据,如果启动服务后,登录界面出现如下报错,则定位到jenkins根目录下jenkins-dependency目录,运行yum localinstall fontconfig/*.rpm,离线安装fontconfig依赖
-------------
AWT is not properly configured on this server. Perhaps you need to run your container with "-Djava.awt.headless=true"? See also: https://www.jenkins.io/redirect/troubleshooting/java.awt.headless
------------
根据需要自行"yum localinstall", jenkins-dependency目录中的git和ansible的离线rpm包
***

说明
启动脚本内容包括:
jenkins启动依赖jdk11,启动时会自动读取读取conf.ini中jdk11_home作为启动所需jdk根目录,请提前配置!!!
根据安装路径更新global config
jenkins安装工具包括jdk8,会自动读取读取conf.ini中jdk8_home作为全局jdk8工具根目录,请提前配置!!!
启动jenkins服务。
检测到端口运行中,则中止脚本,自行检查端口。

关闭脚本内容包括:
关闭jenkins服务
检测到端口未被占用时,则认为服务已关闭,则不再重复关闭。

默认用户凭证:
- username:sysadmin
- password:Sysadmin000

# jenkins配置说明

jenkins启动脚本配置

# jenkins根目录下start.sh

port=8080  //启动端口
minMemSize=2048  //最小运行内存
maxMemSize=2048 //最大运行内存
//最新版Jenkins需要在JAVA_OPTS最后增加参数来关闭跨站点访问
-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true

config.xml配置 其中/opt/idc/apps/jenkins为jenkins所在目录,此处为全局jenkins节点环境变量属性初始配置

# vi /opt/idc/apps/jenkins/work/config.xml
<globalNodeProperties>
    <hudson.slaves.EnvironmentVariablesNodeProperty>
        <envVars serialization="custom">
            <unserializable-parents/>
            <tree-map>
                <default>
                    <comparator class="hudson.util.CaseInsensitiveComparator"/>
                </default>
                <int>8</int>
                <string>CLASSPATH</string>
                <string>.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib</string>
                <string>JAVA_HOME</string>
                <string>/opt/idc/apps/jenkins/jdk</string>
                <string>JRE_HOME</string>
                <string>/opt/idc/apps/jenkins/jdk/jre</string>
                <string>MAVEN_3_2_5_HOME</string>
                <string>/opt/idc/apps/jenkins/apache-maven-3.2.5</string>
                <string>MAVEN_3_3_9_HOME</string>
                <string>/opt/idc/apps/jenkins/apache-maven-3.3.9</string>
                <string>NODE_HOME</string>
                <string>/opt/idc/apps/jenkins/node-v6.10.2-linux-x64/bin</string>
                <string>PATH+EXTRA</string>
                <string>/opt/idc/apps/jenkins/apache-maven-3.3.9/bin:/opt/idc/apps/jenkins/node-v6.10.2-linux-x64/bin:/opt/idc/apps/jenkins/apache-ant-1.10.1/bin:/opt/idc/apps/jenkins/gradle-4.0.1/bin:/opt/idc/apps/jenkins/apache-jmeter-4.0/bin:/opt/idc/apps/jenkins/openshift-v3.11.0-linux-x64</string>
                <string>SONAR_SCANNER_HOME</string>
                <string>/opt/idc/apps/jenkins/sonar-scanner-2.8</string>
            </tree-map>
        </envVars>
    </hudson.slaves.EnvironmentVariablesNodeProperty>
</globalNodeProperties>

# 其他

按需要自行安装ansible和git等


# Nexus安装手册

说明: 安装包中不提供jdk,为了安装顺利,请自行下载安装jdk1.8。

# 自动化部署nexus步骤

# 1.解压DevOps_6.5GA_Installer.tar.gz

# tar -zxvf DevOps_6.5GA_Installer.tar.gz -C 指定目录

解压后的devops_install目录包含文件如下

# 2.通过conf.ini配置文件更改nexus端口

# vi conf.ini

修改nexus服务端口和依赖的jdk1.8安装的根目录

端口为空时会默认使用8081端口

# 3.进入到安装目录下的3-nexus-3.16.0目录

# cd 3-nexus-3.16.0

3-nexus-3.16.0目录包含文件如下

# 4.启动脚本

执行startup.sh,自动化启动nexus服务

# sh startup.sh

启动脚本流程如下

获取脚本所在目录
baseHome=$(cd `dirname $0`; pwd)
cd $baseHome
获取安装包根目录
cd ..
confHome=`pwd`

获取端口配置文件
baseConf=$confHome/conf.ini

读取nexus启动端口,默认为8081

更新端口配置文件
nexusCnf=$baseHome/etc/nexus-default.properties
sed -i "s/^application-port=.*/application-port=$nexusPort/" $nexusCnf

更新启动jvm
java8home=$(readINI $baseConf jdk jdk8_home)

更新启动脚本
sed -i "s|# INSTALL4J_JAVA_HOME_OVERRIDE=.*|INSTALL4J_JAVA_HOME_OVERRIDE=$java8home|" $baseHome/bin/nexus

判断端口是否被占用

启动服务
$baseHome/bin/nexus start

启动详情日志查看nexus根目录下/sonatype-work/nexus3/log/nexus.log 文件

# 5.Nexus服务验证

根据nexus所在主机ip:8081访问nexus服务

默认用户:admin;

默认密码:admin123;

# 6.停止nexus

执行shutdown.sh,自动化关闭nexus服务

# sh shutdown.sh

关闭脚本流程如下

判断服务是否已经关闭

未关闭的话执行关闭命令
$baseHome/bin/nexus stop

# readme说明

运维脚本包括:
startup.sh:启动脚本
shutdown.sh:关闭脚本

应用默认端口为8081
每次服务停止后可以通过修改conf.ini中的端口更新服务端口,重新执行startup.sh后生效。一定要保证更改配置时服务已经被停止!

nexus通过安装目录下的jdk1.8启动

说明
启动脚本内容包括:
启动nexus服务。
检测到端口运行中,则中止脚本,自行检查端口。

关闭脚本内容包括:
关闭nexus服务
检测到端口未被占用时,则认为服务已关闭,则不再重复关闭。

默认用户凭证:
- username:admin
- password:admin123

# DependencyTrack安装手册

说明:安装包中不提供jdk,为了安装顺利,请自行下载安装jdk17。

# 自动部署dependencytrack服务步骤:

# 1.解压DevOps_6.5GA_Extension_Installer.tar.gz

# tar -zxvf DevOps_6.5GA_Extension_Installer.tar.gz -C 指定目录

解压后的devops_install_extension目录包含文件如下

# 2.通过conf.ini配置文件更改dependencytrack配置

# vi conf.ini

修改dependencytrack服务端口和依赖的jdk17安装的根目录

修改dependencytrack运行环境pgsql数据库配置,使用安装包中pgsql作为pgsql数据库环境时,请将Ip设为127.0.0.1

dependencytrack服务端口为空时会默认使用18090端口

# 3.pgsql数据库服务环境准备

运行pgsql服务,进入1-pgsql-15.2 目录执行startup.sh脚本 等待服务启动

启动详情日志查看pgsql根目录下nohup.out文件

关闭服务执行shutdown.sh

# cd 1-pgsql-15.2 
# sh startup.sh

运维脚本包括:
init.sh::初始化环境脚本
startup.sh:启动脚本
shutdown.sh:关闭脚本
uninstall.sh:卸载脚本

**每次服务停止后可以通过修改conf.ini中的端口更新服务端口,重新执行startup.sh后生效。一定要保证更改配置时服务已经被停止!**

默认账户
用户:postgres
密码:Primeton4pgsql

说明:
初始化脚本内容包括:
根据系统是否存在postgres用户判定项目是否初始化过,存在用户则不再初始化。
从全局配置文件conf.ini获取pgsql端口,没有配置会设置为5432默认端口,Primeton4pgsql默认密码,默认用户为postgres。
创建postgres用户和用户组
注册pgsql服务到全局
启动pgsql服务
*初始化脚本仅执行一次

启动脚本内容包括:
启动pgsql服务,若系统没有创建过postgres用户,则判断项目还未初始化,执行初始化脚本内容。
检测到端口被占用时,会中止启动流程,请检查是否已经启动。

关闭脚本内容包括:
关闭pgsql服务
检测到端口未被占用时,则认为服务已关闭,则不再重复关闭。

*非相关专业人员 请勿执行该脚本!该操作将会导致数据删除!!!*
卸载环境脚本内容包括:
关闭pgsql服务,若已关闭则不再关闭。
卸载pgsql整个目录文件。
删除初始化过程中配置的启动文件,软链接。
删除pgsql用户和用户组。

# 4.初始化dependencytrack数据库和更新数据库连接配置

进入dependencytrack目录 执行db_init.sh

# cd 3-dependencytrack-4.7.1
# sh db_init.sh

数据库初始化脚本内容包括:
获取conf.ini中配置的dependencytrack运行所需的pgsql环境配置
如果pgsqlip为127.0.0.1则判断为本机,创建配置对应数据库
更改dependencytrack根目录下/application.properties配置文件中的数据库连接位置。

# 5.启动dependencytrack服务

执行startup.sh启动服务 启动详情日志查看dependencytrack根目录下nohup.out文件

# cd 3-dependencytrack-4.7.1
# sh startup.sh

启动脚本流程如下

获取脚本所在目录
baseHome=$(cd `dirname $0`; pwd)
cd $baseHome
获取安装包根目录
cd ..
confHome=`pwd`

获取端口配置文件
baseConf=$confHome/conf.ini

读取dependencytrack启动端口,默认为18090

获取启动jdk17位置
java17home=$(readINI $baseConf jdk jdk17_home)

设置配置文件位置
# application.properties
properties_dir=${baseHome}/application.properties

设置内存占用
# memory
#min_mem_size=5G
max_mem_size=16G

# java options
JAVA_OPTS="-Xmx${max_mem_size} -Dalpine.application.properties=${properties_dir}"

判断端口是否被占用

执行启动命令
nohup ${jdk17home}/bin/java -Xmx${max_mem_size} -Dalpine.application.properties=${baseHome}/application.properties -jar ${baseHome}/dependency-track-bundled.jar -port ${dependencytrackPort}  >$baseHome/nohup.out &

启动成功后登录ip:18090查看服务

# 6.服务验证

登录DependencyTrack客户端 ip:18090

默认用户凭证: username:admin; password:admin;

初次登录修改账户密码

更新BaseUrl和团队apikey的权限范围

# 7.停止dependencytrack服务

执行shutdown.sh,自动关闭dependencytrack服务

# sh shutdown.sh

关闭脚本流程如下

判断服务是否已经关闭

未关闭的话执行关闭命令
ps -ef | grep dependency-track-bundled | grep -v grep | awk '{print $2}' | xargs kill -9

# readme说明

运维脚本包括:
startup.sh:启动脚本
shutdown.sh:关闭脚本
db_init.sh:数据库初始化脚本

默认用户凭证:
- username:admin
- password:admin
首次登陆时,admin账户需要修改密码。

应用默认端口为18090
**每次服务停止后可以通过修改conf.ini中的端口更新服务端口,重新执行startup.sh后生效。一定要保证更改配置时服务已经被停止!**

启动dependencytrack前请保证在conf.ini中已经为dependencytrack配置了pgsql数据库连接信息
db_init.sh启动自行读取并初始化数据库,如果端口为127.0.0.1则会为本机pgsql服务初始化数据库,非本机pgssql则不会,会同步更新dependencytrack数据库配置文件application.properties信息。

数据库连接文件位置:dependencytrack根目录下application.properties文件
-------
alpine.database.url=jdbc:postgresql://127.0.0.1:5432/dptrack
alpine.database.username=postgres
alpine.database.password=Primeton4pgsql
-------

说明
启动脚本内容包括:
启动pgsql服务。
检测到端口运行中,则中止脚本,自行检查端口。

关闭脚本内容包括:
关闭pgsql服务
检测到端口未被占用时,则认为服务已关闭,则不再重复关闭。

数据库初始化脚本内容包括:
默认读取安装包中的pgsql配置信息更新数据库连接信息,
在本机pgsql创建dtrack数据库
更改dependencytrack根目录下/application.properties配置文件中的数据库连接位置。

pgsql默认ip为当前主机ip,默认端口5432,默认用户postgres,默认密码Primeton4pgsql,默认数据库dtrack。

安装包目录结构:
  data:数据存储目录
  application.properties:Dependency-Track应用配置文件
  dependency-track-bundled.jar:Dependency-Track前后端合并的部署包
  java:Dependency-Track依赖的java环境,版本为openjdk-17.0.5

应用默认端口为18090(可配置脚本内容中的port变量以修改应用启动端口)

最低配置:
  Java 17 (or higher)
  4GB RAM
  2 CPU
推荐配置:
  Java 17 (or higher)
  16GB RAM
  4 CPU cores


特别注意!!!
    1、Dependency-Track 需在联网环境下才能正常使用,使用前需确保部署机能访问公网,或者通过配置代理的方式访问公网;
    2、在初始化启动 Dependency-Track 应用时,需确保数据存储目录存在且为空目录。


application.properties 为 Dependency-Track 应用服务的配置文件。
此配置文件除了可自定义配置数据存储目录、外部数据库源、目录服务(LDAP)和代理之外,还能控制许多性能调整参数。

1、配置外部数据库源(数据库建议用 版本>=9.0 的 PostgreSQL,使用 MySQL 可能会造成 Specified key was too long 的问题):
# alpine.database.mode=external
# alpine.database.url=jdbc:postgresql://localhost:5432/dtrack
# alpine.database.driver=org.postgresql.Driver
# alpine.database.username=******
# alpine.database.password=******

2、配置数据存储目录:
# alpine.data.directory=./apiserver/data

3、配置网络代理:
# alpine.http.proxy.address=proxy.example.com
# alpine.http.proxy.port=8888
# alpine.http.proxy.username=
# alpine.http.proxy.password=
# alpine.no.proxy=localhost,127.0.0.1


首次启动 Dependency Track 时,会发生多项任务,包括:
1、生成默认对象,例如用户,团队和权限。
2、生成用于 JWT 令牌创建和验证的密钥。
3、填充 CWE 和 SPDX 许可证数据。
4、从公网漏洞库下载数据源并初始化受支持的漏洞数据源。
5、初始化数据时可能需要 10 到 30 分钟或更长时间。请不要中断该过程。在关闭系统之前,请等待所有镜像任务的完成。可以通过查看 “nohup.out” 来监视这些任务。

# 环境说明

最低配置:
  Java 17 (or higher)
  4GB RAM
  2 CPU
推荐配置:
  Java 17 (or higher)
  16GB RAM
  4 CPU cores

# SonarQube安装手册

说明:安装包中不提供jdk,为了安装顺利,请自行下载安装jdk17。

# 自动部署sonarqube服务步骤:

# 1.解压DevOps_6.5GA_Extension_Installer.tar.gz

# tar -zxvf DevOps_6.5GA_Extension_Installer.tar.gz -C 指定目录

解压后的devops_install_extension目录包含文件如下

# 2.通过conf.ini配置文件更改sonarqube配置

# vi conf.ini

修改sonarqube服务端口和依赖的jdk17安装的根目录

修改sonarqube运行环境pgsql数据库配置,使用安装包中pgsql作为pgsql数据库环境时,请将Ip设为127.0.0.1

sonarqube服务端口为空时会默认使用9999端口

# 3.pgsql数据库服务环境准备

运行pgsql服务,进入1-pgsql-15.2 目录执行startup.sh脚本 等待服务启动

启动详情日志查看pgsql根目录下nohup.out文件

关闭服务执行shutdown.sh

# cd 1-pgsql-15.2 
# sh startup.sh

运维脚本包括:
init.sh::初始化环境脚本
startup.sh:启动脚本
shutdown.sh:关闭脚本
uninstall.sh:卸载脚本

**每次服务停止后可以通过修改conf.ini中的端口更新服务端口,重新执行startup.sh后生效。一定要保证更改配置时服务已经被停止!**

默认账户
用户:postgres
密码:Primeton4pgsql

说明:
初始化脚本内容包括:
根据系统是否存在postgres用户判定项目是否初始化过,存在用户则不再初始化。
从全局配置文件conf.ini获取pgsql端口,没有配置会设置为5432默认端口,Primeton4pgsql默认密码,默认用户为postgres。
创建postgres用户和用户组
注册pgsql服务到全局
启动pgsql服务
*初始化脚本仅执行一次

启动脚本内容包括:
启动pgsql服务,若系统没有创建过postgres用户,则判断项目还未初始化,执行初始化脚本内容。
检测到端口被占用时,会中止启动流程,请检查是否已经启动。

关闭脚本内容包括:
关闭pgsql服务
检测到端口未被占用时,则认为服务已关闭,则不再重复关闭。

*非相关专业人员 请勿执行该脚本!该操作将会导致数据删除!!!*
卸载环境脚本内容包括:
关闭pgsql服务,若已关闭则不再关闭。
卸载pgsql整个目录文件。
删除初始化过程中配置的启动文件,软链接。
删除pgsql用户和用户组。

# 4.初始化sonarqube数据库和更新数据库连接配置

进入sonarqube目录 执行db_init.sh

# cd 2-sonarqube-9.9/
# sh db_init.sh

数据库初始化脚本内容包括:
获取conf.ini中配置的sonarqube运行所需的pgsql环境配置
如果pgsqlip为127.0.0.1则判断为本机,创建配置对应数据库
更新sonarqube根目录下/conf/sonar.properties文件

数据库连接文件位置:sonarqube根目录下/conf/sonar.properties文件
更新内容参考如下
-------
sonar.jdbc.username=postgres
sonar.jdbc.password=Primeton4pgsql
sonar.jdbc.url=jdbc:postgresql://127.0.0.1:5432/sonardb
-------

sonarqube目录文件列表

# 5.启动sonarqube服务

进入sonarqube目录 执行startup.sh

# cd 2-sonarqube-9.9/
# sh startup.sh

启动脚本内容流程说明如下

获取脚本所在目录
baseHome=$(cd `dirname $0`; pwd)
cd $baseHome
获取安装包根目录
cd ..
confHome=`pwd`

获取端口配置文件
baseConf=$confHome/conf.ini

读取sonarqube启动端口,默认为9999

判断sonar用户是否创建
没创建的话创建sonarqube运行用户和组
groupadd sonar
useradd sonar -g sonar
chown -R sonar:sonar /home/sonar && chown -R sonar:sonar $baseHome

更新系统配置
echo sonar soft    nofile          65536 >> /etc/security/limits.conf
echo sonar hard    nofile          65536 >> /etc/security/limits.conf
echo vm.max_map_count = 262144 >> /etc/sysctl.conf
sysctl -p

更新启动配置
localIp=`hostname -I`
sed -i "s/^sonar.web.host=.*/sonar.web.host=$localIp/" $baseHome/conf/sonar.properties
sed -i "s/^sonar.web.port=.*/sonar.web.port=$sonarqubePort/" $baseHome/conf/sonar.properties

从conf.ini中读取jdk17_home根目录
jdk17home=$(readINI $baseConf jdk jdk17_home)
jdk17JavaPath=$jdk17home/bin/java
sed -i "s!^SONAR_JAVA_PATH=.*!SONAR_JAVA_PATH=$jdk17JavaPath!" $baseHome/bin/linux-x86-64/sonar.sh

判断端口是否占用

执行启动命令
su sonar -c "$baseHome/bin/linux-x86-64/sonar.sh start"

# 6.sonarqube服务验证

根据sonarqube所在主机ip:9999访问nexus服务

默认账户:admin; 默认密码:admin;

# 7.停止sonarqube服务

执行shutdown.sh,自动关闭sonarqube服务

# sh shutdown.sh

关闭脚本流程如下

判断服务是否已经关闭

未关闭的话执行关闭命令
su sonar -c "$baseHome/bin/linux-x86-64/sonar.sh stop"

# readme说明

运维脚本包括:
startup.sh:启动脚本
shutdown.sh:关闭脚本
db_init.sh:数据库初始化脚本

应用默认端口为9999
**每次服务停止后可以通过修改conf.ini中的端口更新服务端口,重新执行startup.sh后生效。一定要保证更改配置时服务已经被停止!**

启动sonarqube前请保证在conf.ini中已经为sonarqube配置了pgsql数据库连接信息
db_init.sh启动自行读取并初始化数据库,如果端口为127.0.0.1则会为本机pgsql服务初始化数据库,非本机pgssql则不会,会同步更新sonarqube数据库配置文件sonar.properties信息。

数据库连接文件位置:sonarqube根目录下/conf/sonar.properties文件
-------
sonar.jdbc.username=postgres
sonar.jdbc.password=Primeton4pgsql
sonar.jdbc.url=jdbc:postgresql://127.0.0.1:5432/sonardb
-------
***
第一次启动sonarqube服务前请先执行db_init.sh为sonarqube创建一个sonardb数据库 
若已拥有数据库可不执行db_init.sh,自行修改sonarqube根目录下/conf/sonar.properties配置文件中的数据库连接位置。
***

***
第一次启动的时候新建了sonar用户以及更改了系统配置,卸载时请注意如下改动
echo sonar soft    nofile          65536 >> /etc/security/limits.conf
echo sonar hard    nofile          65536 >> /etc/security/limits.conf
echo vm.max_map_count = 262144           >> /etc/sysctl.conf
***

说明
启动脚本内容包括:
新建sonar用户并且更新环境信息,已存在则不重复创建。
默认读取安装包中的pgsql配置信息更新数据库连接信息,
pgsql默认ip为当前主机ip,默认端口5432,默认用户postgres,默认密码Primeton4pgsql,默认数据库sonardb。
启动sonar服务。
检测到端口运行中,则中止脚本,自行检查端口。

关闭脚本内容包括:
关闭sonar服务
检测到端口未被占用时,则认为服务已关闭,则不再重复关闭。

数据库初始化脚本内容包括:
在本机pgsql创建sonardb数据库
更改sonarqube根目录下/conf/sonar.properties配置文件中的数据库连接位置。

默认用户凭证:
- username:admin
- password:admin
首次登陆需要更新密码。

上次更新: 2023-11-14 15:14:30