[Vagrant] LAPP環境構築をVagrantでした際のメモ(pgsql)

久々のPostgreSQL
ここ10年くらいはMySQLばっかりでした。

Vagrantで共有フォルダをドキュメントルートに割り当てて、ホスト側でエディタで編集する
楽チンな環境を作ってみますのでそのまとめとして残してみます。

状況

とある案件で、PostgreSqlで動いているWEBシステムのローカル環境を作ることになった。
かなりレガシーなシステムで10年以上使われている規模の大きなものです。

動いているサービスのローカル環境の構築なのでphpとかdbはちょっと古めです。
PHP 5.3.x
postgresql-8.4.x
いろいろeuc-jp

Vagrantの準備

こちらは済ませてある前提です。
VirtualBoxインストール
Vagrantインストール

vagrant init

Vagrantのディレクトリにおいて、

$ mkdir centos6
$ vagrant box add centos/6
$ vagrant init centos/6

Vagrantfileファイル編集

$ vi Vagrantfile

// 以下のコメントを外す
config.vm.network “forwarded_port”, guest: 80, host: 8099
config.vm.network “private_network”, ip: “192.168.33.10”
config.vm.synced_folder “./data”, “/vagrant”

Vagrantでの共有フォルダ設定

共有フォルダ用 vagrant plugin
※ guest additionsのホストとゲストのバージョン差異を合わせてくれます

$ cd centos6
$ vagrant plugin install vagrant-vbguest

共有フォルダ作成

$ mkdir data

Guest Additions更新

$ vagrant vbguest
$ vi Vagrantfile

ドキュメントルートにシンボリックリンクを貼る
$ sudo rm -r /var/www/html
$ mkdir /vagrant/html
$ sudo ln -s /vagrant/html /var/www/html

よく使うVagrantコマンド

# 起動
$ vagrant up

# ちな再起動
$ vagrant reload

# ちなステータス確認
$ vagrant status

# ちなssh接続接続
$ vagrant ssh

LAPP環境の構築

$ vagrant ssh

SELinuxを無効に

SELinuxを無効にする

$ sudo vi /etc/selinux/config

SELINUX=disabled

SELinuxの変更を反映
$ vagrant reload

Apacheインストール

$ sudo yum install httpd httpd-devel
$ httpd -v
$ sudo chkconfig httpd on

apache起動

$ sudo /etc/init.d/httpd start

ブラウザで確認
http://192.168.33.10

http.confの編集

$ sudo vi /etc/httpd/conf/httpd.conf

AllowOverride All

apache再起動

$ sudo /etc/init.d/httpd restart

PHPインストール

$ sudo yum install php
$ sudo yum install php-devel php-mbstring php-pdo php-common php-mcrypt php-pgsql

PostgreSQLインストール

$ wget http://yum.postgresql.org/8.4/redhat/rhel-6-x86_64/pgdg-centos-8.4-3.noarch.rpm
$ sudo rpm -ivh pgdg-centos-8.4-3.noarch.rpm
$ sudo yum install -y postgresql84-server
$ sudo chkconfig postgresql-8.4 on
$ sudo /etc/init.d/postgresql-8.4 initdb
$ vi /vagrant/html/test.php
<!--?php &lt;br ?--> var_dump( phpinfo() );

pgsql起動

$ sudo /etc/init.d/postgresql-8.4 start

pgsql初期ユーザーのパスワード設定:

$ id postgres
$ sudo passwd postgres
123456

$ su - postgres
$ psql
postgres=# alter role postgres with password '123456';
ALTER ROLE
postgres=# \q

外部から接続できるようにする(hostマシンから):

$ sudo vi /var/lib/pgsql/8.4/data/pg_hba.conf

# IPv4 local connections:
#host all all 127.0.0.1/32 ident
↓
host all all 0.0.0.0/0 trust

$ sudo vi /var/lib/pgsql/8.4/data/postgresql.conf
#listen_addresses = ‘localhost'
↓
listen_addresses = '*'
port = 5432

ポスグレ再起動

$ sudo /etc/init.d/postgresql-8.4 restart

phpPgAdmin

$ vi phpPgAdmin/config.inc.php

$conf['servers'][0]['host'] = '';
  ↓
$conf['servers'][0]['host'] = '192.168.33.10';

$conf['extra_login_security'] = true;
  ↓
$conf['extra_login_security'] = false;

無事に完了しました。
SELinuxのところでちょっとはまりましたが(久々なので存在を忘れてた)小一時間ほどでうまくいきました!

vagrant upするときにhttpdが自動起動しないときは?

VagrantFileの下のendの手前で下記のようにコマンドを実行させると
うまく行きました!

# VagrantFile
config.vm.provision :shell, run: "always", :inline => <<-EOT
    sudo service httpd restart
EOT

おまけ

PostgreSqlでEUC-JPのDBを作成する

CREATE DATABASE “test_db_name” WITH TEMPLATE=”template0″ ENCODING=’EUC_JP’ LC_COLLATE=’C’ LC_CTYPE=’C’;

シェアする

  • このエントリーをはてなブックマークに追加

フォローする