基础配置
jenkins 插件源修改
进入/home/devops/.jenkins/updates
目录
[devops@devops updates]$ pwd
/home/devops/.jenkins/updates
[devops@devops updates]$ ls
default.json hudson.tasks.Maven.MavenInstaller
[devops@devops updates]$
执行
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
进入jenkins的插件管理,病设置Update Site
,网址为:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
重启tomcat生效
汉化插件
Role-based Authorization Strategy 插件
此插件暂未启用
凭据插件
进入凭据配置页面【有些版本首页没有凭据菜单,可以手动输入地址进入】
gitee 插件
帮助文档: https://gitee.com/help/articles/4193
git ssh 多用户配置
将来有可能使用gitlab
删除全局git用户信息
多用户情况下,尽量不要设置全局用户信息
# 添加全局用户信息
git config --global user.name "用户名"
git config --global user.email "邮箱"
#删除全局用户信息
git config --global --unset user.name
git config --global --unset user.email
生成 key
$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_github
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_github.
Your public key has been saved in id_rsa_github.pub.
The key fingerprint is:
SHA256:K8ZzHA4rrhgHlv7qyP+dAmvpQIq+jPUpbMdjXZncAnE [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| |
| . E |
| o |
| . . |
|.+ .oS+ |
|*. . . =*o. |
|++o.=.*.=. |
|*=**==o+. |
|=OBO=o.o |
+----[SHA256]-----+
使用同样的方式生成另一个Key,并将key添加至相应网站
配置 config
文件位置 ~/.ssh/config [注意不可有注释]
Host gitee.com
User sanren2016
Hostname gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee
将密匙加入密匙管理器
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa_github
Enter passphrase for /c/Users/Administrator/.ssh/id_rsa_github:
Identity added: /c/Users/Administrator/.ssh/id_rsa_github (/c/Users/Administrator/.ssh/id_rsa_github)
$ ssh-add ~/.ssh/id_rsa_gitlab
Enter passphrase for /c/Users/Administrator/.ssh/id_rsa_gitlab:
Bad owner or permissions on .ssh/config的解决
chmod 600 config
克隆后的操作
git config user.name "xxx"
git config user.email "xxx"
手动部署项目
gitee 新建项目
https://gitee.com/sanren2016/shop-boot
添加一个简单接口,参见:https://gitee.com/sanren2016/shop-boot/commit/ce3771c208b3fbaaa2f577d78ff9669279457dc1
spring boot 脚本启动
启动脚本与配置文件
- 目录结构
[stest@shopboot shop-boot]$ pwd
/home/stest/shop-boot
[stest@shopboot shop-boot]$ tree
.
├── conf
│ ├── application.yml
│ └── logback-spring.xml
├── logs
├── sbin
│ └── control.sh
└── shop-boot.jar
3 directories, 4 files
[stest@shopboot shop-boot]$
- application.yml
server:
port: 8091
servlet:
context-path: /
logging:
level:
org.springframework.web.servlet.DispatcherServlet: DEBUG
com.laolang.shop: DEBUG
config: file:/home/stest/shop-boot/conf/logback-spring.xml
path: /home/stest/shop-boot/logs
- logback-spring.xml
server:
port: 8091
servlet:
context-path: /
logging:
level:
org.springframework.web.servlet.DispatcherServlet: DEBUG
com.laolang.shop: DEBUG
config: file:/home/stest/shop-boot/conf/logback-spring.xml
path: /home/stest/shop-boot/logs
[stest@shopboot shop-boot]$ cat conf/logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds">
<!--<include resource="org/springframework/boot/logging/logback/base.xml" />-->
<contextName>logback</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
<!-- <property name="log.path" value="/home/laolang/gitosc/km-boot/km-boot/logs/km-bbs/dev"/>-->
<springProperty name="LOG_PATH" source="logging.path" defaultValue="../logs/shop-boot" />
<property name="LOG_FILE" value="shop-boot" />
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--输出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!-- <level>info</level>-->
<level>debug</level>
</filter>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--日志输出到文件-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志文件输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>150</maxHistory>
</rollingPolicy>
</appender>
<!--开发环境:打印控制台-->
<!--<springProfile name="dev">-->
<!--<logger name="com.laolang" level="debug"/>-->
<!--</springProfile>-->
<root level="debug">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
- console.sh
#!/bin/bash
# 不添加此行,远程执行脚本环境变量不生效
source /etc/profile
APP_NAME=shop-boot.jar
OPTIONS=-Dspring.config.location=/home/stest/shop-boot/conf/application.yml
#使用说明
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
exit 1
}
# 检查程序是否在运行
is_exist(){
pid=$(pgrep -f $APP_NAME)
# 如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
# 启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid}. "
else
nohup java -jar $OPTIONS ../$APP_NAME > /dev/null 2>&1 &
echo "${APP_NAME} is running..."
fi
}
# 停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
echo "${APP_NAME} is stoped"
else
echo "${APP_NAME} is not running"
fi
}
# 输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is not running"
fi
}
# 重启
restart(){
stop
start
}
# 根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
ssh 免密远程启动
客户端: 192.168.1.110 的 devops 用户
服务端: 192.168.130 的 stest 用户
偶现服务器重启后jenkins的ssh免密无效的情况,检查~/.ssh/config
是否配置了相应的密匙,重新ssh-add 密匙文件即可
- [devops] 生成ssh key【注意保存路径】
[devops@devops .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/devops/.ssh/id_rsa): /home/devops/.ssh/id_rsa_ssh
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/devops/.ssh/id_rsa_ssh.
Your public key has been saved in /home/devops/.ssh/id_rsa_ssh.pub.
The key fingerprint is:
SHA256:M7h2Zemwk/YraLFl6cEK8CcmljUJja8JKgWUE0/mVz8 devops@devops
The key's randomart image is:
+---[RSA 2048]----+
|.oo= . |
|.oB . . . |
| ..= o E |
|. o * . .. |
|.o B ...S.+ |
|o * = o.*X |
|.. o +oO*.. |
| .=ooo |
| . .o. |
+----[SHA256]-----+
[devops@devops .ssh]$
- [devops] 添加至测试服务器 【此时需要输入密码】
[devops@devops .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa_ssh.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/devops/.ssh/id_rsa_ssh.pub"
The authenticity of host '192.168.1.130 (192.168.1.130)' can't be established.
ECDSA key fingerprint is SHA256:628odOWvc8itmu8bxFYK5lY3fN0WZ47TICl3y8TRiz8.
ECDSA key fingerprint is MD5:eb:d7:84:07:d4:e8:7e:8a:82:7d:20:81:2f:e8:35:2c.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
[devops@devops .ssh]$
- [devops] ssh key 添加至密匙管理器
[devops@devops .ssh]$ ssh-agent bash
[devops@devops .ssh]$ ssh-add ~/.ssh/id_rsa_ssh
Identity added: /home/devops/.ssh/id_rsa_ssh (/home/devops/.ssh/id_rsa_ssh)
[devops@devops .ssh]$
- [devops] 配置 .ssh/config
此时 ~/.ssh/config 文件内容如下
Host gitee.com
User sanren2016
Hostname gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee
Host 192.168.1.130
User stest
Hostname 192.168.1.130
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_ssh
- [stest] 修改 .ssh 与 authorized_keys 权限
[stest@shopboot ~]$ chmod -R 700 .ssh/
[stest@shopboot ~]$ chmod 600 .ssh/authorized_keys
[stest@shopboot ~]$
- [devops] 测试远程启动
[devops@devops ~]$ ssh [email protected] "cd /home/stest/shop-boot/sbin; ./control.sh restart"
shop-boot.jar is not running
shop-boot.jar is running...
[devops@devops ~]$
maven 项目
此方式只是简单记录,实际开发过程不会采用这种方式