久々のPostgreSQL
ここ10年くらいはMySQLばっかりでした。
Vagrantで共有フォルダをドキュメントルートに割り当てて、ホスト側でエディタで編集する
楽チンな環境を作ってみますのでそのまとめとして残してみます。
Index
状況
とある案件で、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 <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’;