(一)配置linux环境实现持续集成
目录
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 的方式,直接上图:
先谈网络:
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。相信大家对它也比较熟悉。以下简单介绍。
上图中展示了我虚拟机的配置。有一些点需要注意一下:
光驱镜像: 网上下载系统iso镜像,然后装载到虚拟机。
硬盘:这个比较重要,通常来说5g肯定是不够的,而且linux扩展硬盘比较复杂,如果你安装完系统以后再扩容需要做大量的设置,所以我建议刚开始就将硬盘做大一点,后期如果不够用的话再扩容,而不是刚装完系统你就要扩容。扩容中的坑,我后续会补充。
网络: 我上面已经讲到了,nat较为简单,我选择了nat。下面我谈一下网络的配置。
那么为什么网关ip配置成 192.168.23.2 呢,请打开本地计算机的网络共享中心,入下图。
通俗解释就是,vmware软件自动建造了一个虚拟网卡,连到这个网卡上的计算机都在一个子网(192.168.23.0)中。其中192.168.23.1 被你自己的硬件计算机用了,192.168.23.2是网关,其它的是给你的虚拟机用的。
如果你不相信,请你打开cmd 窗口,输入 ipconfig。如下图,
在谈一谈 dhcp ,如下图,一旦你给dhcp打钩以后你就不需要给虚拟机设置ip地址了,这个dhcp就帮你完成了。你同时可以设置分配的ip的区间段,如图:
nat 设置完成,接下来我们扩展一下,看一看如果选择另外两种上网方式:
host- only (仅主机):
你刚刚应该已经发现了,这里还有一个网络,192.168.80.0 子网,这正是“仅主机模式”,你会发现用这种网络的话你的虚拟机只能ping同你的计算机,而不能上外网,不能ping通公司内其他同事的电脑,这就是“仅主机”,你还需要别的网络共享的方式才能上网。
bridge(桥接):
这里什么都不需要你配置 ,你只需要选择一个能用的网卡,这里面有很多虚拟网卡是不能用的,可能是你安装别的软件的时候自动建出来的。选完以后,你的虚拟机和你的电脑就是独立开了,虚拟机的ip是由你家里的路由器或者你们公司的dhcp来分配的,与你的电脑就无关了,你的电脑仅仅是为它提供了一张网卡。
还要在说一下,这个虚拟网络编辑器的窗口仅仅是用来设置网络的。最终你的虚拟机要选择哪一种方式,需要你到“虚拟机设置”中选择,就和你选择多大内存一样简单。so easy 是不是!
接下来就是安装操作系统了。你要认得 “install” 这个单词是“安装”的意思就好办了。我就不介绍了,总之就是很简单了。
分区的时候默认分区就好了,过程中你设置一下root密码,然后可以在建一个别的账号。
你最好是连同可视化桌面一起安装,如果你没有安卓桌面的话,我接下来将介绍如何安装(前提是你的网络是通的,ping www.baidu.com)
如果你的网络还是不通的话,可能虚拟要你在安装好的linux 中配置一下网卡了。请自行百度,或者评论留言。下图是我网卡的配置:
用 “ifconfig” 或者 “ip addr” 可以查看ip地址
检查网络没问题:
可视化桌面也可以这样查看ip:
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
securefx 工具可以传输文件,通常和securecrt集成。这俩如果没有集成的话,需要你单独下载。
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
下载以后可以直接运行,无需安装
当它提示需要你输入密码的时候,输入你刚刚在 vnc-server 中设置的密码即可。
登录系统,完成。
5.jdk
为什么要安装jdk呢,我们不是要做.net开发吗,那是因为我们接下来要用的jenkins是需要运行在java环境下,我不确定只安装jrm是否可行,所以直接安装了jdk
网络上安装教程比较多,推荐:
我安装了最新的版本 jdk12, 但是后来安装jenkins的时候发现不支持jdk12,因为版本太高了,我老老实实重新安装了jdk8
需要测试一下java环境是否可用:
java -version
同时要创建软链接
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 命令下载。
下载推荐版本,而非最新版本,你懂得。
下载完成后缀是 .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呢。找到他的路径,然后拷贝到桌面,即可。
它的实际安装路径其实是这里:
其实你也可以不用找到它的路径,而是用这种方式:
或者你也可以在vscode中选择要打开的项目:
大功告成。
我感觉使用调试时不是很方便,不是很流畅,后来我还是选择用windows上的vs studio来编译。
同时vs studio也会有自带的单元测试功能等,vscode 是一个轻量级的编译器,你需要什么功能的话需要添加插件等。
总结
我上文中提到了持续集成工具,主要的目的就是为了我方便将代码从windows高效同步到linux中。代码自动化部署。降低了运维成本等。
所以我今后的实战都将会把本地windows作为开发环境,linux作为生产环境。
同时linux可能不止一台,以后会谈到微服务以及分布式的问题,docker容器就发挥上用场了,一切为了简化部署。
上一篇: 经常用到的PHP正则表达达式
下一篇: PHP实现阶乘运算小代码
推荐阅读
-
(一)配置linux环境实现持续集成
-
Jenkins搭建持续集成环境方法介绍(一)
-
为 Jenkins 配置 .NET 持续集成环境
-
Linux VPS配置Web网站环境一键包(LNMP/LAMP/LNMPA)
-
PHP开发环境搭建一:PHP集成环境XAMPP的安装与配置
-
Windows实现Flutter环境搭建及配置这一篇就够了
-
Kubernetes SpringCloud持续集成 - 安装jenkins、配置模板pod(一)
-
nginx第一站 :Linux下nginx的安装以及环境配置
-
安装配置一个全新的linux server开发环境 LinuxDjangoPythonUbuntu虚拟机
-
安装配置一个全新的linux server开发环境 LinuxDjangoPythonUbuntu虚拟机