目录
- 自建gitlab和Jenkins服务器
- 将自己之前写的脚本放在git服务器上,尝试用版本管理来管理你的代码
- 自己实现一些自动化操作服务器的脚本,通过Jenkins发布脚本。
- 自己给自己设计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
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服务器
用户管理、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 拉、初始化、加、提交、推代码![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8961f0fc83a8b6e8baf89c542d2cca54.png)
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
查看提交:
用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没有安全验证机制,可直接读写。故很少使用了。
如果觉得对您有用,请点个赞哦♪(^∀^●) ↓↓↓