目的
毎月行ってる勉強会にて、学生さんが勉強のために下記構成を構築しようと頑張っていたので、
virtualboxの環境を作り直したかったのもあり、便乗してPostgreSQLで実施してみた。
目標
ローカル間でのみ通信できる、Railsアプリを動作させる用環境を作成してみる。
構成
CentOS7+rbenv+passenger+postgresql
手順
インストール
$ vagrant --version
-bash: vagrant: command not found
$ VBoxManage --version
-bash: VirtualBox: command not found
virtualboxとvagrantが入ってなければインストール
$ brew cask install virtualbox
$ brew cask install vagrant
下記サイトでOSを選択し、boxにaddする
Vagrantbox.es
CentOS7.0を設定
$ vagrant box add centos70 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
$ mkdir ~/Documents/centos70
$ cd ~/Documents/centos70
$ vagrant init centos70
centos70に出力された設定ファイルを編集
# config.vm.network "private_network", ip: "192.168.33.10"
↓
config.vm.network "private_network", ip: "192.168.33.10"
起動
$ vagrant up
接続
$ vagrant ssh
環境作成
Git(rbenvインストール時に必要なため)
$ sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
新しめのを取得
$ wget https://www.kernel.org/pub/software/scm/git/git-2.7.4.tar.gz
$ tar zxvf git-2.7.4.tar.gz
$ cd git-2.7.4
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
$ git --version
git version 2.7.4
rbenv
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ rbenv --version
$ mkdir -p ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ cd ~/.rbenv/plugins/ruby-build
$ sudo ./install.sh
$ rbenv install --list
$ rbenv install 2.3.0
※めっちゃ終わらなかったので時間を確認・修正してから再度実行したら20分くらいで終わった
date
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
passenger
$ gem install passenger
apache2-moduleインストール時に怒られるので
$ sudo chmod o+x /home/vagrant
$ sudo yum -y install httpd httpd-devel
$ sudo yum -y install ruby-devel
$ passenger-install-apache2-module
Press Enter to continue, or Ctrl-C to abort.
Use <space> to select.
Press Enter to continue anyway.
Press ENTER when you are done editing.
Press ENTER to continue.
必要値設定
$ passenger-install-apache2-module --snippet
LoadModule passenger_module /home/vagrant/.gem/ruby/gems/passenger-5.0.26/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/vagrant/.gem/ruby/gems/passenger-5.0.26
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
$ sudo vi /etc/httpd/conf.d/passenger.conf
<IfModule mod_passenger.c>
PassengerRoot /home/vagrant/.gem/ruby/gems/passenger-5.0.26
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
$ sudo service httpd restart
ローカルでしか使わないのでファイアウォール止める(publicで使用する場合は別途設定推奨)
$ sudo systemctl stop firewalld
面倒なので設定したままにする
$ sudo chkconfig httpd on
$ sudo systemctl disable firewalld
MacからWebブラウザで下記IPに接続
192.168.33.10
postgresql
新しめのを取得
$ wget http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm
$ sudo rpm -ivh pgdg-centos95-9.5-2.noarch.rpm
$ sudo yum -y install postgresql95-server postgresql95-devel postgresql95-contrib
$ sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb
$ sudo systemctl start postgresql-9.5
$ sudo systemctl enable postgresql-9.5
$ sudo -u postgres psql
遊んだ後は
停止
$ vagrant suspend
感想
今までVirtualBoxやVMwareでの仮想環境は、チマチマと手動で作っていたような気もするけど、思ったより簡単に環境を構築できて便利な世の中になったなと実感。
補足
- Vagrantで作成したイメージのrootのデフォルトPassはvagrantの様子