gitlab+jenkins+Php/Maven

目录

  1. 自建gitlab和Jenkins服务器
  2. 将自己之前写的脚本放在git服务器上,尝试用版本管理来管理你的代码
  3. 自己实现一些自动化操作服务器的脚本,通过Jenkins发布脚本。
  4. 自己给自己设计5道面试题,并且自己回答

自建gitlab和Jenkins服务器

脑图:
在这里插入图片描述

git编译安装:

安装依赖,下载安装包,安装

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y

wget https://github.com/git/git/archive/v2.7.4.zip
unzip v2.7.4.zip
cd git-2.7.4
[root@yangk101 test]# rz
[root@yangk101 test]# ll

在这里插入图片描述

解压安装

make prefix=/usr/local/git all
make prefix=/usr/local/git install
rm -rf /usr/bin/git
ln -s /usr/local/git/bin/git /usr/bin/git
git -version

验证OK

git命令验证

git clone git@192.168.230.101:root/ceshi.git
cd ceshi
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

验证成功:
在这里插入图片描述

gitlab安装:

安装依赖

yum install -y curl policycoreutils openssh-server openssh-clients
systemctl enable sshd
systemctl start sshd 
yum install postfix -y
systemctl enable postfix
systemctl start postfix

rpm安装

yum localinstall gitlab-ce-8.9.5-ce.0.el7.x86_64.rpm

在这里插入图片描述

修改配置信息,使配置生效

vim /etc/gitlab/gitlab.rb
gitlab-ctl reconfigure

在这里插入图片描述

测试访问:测试访问:http://192.168.230.101/

成功搭建gitlab服务器
成功搭建gitlab服务器

用户管理、issue管理(略),最终效果:
在这里插入图片描述

jenkins服务器搭建:

安装依赖,安装yum源,rpm安装

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm -ivh jenkins-2.32.3-1.1.noarch.rpm

启动:

在这里插入图片描述
端口验证:8080端口
在这里插入图片描述

测试访问:测试访问:192.168.230.102:8080

成功

用户管理、插件安装(略)、最终效果

在这里插入图片描述
成功

将自己之前写的脚本放在git服务器上,尝试用版本管理来管理你的代码

创建组和用户(略)

最终效果
在这里插入图片描述
在这里插入图片描述

那两个就不加了,接下来创建一个库:

在这里插入图片描述
在这里插入图片描述
详细设置

创建成功:

创建成功

添加SSH Key

在这里插入图片描述
在这里插入图片描述

服务器上新建ssh key

cd .ssh/
ssh-keygen
一路回车

在这里插入图片描述

复制公钥粘贴至web界面

cat id_rsa.pub

复制公钥位置

空库新建内容;git 拉、初始化、加、提交、推代码

空库新建内容:

在这里插入图片描述
在这里插入图片描述
有一次提交
在这里插入图片描述

git 拉、初始化、加、提交、推代码在这里插入图片描述

 git clone git@192.168.230.101:java/app1.git
 
 git checkout -b shouye
 git status
 echo "<h1>welcome to xian<h1>" > index.html
 git add .
 git commit -m "shouye"
 git push origin shouye
 分支就上去了,一个是shouye,一个是被保护的master分支
 合并到主分支:

成功了,就证明权限打通了合并到主分支:
在这里插入图片描述
使用项目经理账号登录,同意merge
在这里插入图片描述
查看提交:
dev1标识已完成

用pm进入查看里程碑进度,其他开发步骤同理依次开发完成
在这里插入图片描述
最终完成效果:里程碑全部完成:
在这里插入图片描述

用版本管理来管理你的代码

安装sourcetree
在这里插入图片描述
在这里插入图片描述

ssh:gitlab上复制链接,用ssh

在这里插入图片描述

sourcetree配置

在这里插入图片描述
成功
在这里插入图片描述

打开自己的存储路径,写一个开发文件(模拟)

在这里插入图片描述

点击上方未提交的更改,可以看到它检测到了

在这里插入图片描述

下方勾选、配置、提交

在这里插入图片描述

推送

在这里插入图片描述

PM账号同意meger

在这里插入图片描述

查看最终里程碑

在这里插入图片描述

上线,打标签

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
v1.0版本成功发布

回到sourcetree拉取

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功,当前是1.0版本

自己实现一些自动化操作服务器的脚本,通过Jenkins发布脚本。

jenkins 持续集成工作原理:

在这里插入图片描述

自动化操作服务器脚本:服务器系统配置初始化脚本

#/bin/bash
# 设置时区并同步时间
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
if ! crontab -l |grep ntpdate &>/dev/null ; then
    (echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>&1";crontab -l) |crontab 
fi

# 禁用selinux
sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config

# 关闭防火墙
if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; then
    systemctl stop firewalld
    systemctl disable firewalld
elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; then
    service iptables stop
    chkconfig iptables off
fi

# 历史命令显示操作时间
if ! grep HISTTIMEFORMAT /etc/bashrc; then
    echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/bashrc
fi

# SSH超时时间
if ! grep "TMOUT=600" /etc/profile &>/dev/null; then
    echo "export TMOUT=600" >> /etc/profile
fi

# 禁止root远程登录
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config

# 禁止定时任务向发送邮件
sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab 

# 设置最大打开文件数
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
    cat >> /etc/security/limits.conf << EOF
    * soft nofile 65535
    * hard nofile 65535
    EOF
fi

# 系统内核优化
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20  
EOF

# 减少SWAP使用
echo "0" > /proc/sys/vm/swappiness

# 安装系统性能分析工具及其他
yum install gcc make autoconf vim sysstat net-tools iostat iftop iotp lrzsz -y

写入:app1路径

jenkins服务器规划:7.9-2(192.168.230.102)

安装依赖等(同上,略)

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

打通gitlab和jenkins的连接:

在这里插入图片描述

安装一个插件:Gitlab Hook Plugin
1.gitlab服务器(101)上生成秘钥:
[root@yangk101 ~]# cd .ssh/
[root@yangk101 .ssh]# ls
2.把公钥拷给gitlab服务器
[root@yangk101 .ssh]# cat id_rsa.pub
复制拷给root-gitlab这个用户

在这里插入图片描述

jekins配对

在这里插入图片描述
在这里插入图片描述

[root@yangk101 .ssh]# cat id_rsa

在这里插入图片描述
配对成功:
在这里插入图片描述

重启

上述配置完成后,我们最好重新配置、启动Gitlab,执行命令:
101上
gitlab-ctl reconfigure
gitlab-ctl restart

在这里插入图片描述

Jenkins项目拉取

在这里插入图片描述
在这里插入图片描述
创建自由风格,

jenkins项目配置

在这里插入图片描述

组、用户配置

在这里插入图片描述

执行构建

在这里插入图片描述
成功:
在这里插入图片描述

手动测试:

[root@yangk102 .ssh]# git clone git@192.168.230.101:java/app1.git

在这里插入图片描述

远程自动化发布任务:

rsync -raz --delete --progress * root@192.168.230.101:/data/www/php-deploy/

在这里插入图片描述

验证:

在这里插入图片描述
就会copy到指定机器的目录里,这样就实现了自动部署

自己给自己设计5道面试题,并且自己回答

1.请说出编译安装的三个过程:

configre

make

make install

2.请简述https的实现过程:

客户端-》两次交互-》返回https的location,server端验证私钥、公钥验证、客户端验证(有问题警告、没问题下一步)->生成一个随机key,每次都不一样,-》加密数据的-》数据传到服务器解密-》解密getkey-》发送到客户端使用随机key解密

3.请简述haproxy的取模过程:

balance source 会对原地址进行哈希,哈希出来一个值,值%(权重相加),取模权重是几,就分配给哪台权重服务器,

4.你们是怎么更新服务的?是停掉服务修改配置文件后再重启吗?

不是,我们利用haproxy+keepalived搭建高可用,将集群中的服务器的服务停掉,这样它leader就会重新选举,更新完之后再将该服务器重新挂载到集群,实现无感更新。

5.请简述redis和memcached区别?

Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

Redis支持数据的备份,即master-slave模式的数据备份。

Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。M支持的最大内存存储对象仅为1M,超过1M得拆分压缩放到多个key中,M没有安全验证机制,可直接读写。故很少使用了。

如果觉得对您有用,请点个赞哦♪(^∀^●) ↓↓↓

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值