[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のディレクトリにおいて、

1
2
3
$ mkdir centos6
$ vagrant box add centos/6
$ vagrant init centos/6

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のホストとゲストのバージョン差異を合わせてくれます

1
2
$ cd centos6
$ vagrant plugin install vagrant-vbguest

共有フォルダ作成

Guest Additions更新

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

よく使うVagrantコマンド

1
2
3
4
5
6
7
8
9
10
11
# 起動
$ vagrant up
 
# ちな再起動
$ vagrant reload
 
# ちなステータス確認
$ vagrant status
 
# ちなssh接続接続
$ vagrant ssh

LAPP環境の構築

SELinuxを無効に

SELinuxを無効にする

1
$ sudo vi /etc/selinux/config

SELINUX=disabled

SELinuxの変更を反映
$ vagrant reload

Apacheインストール

1
2
3
$ sudo yum install httpd httpd-devel
$ httpd -v
$ sudo chkconfig httpd on

apache起動

1
$ sudo /etc/init.d/httpd start

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

http.confの編集

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

AllowOverride All

apache再起動

1
$ sudo /etc/init.d/httpd restart

PHPインストール

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

PostgreSQLインストール

1
2
3
4
5
$ 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
1
2
$ vi /vagrant/html/test.php
<!--?php &lt;br ?--> var_dump( phpinfo() );

pgsql起動

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

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

1
2
3
4
5
6
7
8
9
$ id postgres
$ sudo passwd postgres
123456
 
$ su - postgres
$ psql
postgres=# alter role postgres with password '123456';
ALTER ROLE
postgres=# \q

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

1
2
3
4
5
6
7
8
9
10
11
12
$ 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

ポスグレ再起動

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

phpPgAdmin

1
2
3
4
5
6
7
8
9
$ 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の手前で下記のようにコマンドを実行させると
うまく行きました!

1
2
3
4
# 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’;

シェアする

フォローする