在Macbook Pro 2016上安装Vagrant,并构建Ruby on Rails5环境,然后与GitHub进行连接

首先

我将用备忘录的方式记录我在实际自我产品开发中使用的开发环境的构建方法。目标是使用全部虚拟环境进行开发,以确保本地环境的清洁。

环境

以下是我们能够建立的环境。

ホストOS: macOS Sierra
└ VirtualBox: 5.1.12
  └ Vagrant: 1.9.1
    └ CentOS: 7.2
      └ rbenv: 1.1.0-2-g4f8925a
        └ Ruby: 2.4.0
      └ Gem: 2.6.8
          └ Rails: 5.0.2
      └ PostgreSQL: 9.5
      └ Git: 1.8.3.1 (To connect with GitHub)

在我的Mac上安装VirtualBox,并在其上使用Vagrant运行CentOS。然后在其中构建Ruby on Rails环境。

構建Vagrant环境

首先,从搭建基础开始。
我们将构建Vagrant环境。

在中国需要安装VirtualBox。

虚拟环境软件使用”VirtualBox”来创建。版本是”5.1.12″。

VirtualBox是属于Oracle公司的一个开源虚拟化软件。

安装Vagrant

Vagrant可以通过图形用户界面轻松安装,只需点点鼠标即可。

您可以从以下链接中进行下载。

流浪者

要确认是否已成功安装,请使用以下命令进行确认。

$ vagrant -v
Vagrant 1.9.1

当版本返回后,说明安装已成功。

使用 Box 安装 CentOS。

Box是一种用于存储在Vagrant上运行的虚拟机的磁盘映像和元数据的文件,以“.box”格式存储的。

我会从以下位置借用该文件。

Vagrant 的基础虚拟机盒子列表 — Vagrantbox.es

为了在Vagrant上安装操作系统,我们需要添加一个Box到Vagrant中。
可以使用vagrant box add命令来添加Box,在add之后指定Box的名称。您可以随意命名Box的名称。

$ vagrant box add centos72 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box

追加的Box是最小配置的Minimal CentOS,版本为”7.2″。

初始化 Vagrant

使用 “vagrant init” 命令,指定 Box 名称,将追加的 Box 进行初始化,并将其映像加载到 VirtualBox 上。

$ vagrant init centos72

成功初始化后,会生成一个名为 Vagrantfile 的 Ruby 文件。

在下一节的“Vagrantfile的配置”中,我们将进行必要的Vagrant配置来进行开发。

Vagrantfile的配置设置

為了使開發變得更容易,我們修改了Vagrantfile的設置,以容許從主機OS進行通訊。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
:
(中略)
:
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
config.vm.network :forwarded_port, guest: 3000, host: 3000 // 追加
:
(中略)
:

启动Vagrant

为了搭建Ruby on Rails5环境的次项,我们将启动Vagrant,并登录到通过Box搭建的CentOS中。

$ vagrant up
$ vagrant ssh

流浪者的环境设置完成!

在Ruby on Rails 5环境中进行设置。

我们将构建Ruby on Rails环境。选择最新版本(撰写时的最新版本为5.0.2)。

yum的更新

$ yum check-update
$ sudo yum update

安装必要的软件包。

$ sudo yum -y install curl curl-devel gcc gcc-c++ git openssl-devel httpd-devel readline-devel tk-devel make zlib-devel libffi-devel

安装rbenv

可以从GitHub安装rbenv。
由于个人偏爱bash,所以将路径添加到.bash_profile中。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ sudo ~/.rbenv/plugins/ruby-build/install.sh
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ source ~/.bash_profile
$ rbenv --version
rbenv 1.1.0-2-g4f8925a

安装Ruby

选择版本为“2.4.0”。

$ rbenv install -l
$ rbenv install -v 2.4.0
$ rbenv versions
$ rbenv global 2.4.0
$ ruby -v

安装Rails

不指定版本。这种情况下将安装Gem指定的默认版本。如果想指定Rails版本,请在选项中添加(参考)。

$ gem update --system
$ gem install rails --no-ri --no-rdoc
$ rbenv rehash
$ rails -v
$ Rails 5.0.2

安装PostgreSQL数据库。

我們將進行 PostgreSQL 的安裝。選擇版本 “9.5”。

配置yum存储库

$ sudo vi /etc/yum.repos.d/CentOS-Base.repo
:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*  // 追記

[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*  // 追記
:

添加适用于PostgreSQL9.5的存储库。

$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm

PostgreSQL9.5安装和初始化-启动至完成

$ sudo yum install -y postgresql95 postgresql95-server postgresql95-libs postgresql95-contrib postgresql95-devel
$ sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb
$ sudo systemctl start postgresql-9.5

设定 PostgreSQL 的初始启动

$ sudo systemctl enable postgresql-9.5

允许外部服务器访问

$ sudo vi /var/lib/pgsql/9.5/data/postgresql.conf

:
listen_addresses = '*'  // localhost から変更
:

客户认证设置

$ sudo vi /var/lib/pgsql/9.5/data/pg_hba.conf
:
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust  // ident から変更
# IPv6 local connections:
host    all             all             ::1/128                 trust  // ident から変更
:

将PostgreSQL9.5的路径添加到环境变量中。

$ export PATH=/usr/pgsql-9.5/bin:$PATH
$ export PGDATA=/var/lib/pgsql/9.5/data
$ source ~/.bash_profile

重新启动

$ sudo systemctl restart postgresql-9.5

新增vagrant用户

$ sudo su - postgres
-bash-4.1$ createuser --superuser vagrant
-bash-4.1$ exit
logout

与GitHub的协作

为了在GitHub上进行源代码的操作,需要将Vagrant和GitHub进行连接。

创建SSH密钥

为了使Vagrant和GitHub互相协作,需要创建身份验证所需的密钥。

$ ssh-keygen -t rsa -C "YOUR_EMAIL" // Githubで使用しているEmail
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/vagrant/.ssh/id_rsa.
Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub.
The key fingerprint is:
************************* YOUR_EMAIL
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|         .   .   |
|        +     o  |
|       . o   = . |
|        S . B +  |
|           B oE. |
|          o o ...|
|           oo. ..|
|            .=+o*|
+-----------------+

保存SSH密钥

$ eval "$(ssh-agent -s)"
Agent pid 27250
$ ssh-add ~/.ssh/id_rsa
Identity added: /home/vagrant/.ssh/id_rsa (/home/vagrant/.ssh/id_rsa)

SSH密钥的注册

$ cat ~/.ssh/id_rsa.pub >> /home/vagrant/.ssh/authorized_keys
$ chmod 600 /home/vagrant/.ssh/authorized_keys
$ chmod 600 ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub
※ 公開鍵が表示される // 次項「生成された公開鍵をGitHubに登録」で使用する

将生成的公钥注册到GitHub上。

必须在“SSH密钥注册”中使用的cat命令中显示的公钥设置在GitHub上。设置需要在GitHub的SSH密钥设置页面上进行。

创建一个用于登录GitHub的脚本。

$ vi ~/.ssh/config
Host github
    HostName        github.com
    IdentityFile    ~/.ssh/id_rsa
    User            git

$ chmod 600 ~/.ssh/config

确认是否可以与GitHub进行通信

确认一下刚刚创建的脚本是否能与GitHub通信。

$ ssh github
Warning: Permanently added the RSA host key for IP address '192.30.253.112' to the list of known hosts.
PTY allocation request failed on channel 0
Hi seiyamaeda! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
hub.com closed.

结束

祝您的个人发展顺利!!!

撰写稿件的后记

CentOS 7相比之前的版本6有很多变化,需要花费时间来处理。系统启动处理和服务管理,以及网络方面的变化都很明显。

2015年发布后,已经过了相当长的时间。在操作系统方面,我完全无法跟上。

如果您对CentOS 7感兴趣的话,由于它添加了符合行业需求的新功能和功能修正,您可以玩弄它,感觉会很有趣。

CentOS-7 (1503) 发布说明的主要更改点。

对于操作系统版本的讨论,本地开发可能并不太需要过于在意。只要能运行就可以。

文章可供参考

    • Vagrantを使って仮想環境を構築する

 

    • さくらVPS (CentOS6.5) にRuby on Rails環境を構築する

 

    • 【Rails強化週間】Vagrantに構築した環境からGitHubへ接続する

 

    • 【Rails強化週間】開発環境の構築

 

    • CentOS7にPostgreSQLを導入&初期設定をおこなう – vdeep

 

    • CentOS 6.7 に PostgreSQL 9.5 を yumでインストールする手順 – Hamaoka’s blog

 

    • RPMを用いたPostgreSQL 9.5 のインストール手順 – Qiita

 

    • CentOS7 にPostgreSQL9.5をインストールする – INU NOTE

 

    • CentOS 7 に PostGIS をインストールする – Qiita

 

    • CentOSにPostgreSQL9.5をインストールおよびテスト – Qiita

 

    • CentOS に PostgreSQL 9 をインストール&利用する – まだプログラマーですが何か?

 

    Vagrant上のCentOS 6.6にPostgreSQL 9.3をインストールする – Qiita
广告
将在 10 秒后关闭
bannerAds