新手学Linux(二)----使用 Vagrant 打造跨平台开发环境(一)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: <div class="markdown_views"><p></p><div class="toc"><div class="toc"><ul><li><a href="#%E5%89%8D%E8%A8%80">前言</a></li><li><a href="#%E4%BB%80%E4%B9%88%E6%98%AFvagrant">什么是Vagrant</a></

前言


    做Web开发少不了要在本地搭建好开发环境,虽然说目前各种脚本都有对应的Windows版,甚至是一键安装包,但很多时候和Windows环境的相性并不是那么好,各麻烦的问题是实际部署的环境通常是Linux,常常还要面临着开发和部署环境不一致,上线前还要大量的调试。更要命的是,如果有很多机器需要装的话,那就真是一个灾难了。

什么是Vagrant?


这里写图片描述

    Windows下玩Linux少不了虚拟机,但装系统依旧是相当费事。在现在什么都在自动化的今天,Vagrant就是这么一个神器,基于Ruby开发,使用开源 VirtualBox 作为虚拟化支持,可以轻松的跨平台部署。

    我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气。

Vagrant能做什么?


尽可能避免”Work on my machine“错误

    在Vagrant没有出现之前,在服务器端进行开发的人们通常都拥有一个专用的开发帐号。使用这个帐号,开发者可以在一定限度内配置自己的开发环境、完成编码、进行测试并完成向开发团队代码库的代码推送。于是,在团队合作开发的过程中,一个问题出现了:当A进行了一次新的代码推送之后,原本可以通过的代码持续集成测试无法通过了。通过代码检查,发现A的代码出现了异常。而A在自己的开发环境中的测试是可以通过的。这类错误被Vagrant称作为“Work on my machine”错误。这类错误要定位解决通常耗时很久。在一个可以进行面对面开发的团队中,问题的定位由于沟通手段的丰富相对较快。如果是分散在不同地方的人在合作开发,那么要解决此类错误,就没有那么简单了。

小张在自己的机器上辛苦的完成了一项功能开发,通过了本机上的各项测试,高高兴兴的向团队代码库提交的自己的工作成果。心想终于可以放松一下了。“是不是可以买一只机械键盘犒劳一下?晚上和伙伴们出去聚会吧!嘿嘿。”小A心里美滋滋的想。

“小张,你来一下,代码有问题”。临近下班的时候,小A接到QA小组的一个电话。“怎么回事?”小张一头雾水的走进了QA小组的办公区。

“你今天下午提交的代码,无法通过测试。你自己做了测试了吗?”,老王是QA小组测试负责人,他面色凝重的问小张,“咱们就要发布一个新的代码版本了。这个时候你的代码出问题,可能会影响代码发布的。要不你赶紧看看?明天上午能修复吗。我们的测试报告和测试规范在这里”。

“明明没有问题的呀”,出了QA的办公区,小张仍然迷惑不解。“在我的机器上明明是可以运行的。而且为了晚上的聚会,测试规范中定义的各项测试也是提前跑过的呀。看来今天晚上的聚会要取消了。“小张无奈的拿出电话,打算给好友们打电话,通知自己无法参加晚上的聚会了。

    借助Vagrant,每一个开发者都可以得到一份服务器运行环境的虚拟机,可以以虚拟机的方式运行一个微型的”生产环境“。这样,在提交代码之前,开发这就可以在虚拟机上完成”生产环境“的验证。自然可以解决上面的问题了。

缩短搭建开发环境的时间

    搭建一个开发环境,需要完成操作系统的安装,必要的开发支撑软件的安装,配置操作系统和代码运行环境。如果所有的操作都需要由人来手动操作的话,一个下午的时间是必要的。搭建开发环境是团队中新人加入时的必不可少的第一课。而团队的老人们,无可避免的会接到无数的“新手”的发问。更不用说,当著名的Wxdows系统需要重新安装系统的时候,无论谁,基本上一天的工作时间算是交代了,更不用说各类开发软件的配置如果会影响代码执行结果的时候会引入什么样的“灾难”了。使用Vagrant实现开发环境的快速搭建成为提升效率的显著功能特性之一。

Vagrant提供了统一的安装程序配置环境:
- 使用统一的配置文件( vagrantfile)实现对服务器的统一配置。
- 使用共享文件夹( shared folder )实现代码编辑向“服务器”的快速提交
- 使用软件配置脚本( Provisioning scripts )实现服务器上的运行环境的快速建立
- 拥有标准化的虚拟机分享网络,极大缓解了分享开发环境配置时的网络带宽压力
- 可以具备一个供安装维护测试使用的可抛弃的服务器端环境。

小李是进入开发团队的新人。从学校毕业出来,小李就到了一个公司从事服务器端的软件开发工作。由于兴趣爱好的原因,他新近加入了这个网游开发团队。他接到的第一个命令就是“搭建一个服务器工作日志分析系统,为服务器代码优化改进做准备”。

小李从团队项目经理那里得到了服务器环境安装手册以及服务器日志数据库设计文档。小李需要在自己的机器上用虚拟机安装一套服务器环境,用以进行日志数据的分析和提取。

“好吧,估计这几天的时间要搭到系统安装里去了。”小李做好了心理准备,打开了服务器环境安装手册。意外的,手册很简单:

安装Vagrant和VirtualBox,从文件服务器(地址XX.XX.XX.XX/Software)下载Vagrant、VirtualBox安装文件,并完成安装

执行 git clone git@xx.xx.xx.xx:vagrantconfig.git获取vagrant配置文件
进入vagrantconfig目录,运行Vagrant up ftp://xx.xx.xx.xx/vagrant/trusty-server-cloudimg-amd64-vagrant-disk1

执行vagrant ssh 验证安装

从文件服务器(xx.xx.xx.xx/data)下载日志数据库dump文件,完成Mysql数据库内容的加载
……
“这就完了?”半个小时后,小李目瞪口呆的看着自己机器上运行的虚拟机,一套服务器日志系统已经加载完成了。小李已经可以着手进行数据的分析并开始做具体编码设计了。

Vagrant的主要使用者


    在服务器端进行开发的人员:Vagrant管理的虚拟机镜像提供了统一的生产运行环境。开发者可以随心所欲的决定什么时候想“服务器”端发布程序,什么时候在“服务器”端进行必要的测试,而丝毫不用担心会影响生产环境服务器的稳定运行。

    各类设计人员:使用Vagrant,可以让设计人员可以随心所欲的选择自己的开发用操作系统、设计软件、编辑IDE软件,可以通过与虚拟机之间的共享目录,快速实现设计文件在生产环境中的测试验证。

    系统维护人员:使用Vagrant,可以随意进行对系统安装设置的过程进行演练,验证工程安装手册的完备程度。也可以对系统维护中的各项操作指令随意进行实验。这对于提升售后服务团队的问题快速解决能力,获得实战经验的非常重要的手段。

相关文章
|
1月前
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
110 8
|
2月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
315 16
|
2月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
198 10
|
1月前
|
Ubuntu 安全 Linux
Ubuntu 24.10 发行版登场:Linux 6.11 内核、GNOME 47 桌面环境
Ubuntu 24.10 还带来了 GNOME 47,增强了性能和稳定性,并引入了新功能。此版本的 Ubuntu 还默认在采用 Nvidia 显卡的硬件上切换到 Wayland,并在支持的硬件上默认使用开源的 Nvidia 560 内核模块。 另外需要注意的是,Ubuntu 24.10 是稳定版本,但作为非 LTS 版本,仅支持 9 个月。
|
1月前
|
安全 Linux 网络安全
Linux系统初步设置本地Git环境和生成SSH密钥的步骤。
现在您的Linux系统已经配置好了Git环境,并创建并添加了SSH密钥,可以安全地与远端仓库进行交互,无论是克隆、推送还是拉取操作。此过程确保了数据传输的安全并使版本控制流程更为顺畅。使用Git时应考虑定期更新并管理您的凭据,以确保安全性。
322 0
|
1月前
|
XML 缓存 Linux
在Linux环境下解决Visual Studio Code字体显示异常和字体替换方法。
解决Linux下VS Code字体显示异常,需要对Linux字体渲染机制有所理解,并对VS Code的配置选项进行合理设置。替换字体时则要通过系统字体配置或VS Code设置来完成。通过上述方法,可以有效地解决字体显示问题,从而提升代码编辑的视觉体验。
209 0
|
2月前
|
Kubernetes Linux 网络安全
Rocky Linux 8.9配置Kubernetes集群详解,适用于CentOS环境
初始化成功后,记录下显示的 `kubeadm join`命令。
161 0
|
21天前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
88 16
|
12天前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
|
2月前
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
658 14