攻略 - 自建 Red Hat 企业级系统 Vagrant Box

file
前段时间做了一个大学的项目,因为对安全性要求比较高,该学校的服务器都是用的 Red Hat Enterprise Linux 系统。

Homestead 自带的是 Ubuntu 系统,虽然可以用来开发,不过为了使 本地和线上的环境差异最小化,就内部做了一个 Red Hat 的 Vagrant Box,下面分享下制作流程:

注册账户

Red Hat 的企业级系统是收费的,但是 developer 的版本是免费的,先去官网注册一个账户并下载开发者版本(DVD iso):https://developers.redhat.com/products/rhe..., 最新的版本是 7.5.0,我当时使用的是 7.3.0。

安装 RHEL

先检查下 virtual box,下载最新的版本和 Extension Pack。

接着就要根据官方文档安装系统了:https://developers.redhat.com/products/rhe... (没找到中文的),如果有在 virtual box 里安装过 Linux 系统的会比较容易上手,不过官方文档还是非常详细的,一步步根据步骤来即可(只需要完成步骤二),简单概括如下:

  1. 选择64位的系统,配置内存,创建虚拟硬盘。
  2. 允许主机和虚拟机之间的 copy-paste、drag-drop,配置 CPU,导入之前下载的 iso 文件,共享文件夹可以跳过。
  3. 正式安装系统:设置语言和键盘; 注意 Software Selection,请选择 minimal install,因为我们配置服务器,不需要 GUI 界面;激活以太网;关闭 kdump 释放内存;设置 root 用户密码等。
    file

仓库配置

系统创建后,SSH 登录为 root 用户,去注册 RHEL subscription-manager:

su -
subscription-manager register (会提示你输入第一步注册的 developer 帐户和密码)
subscription-manager attach

然后验证可以连接到 Red Hat 软件仓库:

subscription-manager repos --list-enabled

再激活额外的软件仓库,这样你就可以安装来自 RPMs 和 RHSCL 的软件:

subscription-manager repos --enable rhel-server-rhscl-7-rpms
subscription-manager repos --enable rhel-7-server-optional-rpms

yum -y update

接着安装一些 packages:

yum install -y openssh wget gcc vim
yum groupinstall 'Development Tools' (这一步是后面安装 Virtualbox Guest Addition 所必须的)

用户配置

接下来我们配置 vagrant 用户,因为密码一般也是设置成 vagrant,所以我们需要先修改密码的需求,Red Hat 默认的密码最小长度是 8,这里我们修改成 5:

打开 /etc/pam.d/system-auth 文件,添加 "minlen = 5" 到 password requisite 行的末端。

添加用户:

sudo useradd vagrant
sudo passwd vagrant (忽略警告:密码包含用户名)
sudo visudo -f /etc/sudoers.d/vagrant,添加 vagrant ALL=(ALL) NOPASSWD:ALL

reboot

这时我们重启了服务器,然后用 vagrant 用户重新 SSH 登录,并执行以下所有的操作


为了能让 vagrant 用户免密码登入,需要配置 insecure ssh keypair

mkdir .ssh
chmod 0700 .ssh
cd .ssh/

wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O authorized_keys
chmod 0600 authorized_keys

接着允许 wheel 组的用户免密码运行 sudo 命令:

sudo visudo
修改 '%wheel ALL=(ALL) ALL'  成 '%wheel ALL=(ALL) NOPASSWD: ALL'

Virtualbox Guest Additions 配置

这个安装还是有必要的,有以下几点好处:

  • 不再需要用 host key 在主机和虚拟机之间切换
  • 可以在主机和虚拟机之间复制粘贴
  • 帮助设置共享文件夹
  • 任意修改 VM 的窗口大小
wget http://download.virtualbox.org/virtualbox/5.2.18/VBoxGuestAdditions_5.2.18.iso
sudo mkdir /media/VBoxGuestAdditions

sudo mount -o loop,ro VBoxGuestAdditions_5.2.18.iso /media/VBoxGuestAdditions/
sudo sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run

rm VBoxGuestAdditions_5.2.18.iso
sudo umount /media/VBoxGuestAdditions
sudo rmdir /media/VBoxGuestAdditions

配置基本到此结束,可以关闭服务器:sudo shutdown -r now

导出 VM 成 Vagrant Box

以下的 RedHat7 是 virtualbox 里你起的 vm 的名字,该命令会最终导出 rhel.box:

vagrant rhel --base RedHat7

这样一个基本的 vagrant box 就创建完成了,把这个 box 分享给其他的团队成员,就不需要每个人都去配置开发环境了,他们都可以添加这个新的 box 到 vagrant:

vagrant box add --name rhel7 rhel.box

额外

当然,其实开发环境配置还没有结束,以上只是创建了 vagrant box,接着还需要配置 Vagrantfile 和 bash script 去安装常用的开发软件。

在 homestead 问世之前,我们也用 vagrant,基本都是自己配置的,java 的项目也用,不过有了 homestead 之后,大部分项目都用 homestead 做开发了(有时也用 docker)。

本作品采用《CC 协议》,转载必须注明作者和本文链接
jltxwesley
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!