热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Vagrant入门指北

Vagrant入门指北后端的同学用Vagrant快速的、可重复的创建各种不同环境的虚拟机,来测试部署各后端程序。对于前端同学来说,想向全栈发展,服务器相
Vagrant 入门指北

WX20180613-224646@2x

后端的同学用 Vagrant 快速的、可重复的创建各种不同环境的虚拟机,来测试部署各后端程序。对于前端同学来说,想向全栈发展,服务器相关的一些操作是绕不开的一道槛。这里先前端为视角,以 Vagrant 来引导大家逐步进入服务器技术相关的领域。

快速入门

安装

安装 Vagrant 非常简单,可以在Downloads 页面选择最新的版本安装。Vagrant 支持 Windows、Linux、Mac 等平台。

同时电脑中还需要再安装virtualbox。

创建一个目录用于存放 Vagrantfile 以及 Vagrant 在工作中的数据

» mkdir myvagrant
» cd myvagrant

接下来前往 vagrant 官网寻找一个合适的 Box,这里我选择了 Virtualbox 版本的Centos7

以 Centos7 初始化 Vagrant 工程

» vagrant init centos/7

运行这个命令后会在当前目录下新建一个 Vagrantfile 的配置文件。

如果本地没有 Centos7 这个镜像,那么接下来将会是一个漫长的下载过程。在这如果实在等不下去,可以先通过别的各种途径将 Box 下载到本地。然后再命令行中输入如下代码:

» vagrant box add --name centos/7 /local_download_path/virtualbox.box

通过 vagrant box list来检查 box 是否添加成功。出现如下提示代表安装成功。

centos/7 (virtualbox, 0)

启动虚拟机

再次执行初始化命令,并通过up命令来启动

» vagrant init centos/7
» vagrant up

出现如下提示代表启动成功

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos/7'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: myvagrant_default_1528726843301_65709
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...default: Adapter 1: nat
==> default: Forwarding ports...default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...default: SSH address: 127.0.0.1:2222default: SSH username: vagrantdefault: SSH auth method: private keydefault:default: Vagrant insecure key detected. Vagrant will automatically replacedefault: this with a newly generated keypair for better security.default:default: Inserting generated public key within guest...default: Removing insecure key from the guest if it's present...default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...default: No guest additions were detected on the base box for this VM! Guestdefault: additions are required for forwarded ports, shared folders, host onlydefault: networking, and more. If SSH fails on this machine, please installdefault: the guest additions and repackage the box to continue.default:default: This is not an error message; everything may continue to work properly,default: in which case you may ignore this message.
==> default: Rsyncing folder: /work/training/vagrant/myvagrant/ => /vagrant

登录到虚拟机

输入 vagrant ssh 登录

此时 vagrant 将使用默认的用户 vagrant 以及预设的 SSH 公钥密钥键值对直接登录虚拟机。

[vagrant@localhost ~]$

切换用户到 root,默认密码是 vagrant

密码在 Linux 中是看不见的,但确实已经输入了

[vagrant@localhost ~]$ su
Password:
[root@localhost vagrant]#

退出虚拟机

[root@localhost vagrant]# exit
exit
[vagrant@localhost ~]$ exit
logout
Connection to 127.0.0.1 closed.

关闭虚拟机

Vagrant 提供了好几种方法来关闭虚拟机,你可以根据不同的情况选择不同的方式。
  • vagrant suspend将虚拟机置于休眠状态。这时候主机会保存虚拟机的当前状态。再用vagrant up启动虚拟机时能够返回之前工作的状态。这种方式优点是休眠和启动速度都很快,只有几秒钟。缺点是需要额外的磁盘空间来存储当前状态。
  • vagrant halt则是关机。如果想再次启动还是使用vagrant up命令,不过需要多花些时间。
  • vagrant destroy则会将虚拟机从磁盘中删除。如果想重新创建还是使用vagrant up命令。

进阶操作

安装 nginx

Nginx 是一个十分轻量级的 HTTP 服务器

接上篇登录到虚拟机,并切换到 root 用户。

[root@localhost vagrant]# yum install -y epel-release
[root@localhost vagrant]# yum install -y nginx

启动 nginx

[root@localhost vagrant]# systemctl start nginx

检查 nginx 状态

[root@localhost vagrant]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)Active: active (running) since Mon 2018-06-11 15:02:45 UTC; 57s agoProcess: 2910 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)Process: 2908 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)Process: 2907 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)Main PID: 2912 (nginx)CGroup: /system.slice/nginx.service├─2912 nginx: master process /usr/sbin/nginx└─2913 nginx: worker processJun 11 15:02:45 localhost.localdomain systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jun 11 15:02:45 localhost.localdomain nginx[2908]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jun 11 15:02:45 localhost.localdomain nginx[2908]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jun 11 15:02:45 localhost.localdomain systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
Jun 11 15:02:45 localhost.localdomain systemd[1]: Started The nginx HTTP and reverse proxy server.

出现如上所示代表 nginx 启动成功。

外部访问 & 端口转发

现在 nginx 是启动到了 vagrant 中,如何在我们的电脑中直接访问呢 ? 这里需要对 vagrant 做一下端口转发的配置。

首先退出虚拟机。编辑上一篇初始化后生成的配置文件 Vagrantfile,找到

# config.vm.network "forwarded_port", guest: 80, host: 8080

将最前边的#号删除并保存。

运行 vagrant reload来应用修改后的配置文件。

登录虚拟机,切换到 root 用户,启动 nginx

这时打开电脑浏览器输入 http://localhost:8080/ 就能看到 nginx 的欢迎页面了。



推荐阅读
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 如何在Mozilla Firefox中调整GIF动画的循环次数
    本文介绍了如何通过调整Mozilla Firefox的高级设置来控制GIF动画的播放次数,帮助用户根据个人喜好自定义浏览体验。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 在使用 PyInstaller 将 Python 应用程序打包成独立的可执行文件时,若项目中包含动态加载的库或插件,需要正确配置 --hidden-import 和 --add-binary 参数,以确保所有依赖项均能被正确识别和打包。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中安装 Python 3.7 的步骤,包括编译工具的安装、Python 3.7 源码的下载与编译、软链接的创建以及常见错误的处理方法。 ... [详细]
  • CentOS7通过RealVNC实现多人使用服务器桌面
    背景:公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略过程&# ... [详细]
  • 本文详细介绍了如何在 CentOS 7 及其衍生发行版(如 Red Hat, Oracle, Scientific Linux 7)上安装和完全卸载 GitLab。包括安装必要的依赖关系、配置防火墙、安装 GitLab 软件包以及常见问题的解决方法。 ... [详细]
  • opa学习1开发环境搭建
    从官网下载的opa.box进行解压,得到三个文件,box.ovf、box-disk2.vmdk和Vagrantfile,有的电脑上用的是自带的压缩软件,无法对.box文件进 ... [详细]
author-avatar
moquan
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有