攻略 - 自建 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
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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