欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

(一)配置linux环境实现持续集成

程序员文章站 2024-02-07 14:51:04
目录 1.Centos7操作系统 2.Gnome 可视化桌面 3.远程shell工具 4.远程桌面工具 5.Jdk 6..Net Core 7.Git 8.Docker 容器 9.Kubernetes 自动化部署 10.Jenkins 持续集成 11.VSCode 总结 1.Centos7操作系统 ......

目录

1.centos7操作系统

2.gnome 可视化桌面

4.远程桌面工具

5.jdk

6..net core

7.git

8.docker 容器

9.kubernetes 自动化部署

10.jenkins 持续集成

11.vscode

1.centos7操作系统

1.1 杂谈

 本教程基于linux系统,我安装的是centos 7,在vmware虚拟机中运行。

1. 关于虚拟机平台:hype-v 与 vmware

  普遍最常用的是vmware,后来我在本地计算机中安装docker(一种容器)之后,win10系统便自动开启了 hype-v,它与vmware竞争关系,开启后便不能启动vmware。

  于是我上手开始用hype-v搭建虚拟机,安装centos 7比较顺利,但是网络调试和可视化桌面遇到了问题。

  先简单演示一下 win10 开启 hype-v 的方式,直接上图:

  (一)配置linux环境实现持续集成

  (一)配置linux环境实现持续集成

  (一)配置linux环境实现持续集成

  先谈网络:

  vmware 支持 nat (vmnet8) 、 bridge(vmnet0) 、 host-only(vmnet1)

  nat 最简单,他是由本地计算机分配的网络,共享同一个ip。

  bridge 是直接访问硬件网卡,简单说就是虚拟机走独立的网络。

  最直观的表现就是,如果你们公司上网需要到浏览器登录一下获取动态分配的ip的话,那如果你用bridge时,你同样也需要在浏览器里面用账号登录一次,分配另一个ip,nat则不需要。

  这样就遇到了一个问题,bridge方式联网的时候你需要有可视化桌面,有浏览器,你才能上网。(当然你如果会直接使用shell模拟浏览器登录获取ip的话那你也可以上网)

  而 hype-v 与 vmware 不同,不可选联网方式,只可以选要使用的网卡。我选择网卡以后,发现它只有内网ip,不能访问外网,显然就是bridge的联网方式。但是我们公司必须使用浏览器上网,于是我开启了安装可视化桌面之路。下文将会介绍(安装gnome)。当我安装完以后,发现hype-v虚拟机桌面无法进入。多次尝试仍然无效。于是我放弃了hype-v, 关闭该功能,使用vmware  虚拟机。

  所以我最终的选择是vmware虚拟机。

2. 关于操作系统

  之前听说centos是最稳定的linux系统,与redhat最接近,简单说就是redhat的免费版,而redhat是提供商业支持的系统。

  centos6.5 和 centos7 等差别比较大。我选择了后者。

1.2 上手

  上面我已经提到了因为hype-v的一些坑,我选择了 vmware。相信大家对它也比较熟悉。以下简单介绍。

  (一)配置linux环境实现持续集成

  上图中展示了我虚拟机的配置。有一些点需要注意一下:

  光驱镜像: 网上下载系统iso镜像,然后装载到虚拟机。

  硬盘:这个比较重要,通常来说5g肯定是不够的,而且linux扩展硬盘比较复杂,如果你安装完系统以后再扩容需要做大量的设置,所以我建议刚开始就将硬盘做大一点,后期如果不够用的话再扩容,而不是刚装完系统你就要扩容。扩容中的坑,我后续会补充。

  网络: 我上面已经讲到了,nat较为简单,我选择了nat。下面我谈一下网络的配置。

  (一)配置linux环境实现持续集成

  那么为什么网关ip配置成 192.168.23.2  呢,请打开本地计算机的网络共享中心,入下图。

  (一)配置linux环境实现持续集成

  通俗解释就是,vmware软件自动建造了一个虚拟网卡,连到这个网卡上的计算机都在一个子网(192.168.23.0)中。其中192.168.23.1 被你自己的硬件计算机用了,192.168.23.2是网关,其它的是给你的虚拟机用的。

  如果你不相信,请你打开cmd 窗口,输入 ipconfig。如下图,

  (一)配置linux环境实现持续集成

  在谈一谈 dhcp ,如下图,一旦你给dhcp打钩以后你就不需要给虚拟机设置ip地址了,这个dhcp就帮你完成了。你同时可以设置分配的ip的区间段,如图:

  (一)配置linux环境实现持续集成

  nat 设置完成,接下来我们扩展一下,看一看如果选择另外两种上网方式:

  host- only (仅主机):

  (一)配置linux环境实现持续集成

  你刚刚应该已经发现了,这里还有一个网络,192.168.80.0 子网,这正是“仅主机模式”,你会发现用这种网络的话你的虚拟机只能ping同你的计算机,而不能上外网,不能ping通公司内其他同事的电脑,这就是“仅主机”,你还需要别的网络共享的方式才能上网。

  bridge(桥接):

  (一)配置linux环境实现持续集成

  这里什么都不需要你配置 ,你只需要选择一个能用的网卡,这里面有很多虚拟网卡是不能用的,可能是你安装别的软件的时候自动建出来的。选完以后,你的虚拟机和你的电脑就是独立开了,虚拟机的ip是由你家里的路由器或者你们公司的dhcp来分配的,与你的电脑就无关了,你的电脑仅仅是为它提供了一张网卡。

  还要在说一下,这个虚拟网络编辑器的窗口仅仅是用来设置网络的。最终你的虚拟机要选择哪一种方式,需要你到“虚拟机设置”中选择,就和你选择多大内存一样简单。so easy 是不是!

  接下来就是安装操作系统了。你要认得 “install” 这个单词是“安装”的意思就好办了。我就不介绍了,总之就是很简单了。

  分区的时候默认分区就好了,过程中你设置一下root密码,然后可以在建一个别的账号。

  你最好是连同可视化桌面一起安装,如果你没有安卓桌面的话,我接下来将介绍如何安装(前提是你的网络是通的,ping www.baidu.com)

   如果你的网络还是不通的话,可能虚拟要你在安装好的linux 中配置一下网卡了。请自行百度,或者评论留言。下图是我网卡的配置:

  (一)配置linux环境实现持续集成

  用 “ifconfig” 或者 “ip addr”  可以查看ip地址

   (一)配置linux环境实现持续集成

  检查网络没问题:

  (一)配置linux环境实现持续集成

  可视化桌面也可以这样查看ip:

  (一)配置linux环境实现持续集成

2.gnome 可视化桌面

2.1 杂谈

  谈一下为什么要安装可视化桌面呢?

  第一,用惯了windows系统,还是希望出差错的时候也能点一下鼠标的,虽然这个桌面要消耗我将近一个多g的硬盘空间。

  第二,下载东西方便一点,可以进浏览器里面下载一些安装包,虽然我们大多数情况都是用yum直接安装的。

  第三,我打算试试linux编程,安装 vs code,上手在linux中加断点调试代码,自然只用命令行是不行的,虽然后来我也放弃了这种方式,我还是觉得vs stutio要好用的多,不过我还是要演示一下我的踩坑过程。

2.1 上手

更新grub2,是因为我在后来安装gnome的时候遇到了与grub2 “冲突” 的坑,所以我建议你提前就更新一下。

yum update grub2-common  

 安装,每次它提示是否确认下载,确认安装的时候,都输入 “y”

yum groupinstall "x window system" 
yum groupinstall "gnome desktop" 

 检查默认启动方式,get:

systemctl  get-default

 返回结果一定不是   graphical.target,那就设置一下咯。set:

systemctl  set-default graphical.target

 我个人认为这个比较容易,遇到坑的话可以找一下更为详细的教程,就可以完成。

然后重启虚拟机

reboot

3.远程shell工具

这个工具是安装在你的windows本地计算机上的

安装目的: 如果你的linux服务器不是你本地的虚拟机,而是机房服务器或者云服务器的话,那你是不能通过vmware来操作它的。只能用远程来操作。

工具重量很多,我介绍一个我常用的:securecrt

(一)配置linux环境实现持续集成

(一)配置linux环境实现持续集成

securefx 工具可以传输文件,通常和securecrt集成。这俩如果没有集成的话,需要你单独下载。

 (一)配置linux环境实现持续集成

4.远程桌面工具

4.1 linux上安装 vnc-server

安装

yum -y install tigervnc-server

配置

cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

设置vnc密码

vncpasswd

重启systemd

systemctl daemon-reload

设置永久开启vnc服务

systemctl enable vncserver@:1.service

启动vnc服务

systemctl start vncserver@:1.service

如遇报错:
job for vncserver@:1.service failed because the control process exited with error code. see "systemctl status vncserver@:1.service" and "journalctl -xe" for details.
编辑/etc/systemd/system/vncserver@:1.service配置文件:
将type=forking改为type=simple
重新启动vnc服务

systemctl restart vncserver@:1.service

查看vnc服务状态

systemctl status vncserver@:1.service

如有activie:failed则表示启动失败
编辑配置文件:

vim /etc/systemd/system/vncserver@:1.service

将里面所有的<user>替换为当前用户名(大致有两处),如root;另,如果是root用户,应将pidfile的/home/root改为/root
重新启动vnc服务
这里可能会遇到错误,当执行start vncserver@:1.service时可能提示如下错误。
job for vncserver@:1.service failed because the control process exited with error code. see
"systemctl status vncserver@:1.service" and "journalctl -xe" for details.
解决办法
删除/tmp/.x11-unix/ 目录

rm -rf /tmp/.x11-unix/

再启用一次即可

systemctl restart vncserver@:1.service

开启防火墙5901端口,重启防火墙服务

firewall-cmd --zone=public --add-port=5901/tcp --permanent
systemctl restart firewalld.service 

查看端口状态

netstat -lntp
netstat -lnp|grep 5901

4.2 本地计算机安装客户端 vnc-viewer

 下载地址: http://download.canadiancontent.net/vnc_viewer.html

下载以后可以直接运行,无需安装

(一)配置linux环境实现持续集成

当它提示需要你输入密码的时候,输入你刚刚在 vnc-server 中设置的密码即可。

(一)配置linux环境实现持续集成

登录系统,完成。

5.jdk

为什么要安装jdk呢,我们不是要做.net开发吗,那是因为我们接下来要用的jenkins是需要运行在java环境下,我不确定只安装jrm是否可行,所以直接安装了jdk

网络上安装教程比较多,推荐: 

我安装了最新的版本 jdk12, 但是后来安装jenkins的时候发现不支持jdk12,因为版本太高了,我老老实实重新安装了jdk8

需要测试一下java环境是否可用:

java -version

(一)配置linux环境实现持续集成

同时要创建软链接

ln -s /usr/local/java/jdk1.8.0_171/bin/java /usr/bin/java

6..net core

6.1 安装.netcore

官方链接:   

记得选择你的操作系统,我选的是centos

获取包

sudo rpm -uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

升级更新已安装的包,并安装.netcore

sudo yum update
sudo yum install dotnet-sdk-2.2

6.2 安装nodejs

由于需要做web开发,所以我打算提前安装 nodejs 

首先下载安装包

 官网下载:

我用windows浏览器访问的时候没有找到如何下载linux安装包,于是我用linux浏览器访问,找到了,如下图。当然你也可以直接用 wget 命令下载。

下载推荐版本,而非最新版本,你懂得。

(一)配置linux环境实现持续集成

下载完成后缀是  .tar.xz,  用下面的方式解压,据说,使用这种压缩方式的原因是压缩后文件更小。

xz -d node-v10.16.0-linux-x64.tar.xz
tar -xvf node-v10.16.0-linux-x64.tar

创建映射软链接/usr/bin  指向 解压文件夹,指令: 

ln -s /usr/local/src/node-v10.16.0-linux-x64/bin/node /usr/bin/node
ln -s /usr/local/src/node-v10.16.0-linux-x64/bin/npm /usr/bin/npm

检查安装状态

node -v
npm

7.git

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ yum -y install git-core

$ git --version
git version 1.7.1

8.docker 容器

移除旧的版本:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

安装一些必要的系统工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存:

sudo yum makecache fast

安装 docker-ce:

sudo yum -y install docker-ce

启动 docker 后台服务

sudo systemctl start docker

测试运行 hello-world

docker run hello-world

9.kubernetes 自动化部署

这一节,我目前就先不写了,因为目前还用不到分布式,当我再今后的文章中用到分布式的时候一定会来修补的。毕竟我是完美主义,用尽所有的工具让开发运维简单化。

好吧,我承认,我以前也没有用过这个东西,但是我目前不想学了,等我用到的时候一定会来学的。

10.jenkins 持续集成

安装

sudo wget -o /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

yum install jenkins

配置

vim /etc/sysconfig/jenkins

#监听端口
jenkins_port="8080"
#修改配置
jenkins_user="root"

修改目录权限

chown -r root:root /var/lib/jenkins
chown -r root:root /var/cache/jenkins
chown -r root:root /var/log/jenkins

重启

service jenkins restart
ps -ef | grep jenkins

启动

systemctl start jenkins

如果启动失败,报错找不到  /usr/bin/java ,需要创建jdk软链接

开启防火墙8080端口,重启防火墙服务

firewall-cmd --zone=public --add-port=8080/tcp --permanent
systemctl restart firewalld.service 

查看端口状态

netstat -lntp
netstat -lnp|grep 8080

查看jenkins密码:

cat /var/lib/jenkins/secrets/initialadminpassword

远程访问该计算机 http://ip:8080,即可进入jenkins

11.vscode

安装

yum check-update
sudo yum install code

设为默认编辑器

xdg-mime default code.desktop text/plain

官网地址:

接下来,怎么启动vscode呢。找到他的路径,然后拷贝到桌面,即可。

(一)配置linux环境实现持续集成

它的实际安装路径其实是这里:

(一)配置linux环境实现持续集成

其实你也可以不用找到它的路径,而是用这种方式:

 (一)配置linux环境实现持续集成

(一)配置linux环境实现持续集成

或者你也可以在vscode中选择要打开的项目:

(一)配置linux环境实现持续集成

(一)配置linux环境实现持续集成

大功告成。

我感觉使用调试时不是很方便,不是很流畅,后来我还是选择用windows上的vs studio来编译。

同时vs studio也会有自带的单元测试功能等,vscode 是一个轻量级的编译器,你需要什么功能的话需要添加插件等。

 

总结

我上文中提到了持续集成工具,主要的目的就是为了我方便将代码从windows高效同步到linux中。代码自动化部署。降低了运维成本等。

所以我今后的实战都将会把本地windows作为开发环境,linux作为生产环境。

同时linux可能不止一台,以后会谈到微服务以及分布式的问题,docker容器就发挥上用场了,一切为了简化部署。