Jenkins部署并使用supervisor启动
安装supervisor
安装pip
如果服务器上没有pip,则先安装pip,方法如下:
yum -y install epel-release
yum -y install python-pip
安装supervisor
指定版本安装
pip install supervisor==4.1.0
配置supervisor
这里可以定义自己的工作目录,例如将supervisor放在/usr/local目录下
mkdir /usr/local/supervisor/{logs,run,supervisord.d} -p
echo_supervisord_conf > /usr/local/supervisor/supervisord.conf
修改supervisor的配置文件
可以根据情况来配置supervisord.conf里的配置项,然后贴入一下内容(直接覆盖即可)
[unix_http_server]
file=/usr/local/supervisor/run/supervisord.sock ; the path to the socket file
[supervisord]
logfile=/usr/local/supervisor/logs/supervisord.log ; main log file; default $CWD/supervisord.log
logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10 ; # of main logfile backups; 0 means none, default 10
loglevel=info ; log level; default info; others: debug,warn,trace
pidfile=/usr/local/supervisor/run/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false ; start in foreground if true; default false
minfds=1024 ; min. avail startup file descriptors; default 1024
minprocs=200 ; min. avail process descriptors;default 200
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///usr/local/supervisor/run/supervisord.sock ; use a unix:// URL for a unix socket
[include]
files = supervisord.d/*.conf
将supervisor加入systemd
首先查看下supervisord和supervisorctl的全路径
# which supervisord supervisorctl
/usr/bin/supervisord
/usr/bin/supervisorctl
用systemd管理supervisor
vim /usr/lib/systemd/system/supervisord.service
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /usr/local/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
启动supervisor
systemctl daemon-reload
systemctl restart supervisord
systemctl enable supervisord
正常启动后即部署Jenkins
安装jenkins
准备jdk环境
这里使用yum进行快速安装
yum -y install java-1.8.0-openjdk*
查看java版本进行确认
# java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
下载Jenkins安装包
这里使用的Jenkins版本为:2.176.2 下载地址:jenkins
创建Jenkins需要的目录
mkdir /usr/local/jenkins -p
mkdir /data/jenkins -p
设置Jenkins的工作目录
Jenkins有自己的一些环境变量可供使用,其中JENKINS_HOME
为Jenkins的工作目录,我们需要为其设置下工作目录,这里设置的是/data/jenkins
设置方法:加入环境变量即可
vim /etc/profile.d/jenkins.sh
export JENKINS_HOME=/data/jenkins
添加完毕后,source /etc/profile下即可,最后在命令行输入echo $JENKINS_HOME
看下输出是否为我们设置的工作目录
# echo $JENKINS_HOME
/data/jenkins
使用supervisor启动Jenkins
将下载好的war包移动到/usr/local/jenkins/
目录下,然后配置用于启动jenkins的supervisor文件
vim /usr/local/supervisor/supervisord.d/jenkins.conf
[program:jenkins]
command=java -jar jenkins.war --httpPort=8080
directory=/usr/local/jenkins
user=root
environment=JENKINS_HOME=/data/jenkins
stdout_logfile=/usr/local/supervisor/logs/jenkins.log
autostart=true
autorestart=true
startsecs=5
redirect_stderr=true
stopasgroup=true
killasgroup=true
启动Jenkins
supervisorctl update
supervisorctl start jenkins
#查看jenkins是否启动成功
supervisorctl status jenkins
jenkins RUNNING pid 8171, uptime 0:00:14
问题
如果使用supervisorctl status的过程中报错
# supervisorctl status error: <class ‘socket.error’>, [Errno 113] No route to host: file: /usr/lib64/python2.7/socket.py line: 571
解决办法:加一条软连接 ln -s /usr/local/supervisor/supervisord.conf /etc/supervisord.conf
配置Jenkins
浏览器访问:IP+8080
根据界面提示,查看密码:
# cat /data/jenkins/secrets/initialAdminPassword
870a2b923fc646edb81e5b661622794e
到这一步可以跳过,随后就是设置下代理,可参考博客:如何设置jenkins的代理
到这里就已经结束了,剩下的就是安装插件和配置,这里不再讲诉。。
- 代码分享系列(1)之感知机【代码可下载】
- C++课程设计类作业3
- [快学Python3]INI文件读写
- 【专知-PyTorch手把手深度学习教程08】NLP-PyTorch: 用字符级RNN生成名字
- Codeforces Round #415 (Div. 2)(A,暴力,B,贪心,排序)
- BZOJ 2456: mode(新生必做的水题)
- 【专知-PyTorch手把手深度学习教程07】NLP-基于字符级RNN的姓名分类
- Codeforces Round #301 (Div. 2)(A,【模拟】B,【贪心构造】C,【DFS】)
- 【专知-PyTorch手把手深度学习教程06】NLP-Word Embedding快速理解与PyTorch实现: 图文+代码
- [linux][memory]memcmp几种实现和性能对比
- 蒙特卡洛算法及其实现
- 【专知-PyTorch手把手深度学习教程05】Dropout快速理解与PyTorch实现: 图文+代码
- 【专知-PyTorch手把手深度学习教程04】GAN快速理解与PyTorch实现: 图文+代码
- 2017年中国大学生程序设计竞赛-中南地区赛暨第八届湘潭市大学生计算机程序设计大赛题解&源码(A.高斯消元,D,模拟,E,前缀和,F,LCS,H,Prim算法,I,胡搞,J,树状数组)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法