第1章 安裝mysql
1.下載mysql 5.7
下載地址
https://downloads.mysql.com/archives/community/
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
2.創(chuàng)建目錄
mkdir -p /data/soft
mkdir -p /data/mysql_3306/
3.下載并解壓軟件
cd /data/soft
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
tar zxf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /opt/
mv /opt/mysql-5.7.28-linux-glibc2.12-x86_64 /opt/mysql-5.7.28
ln -s /opt/mysql-5.7.28 /opt/mysql
4.設(shè)置環(huán)境變量
echo "export PATH=$PATH:/opt/mysql/bin" >>/etc/profile
source /etc/profile
mysql -V
5.清除遺留環(huán)境
rpm -qa|grep mariadb
yum remove mariadb-libs -y
rm -rf /etc/my.cnf
6.安裝mysql依賴包
yum install -y libaio-devel
7.創(chuàng)建mysql普通用戶并授權(quán)
useradd -s /sbin/nologin -M mysql
chown -R mysql.mysql /data/
chown -R mysql.mysql /opt/mysql*
8.初始化數(shù)據(jù)庫
mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/data/mysql_3306/
9.編輯mysql配置文件
cat> /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/opt/mysql
datadir=/data/mysql_3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
EOF
10.準備啟動腳本并啟動數(shù)據(jù)庫
cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
systemctl start mysqld
netstat -lntup|grep 3306
11.前臺啟動
/opt/mysql/bin/mysqld --basedir=/opt/mysql --datadir=/data/mysql_3306 --plugin-dir=/opt/mysql/lib/plugin --user=mysql --log-error=/data/mysql_3306/log/mysql.log --pid-file=/data/mysql_3306/db01.pid --socket=/tmp/mysql.sock
12.修改root密碼
mysqladmin password
13.登陸mysql
mysql -uroot -p123456
第2章 安裝SonarQube
1.安裝java環(huán)境
yum install java -y
2.解壓并創(chuàng)建軟鏈接
unzip sonarqube-7.0.zip -d /opt/
ln -s /opt/sonarqube-7.0/ /opt/sonarqube
3.創(chuàng)建普通用戶并更改授權(quán)
useradd sonar -M -s /sbin/nologin
chown -R sonar.sonar /opt/sonarqube*
4.配置sonarqube數(shù)據(jù)庫連接信息
[root@sonar ~]# vim /opt/sonarqube/conf/sonar.properties
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
5.指定sonarqube啟動用戶
vim /opt/sonarqube/bin/linux-x86-64/sonar.sh
RUN_AS_USER=sonar
6.創(chuàng)建sonarqube數(shù)據(jù)庫
mysql -uroot -p123456 -e 'create database sonar default character set utf8;'
mysql -uroot -p123456 -e 'show databases;'
7.編寫systemd啟動文件
cat >/usr/lib/systemd/system/sonar.service<<'EOF'
[Unit]
Description=sonar
[Service]
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
Type=forking
User=sonar
Group=sonar
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
8.啟動SonarQube
systemctl start sonar.service
9.檢查服務
[root@sonar ~]# netstat -lntup|grep java
tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 18202/java
tcp6 0 0 :::9000 :::* LISTEN 18305/java
tcp6 0 0 127.0.0.1:9001 :::* LISTEN 18227/java
tcp6 0 0 127.0.0.1:36949 :::* LISTEN 18475/java
10.啟動報錯
使用systemd啟動后失敗猎塞,查看es日志發(fā)現(xiàn)提示max file descriptors太低:
[root@sonar /opt/sonarqube/logs]# tail -f /opt/sonarqube/logs/es.log
2020.05.14 09:51:19 INFO es[][o.e.t.TransportService] publish_address {127.0.0.1:9001}, bound_addresses {127.0.0.1:9001}
2020.05.14 09:51:19 WARN es[][o.e.b.BootstrapChecks] max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
2020.05.14 09:51:19 WARN es[][o.e.b.BootstrapChecks] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解決方法:
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
echo "root - nofile 65536" >> /etc/security/limits.conf
echo "sonar - nofile 65536" >> /etc/security/limits.conf
sysctl -p
第3章 初始化SonarQube
1.使用admin登陸
登陸地址為:
http://10.0.0.203:9000/about
賬號密碼均為admin:
2.生成token
在輸入框內(nèi)輸入jenkins夕冲,然后點擊Generate生成token,需要保存好這個tocken语卤,后面會用到
3.選擇項目類型
點擊Done之后會給我們生成提示信息:
第4章 安裝插件
1.在線安裝中文插件方法
Administration-->Marketplace-->chinese-->install
2.離線安裝插件方法
離線安裝的話只需要將插件壓縮包解壓到指定目錄然后重啟服務即可,解壓之前可以先備份插件目錄
mv /opt/sonarqube/extensions/plugins/ /opt/sonarqube/extensions/plugins_bak
tar xf sonar_plugins.tar.gz -C /opt/sonarqube/extensions/
3.重啟服務
systemctl restart sonar.service
4.瀏覽器訪問查看
第5章 安裝客戶端
1.jenkins主機安裝客戶端
我們需要將jenkins拉取的代碼推送到SonarQube,所以需要在jenkins主機上安裝sonar客戶端:
unzip sonar-scanner-cli-4.0.0.1744-linux.zip -d /opt/
cd /opt/
ln -s sonar-scanner-4.0.0.1744-linux sonar-scanner
寫入環(huán)境變量:
echo 'export PATH=$PATH:/opt/sonar-scanner/bin' >> /etc/profile
source /etc/profile
2.推送代碼到SonarQube
進入代碼目錄執(zhí)行推送命令
注意:這里的推送命令是初始化的時候生成的酪刀,Dsonar.login的值也是初始化時候生成的token
cd /var/lib/jenkins/workspace/h5game/
/opt/sonar-scanner/bin/sonar-scanner \
-Dsonar.projectKey=html \
-Dsonar.sources=. \
-Dsonar.host.url=http://10.0.0.203:9000 \
-Dsonar.login=4f57dfb332463fa8220be49856a0f1d27c88a142
我們也可以將服務器相關(guān)的命令寫入配置文件里粹舵,這樣推送的命令可以精簡一些:
vim /opt/sonar-scanner/conf/sonar-scanner.properties
sonar.host.url=http://10.0.0.203:9000
sonar.login=be400d585a529e6e2152e6742fe3f5cb3fc803d2
sonar.sourceEncoding=UTF-8
然后推送命令只需要指定兩個選項即可:
cd /var/lib/jenkins/workspace/my-freestyle-job/
sonar-scanner \
-Dsonar.projectKey=html \
-Dsonar.sources=.
3.web頁面查看掃描結(jié)果
4.執(zhí)行報錯解決
報錯現(xiàn)象:推送的時候提示我們找不到node環(huán)境
解決方法:在jenkins服務器上安裝nodejs環(huán)境,然后重新推送就不會再報錯了:
cd /opt/
wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz
tar xf node-v12.13.0-linux-x64.tar.xz
mv node-v12.13.0-linux-x64 node
echo 'export PATH=$PATH:/opt/node/bin' >> /etc/profile
source /etc/profile
npm -v
node -v
第6章 與Jenkins集成
1.配置SonarQube憑證信息
在jenkins頁面進入 系統(tǒng)管理-->系統(tǒng)配置-->找到sonar的配置
填寫sonar服務器信息:
此時點擊添加憑證按鈕沒有反應,沒關(guān)系骂倘,先保存一下眼滤,然后回來再添加一次即可:
填寫sonar初始化的token信息:
添加完成后就可以選擇sonar的憑證了:
2.配置sonar客戶端家目錄
點擊系統(tǒng)管理-->全局工具配置-->找到SonarQube Scanner選項:
3.工程中配置sonar構(gòu)建選項
添加構(gòu)建步驟:
填寫詳細信息:
填寫參數(shù):
sonar.projectName=${JOB_NAME}
sonar.projectKey=html
sonar.sources=.
4.調(diào)整構(gòu)建執(zhí)行順序
注意!@浴诅需!這里我們還需要將構(gòu)建順序調(diào)整一下漾唉,先執(zhí)行代碼掃描,然后再發(fā)布版本
可以直接拖動選項塊來調(diào)整順序堰塌,最終結(jié)果如下:
5.發(fā)布測試
我們可以使用git嘗試發(fā)布代碼赵刑,然后查看執(zhí)行是否成功:
git branch
git pull
vim index.html
git add .
git commit -m "v5.0 穩(wěn)定版"
git push -u origin master
sonar查看是否發(fā)布: