久々のPostgreSQL
ここ10年くらいはMySQLばっかりでした。
Vagrantで共有フォルダをドキュメントルートに割り当てて、ホスト側でエディタで編集する
楽チンな環境を作ってみますのでそのまとめとして残してみます。
Index [hide]
状況
とある案件で、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ファイル編集
1 | $ 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のホストとゲストのバージョン差異を合わせてくれます
1 2 | $ cd centos6 $ vagrant plugin install vagrant-vbguest |
共有フォルダ作成
1 | $ mkdir data |
Guest Additions更新
1 | $ vagrant vbguest |
1 | $ vi Vagrantfile |
ドキュメントルートにシンボリックリンクを貼る
$ 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環境の構築
1 | $ vagrant ssh |
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 <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’;