vagrant – phpstormでxdebug使う(2)

参考:phpstorm vagrantの仮想マシンをXdebugでデバッグする

上記で、xdebug使えるようになったのですが、Vagrantfileで下記のように設定する場合は、remote_hostが変わるし、あとどうも動かないと思ってたら、マカフィーにとめられていた。

config.vm.network "private_network", ip: "192.168.33.10"

だから下記のようにしつつ、マカフィーのファイアウォールをゆるめる必要がありました。
$ sudo vim /etc/php.d/xdebug.ini

xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = 192.168.33.1
xdebug.remote_port = 9000

あと、autostartを1にすると、ブラウザのお気に入りをクリックして、デバッグ開始したり停止したりしなくてよくなるから便利だった。

vagrant + chefでcakePHP3の環境をつくる

Vagrantのcentos6.5.3に、php5.6、apache2.2、mysql5.6、phpmyadmin、vim、gitをchefで自動的に入れます。

macにvagrantはインストール済みであるものとします。
chefのknife-soloと、Berkshelfもインストール済みの状態とします。

作成した、Vagrantfile、chef-repoは、下記のgithubにpushしました。
https://github.com/endoyuta/vagrant_contos65_cakephp3/tree/php5.6

php5.6ブランチが、php5.6やphpmyadminがインストールできて、cakephp3をインストールした際に出たエラーなども若干対応したものになります。

まず、~/vagrant/test内に、新たにvagrantを立ち上げます。

$ cd ~/vagrant
$ mkdir test
$ cd test
$ vagrant init

これで~/vagrant/test内に、Vagrantfileが作成されます。

BOXは、下記のCentOSの6.5.3を使います。
https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box

Vagrantfileを編集します。

$ vim Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos6.5.3"
  config.vm.box_url = "https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "./", "/vagrant", mount_options: ['dmode=777', 'fmode=666']
end

vagrantを立ち上げます。

$ vagrant up

次にchefのセットをしていきます。
とりあえず、sshのconfigを設定しておきます。

$ vim ~/.ssh/config

Host 192.168.33.*
  IdentityFile ~/.vagrant.d/insecure_private_key
  User vagrant

chefのリポジトリをつくります。

$ knife solo init chef-repo

chef-soloをvagrantにインストールします。

$ cd chef-repo
$ knife solo prepare 192.168.33.10

次に、Berkshelfを使って、cookbookを作ります。

$ vim Berksfile

site :opscode cookbook 'mysql', '~> 5.3.6' cookbook 'vim' cookbook 'git' cookbook 'openssl'

cookbookを作成します。

$ berks vendor site-cookbooks

phpと、httpd、phpmyadminについては、berkshelfだと中々上手くいきませんでした。phpは、5.3までならすんなり入りますし、httpdも勝手にインストールされます。httpdとphpmyadminはエラーが続いたのでberkshelfはやめました。代わりに、vargrant+chefでつくるPHP5.5+MySQL5.6+CakePHP3環境を参考に、baseとphp55とphp56というcookbookをつくりました。baseとphp55は参考サイトをほぼそのまま使わせてもらってます。

次に、jsonファイルを編集します。

$ vim nodes/192.168.33.10.json

{
  "run_list": [
    "recipe[base]",
    "recipe[php56]",
    "recipe[mysql::server]",
    "recipe[mysql::client]",
    "recipe[vim]",
    "recipe[git]",
    "recipe[openssl]"
  ],
  "automatic": {
    "ipaddress": "192.168.33.10"
  },
  "mysql": {
    "version":"5.6",
    "port":"3306",
    "server_root_password":"vagrant",
    "remove_anonymous_users":true
  },
  "httpd": {
    "port": "80",
    "docroot": "/var/www/app/webroot"
  },
  "php": {
    "timezone": "Asia/Tokyo"
  }
}

chefを実行します。

$ knife solo cook 192.168.33.10

■参考
vargrant+chefでつくるPHP5.5+MySQL5.6+CakePHP3環境
Chef-Solo + Berkshelf で Rails 4 の開発環境を構築
chef-solo(knife)でMySQLサーバ5.6をインストールする 2014年度版
cakePHP3にチャレンジ!
https://supermarket.chef.io/
CentOSにPHP5.6をインストール

Vagrant・chefの設定

$ vagrant -v

Vagrant 1.4.3

$ vagrant box list

centos6.5 (virtualbox)

$ vagrant init centos6.5

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Vagrantfileの中身

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos6.5"
end
$ vagrant up

色々表示されて、最後にエラーが表示される。

Failed to mount folders in Linux guest. This is usually beacuse
the “vboxsf” file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` /vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` /vagrant /vagrant

$ vagrant status

Current machine states:

default running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

Saharaプラグインを使う

スナップショット機能が使えるやつ。

$ vagrant plugin install sahara
Installing the ‘sahara’ plugin. This can take a few minutes…
Installed the plugin ‘sahara (0.0.17)’!
$ vagrant plugin list

sahara (0.0.17)
vagrant-aws (0.4.1)
vagrant-berkshelf (1.3.7)
vagrant-omnibus (1.3.0)
vagrant-vbguest (0.10.0)

Saharaをインストールすると、sanboxコマンドがつかえる。
vagrant sandbox onで、sandboxモードが有効になる。vagrant sandbox statusで状態確認できる。

$ vagrant sandbox status

[default] Sandbox mode is off

$ vagrant sandbox on

[default] Starting sandbox mode…
0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100%

vagrant sandbox rollbackでサーバの状態を元に戻せる

vagrant ssh
sudo -i
yum install php
php -v
バージョン表示される
exit
exit

vagrant sandbox rollback
戻る

vagrant ssh
php -v
コマンドないといわれる
$ vagrant ssh-config --host hoge >> ~/.ssh/config

これで、ssh hogeでアクセスできるようになる。

chefでPHP、MySQL、Apacheをインストール・設定する

chefをインストールする
参考:初心者にお勧めするChefの正しいインストール方法
https://downloads.chef.io/chef-dk/ここからダウンロードして、インストールする。

knife-soloをインストールする。

$ sudo chef gem install knife-solo

Successfully installed knife-solo-0.4.2

Knifeの初回設定

$ knife configure

全部エンター押すと、~/.chef/knife.rbにknifeの設定ファイルが保存される。

vagrant hogeにchefをインストールする

$ knife solo prepare hoge

chefのリポジトリをつくる

$ knife solo init chef-repo

Creating kitchen…
Creating knife.rb in kitchen…
Creating cupboards…
Setting up Berkshelf…

cookbookをつくる

$ knife cookbook create lamp -o site-cookbooks

recipeをつくる

$ vim site-cookbooks/lamp/recipes/default.rb

内容は、一旦下記を参考にする。
http://qiita.com/skinoshita/items/57ac059ff8b1008f5e1d#3-12

# stop iptables
service "iptables" do
  action [:stop, :disable]
end

# install apache
%w{httpd httpd-devel}.each do |pkg|
  package pkg do
    action :install
  end
end

# install php
%w{php php-common php-devel php-mbstring php-xml php-pear php-mysql}.each do |pkg|
  package pkg do
    action :install
  end
end

# install mysql
%w{mysql-server mysql-devel}.each do |pkg|
  package pkg do
    action :install
  end
end

# service configuration

service "httpd" do
  supports :status => true, :restart => true, :reload => true
  action [:enable, :start]
end

service "mysqld" do
  action [:enable, :start]
end

JSONファイルを編集する

$ vim ../nodes/hoge.json
{
  "run_list": [
        "lamp"
  ],
  "automatic": {
    "ipaddress": "hoge"
  }
}

Vagrantfileを編集する

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos6.5"

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "chef-repo/site-cookbooks"
    chef.add_recipe "lamp"
  end

end

$ vagrant reload
これで、chefが動作するが、reload中に下記のようなエラーが出る場合は、ここに記載の対応が必要。

Failed to mount folders in Linux guest. This is usually beacuse
the “vboxsf” file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:
mount -t vboxsf -o uid=id -u vagrant,gid=getent group vagrant | cut -d: -f3 /vagrant /vagrant
mount -t vboxsf -o uid=id -u vagrant,gid=id -g vagrant /vagrant /vagrant

vagrant reloadの結果、下記のようにchefが動いた。

[2015-04-24T06:40:25+00:00] INFO: Forking chef instance to converge…
[2015-04-24T06:40:25+00:00] INFO: *** Chef 12.0.3 ***
[2015-04-24T06:40:25+00:00] INFO: Chef-client pid: 4900
[2015-04-24T06:40:32+00:00] INFO: Setting the run_list to [“recipe[lamp]”] from CLI options
[2015-04-24T06:40:32+00:00] INFO: Run List is
]
[2015-04-24T06:40:32+00:00] INFO: Run List expands to [lamp]
[2015-04-24T06:40:32+00:00] INFO: Starting Chef Run for vagrant-centos65.vagrantup.com
[2015-04-24T06:40:32+00:00] INFO: Running start handlers
[2015-04-24T06:40:32+00:00] INFO: Start handlers complete.
[2015-04-24T06:40:32+00:00] INFO: service[iptables] disabled
[2015-04-24T06:40:37+00:00] INFO: yum_package[httpd] installing httpd-2.2.15-39.el6.centos from base repository
[2015-04-24T06:40:47+00:00] INFO: yum_package[httpd-devel] installing httpd-devel-2.2.15-39.el6.centos from base repository
[2015-04-24T06:41:11+00:00] INFO: yum_package[php] installing php-5.3.3-40.el6_6 from updates repository
[2015-04-24T06:41:23+00:00] INFO: yum_package[php-devel] installing php-devel-5.3.3-40.el6_6 from updates repository
[2015-04-24T06:41:30+00:00] INFO: yum_package[php-mbstring] installing php-mbstring-5.3.3-40.el6_6 from updates repository
[2015-04-24T06:41:41+00:00] INFO: yum_package[php-xml] installing php-xml-5.3.3-40.el6_6 from updates repository
[2015-04-24T06:41:54+00:00] INFO: yum_package[php-pear] installing php-pear-1.9.4-4.el6 from base repository
[2015-04-24T06:42:01+00:00] INFO: yum_package[php-mysql] installing php-mysql-5.3.3-40.el6_6 from updates repository
[2015-04-24T06:42:09+00:00] INFO: yum_package[mysql-server] installing mysql-server-5.1.73-3.el6_5 from base repository
[2015-04-24T06:42:29+00:00] INFO: yum_package[mysql-devel] installing mysql-devel-5.1.73-3.el6_5 from base repository
[2015-04-24T06:42:52+00:00] INFO: service[httpd] enabled
[2015-04-24T06:42:57+00:00] INFO: service[httpd] started
[2015-04-24T06:42:57+00:00] INFO: service[mysqld] enabled
[2015-04-24T06:42:58+00:00] INFO: service[mysqld] started
[2015-04-24T06:42:58+00:00] INFO: Chef Run complete in 146.414070168 seconds
[2015-04-24T06:42:58+00:00] INFO: Skipping removal of unused files from the cache
[2015-04-24T06:42:58+00:00] INFO: Running report handlers
[2015-04-24T06:42:58+00:00] INFO: Report handlers complete

Vagrant mountエラー2

以前、mountエラーがあったときに、Vagrant mountエラーここに書いた方法で解決できたが、これをやっても解決できない。

vagrant reloadしても下記エラーがでる。

Failed to mount folders in Linux guest. This is usually beacuse
the “vboxsf” file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` /vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` /vagrant /vagrant

あと、もう一つ解決策がのってた。
vagrantでmountエラーの解決方法

vboxをリビルドする必要があるということで、vagrant sshして、下記を実行する。

sudo /etc/init.d/vboxadd setup

Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module                   [  OK  ]
Building the shared folder support module                  [  OK  ]
Building the OpenGL support module                         [失敗]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions              [  OK  ]

exit

でも、これは以前の解決策でも、vagrant reload中に勝手に実行してくれる内容と一緒っぽい。上記は、Building the main Guest Additions moduleが成功しているが、現在自分の環境だと失敗する。

下記で、ログを見ると下記のようになっている。

vi /var/log/vboxadd-install.log

Creating user for the Guest Additions.
Creating udev rule for the Guest Additions kernel module.
/tmp/vbox.0/Makefile.include.header:97: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR= and run Make again. Stop.

もう一つ、解決策につながりそうなサイトがあった。
ヾ(o゚ω゚o)ノ゙Vagrantの共有ディレクトリ設定でものすっごい躓いた!

vagrant-vbguestというプラグインがあると、vbguestコマンドが使えるようになる。

$ vagrant vbguest --status
GuestAdditions versions on your host (4.3.6) and guest (4.3.4) do not match.
$ vagrant vbguest --auto-reboot

これでも、Building the main Guest Additions module[FAILED]になる。

参考:CentOSへGuest Additionsをインストールしたときのエラー対処方法

カーネルと必要なパッケージをインストールします。

$ yum -y update kernel
$ yum -y install kernel-devel kernel-headers dkms gcc gcc-c++

インストール後にOSを再起動します。

これで、vagrant reloadしたらmountエラーがなくなった。

vagrantでnginx使うためのuser変更

vagrantで、vagrantユーザをnginxに変更しようとしたらどうもできなかったので、nginxのユーザをvagrantにする。

vim /etc/nginx/nginx.conf
vim /etc/php-fpm.d/www.conf

上記2ファイルのuserをvagrantにします。
そして、再起動します。

service php-fpm restart
service nginx restart

Vagrant – phpstormでxdebugが使えなくて困った

Vagrantfileの下記で、hostを9092にしていたんですが、xdebugが動きませんでした。
9080にしたら動きました。

config.vm.network :forwarded_port, guest: 80, host: 9080

ちなみにphpStormのpreferencesでphp > serversとかは特に設定しなくてもいいらしい。勝手にphpStormで検知してくれるようだ。

vagrant セットアップ (centos6.5 postgreSQL)

mkdir hoge
cd hoge
vagrant init
vim Vagrantfile
(config.vm.box = “centos6.5”)
vagrant up
vagrant ssh
sudo -i
yum install vim
vim /etc/yum.conf
(#exclude=kernel*)
exit
exit
vagrant reload
vagrant ssh
sudo -i
yum install php
yum install postgresql
exit
exit
vim Vagrantfile
(config.vm.network :forwarded_port, guest: 80, host: 9090)
vagrant reload
vagrant ssh
sudo -i
service httpd start
yum -y install postgresql-server php-pgsql
rm -rf /var/www/html
mkdir /vagrant/html
ln -fs /vagrant/html /var/www/html
passwd postgres
su – postgres
initdb –encoding=UTF8 –no-locale
pg_ctl -w start
exit

yum install php-mbstring php-devel
service httpd restart
vim /etc/httpd/conf/httpd.conf (user vagrant group vagrant)
service httpd restart

cd /var/lib/php
chown -R root:vagrant session/ (パーミッションも確認)

sudo yum –enablerepo=epel install php-pecl-xdebug
vim /etc/php.d/xdebug.ini
(xdebug.default_enable = 1
xdebug.idekey = “sns”
xdebug.remote_enable = 1
xdebug.remote_port=9000
xdebug.remote_host=10.0.2.2)

service httpd restart

vagrant centos6.5 ブラウザでPHPファイルの表示だけ異常に遅い

httpd.confでHostnameLookupsがONになると遅くなるらしい。
http://www.itmedia.co.jp/help/tips/linux/l0319.html
でもOffになっている。

htmlファイルだと一瞬。phpだと<?phpって書いてあるだけの空ファイルですら遅い。

127.0.0.1:8080ってやると結構速い。localhost:8080だと超遅い。

Windowsでlocalhostへの接続が遅い(解決方法)
どうもここに書いてある内容に近いような。

まあ127.0.0.1って書くか。とりあえず。

phpstorm vagrantの仮想マシンをXdebugでデバッグする

前回できたと思ったのですが、残念ながら寝て起きたら動かなくなってました。
再度調べてリモートデバッグ機能を復活させたいと思います。

vagrant仮想マシンの環境は下記になります。
・CentOS6.5
・Apache/2.2.15 (Unix)
・PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)

順番を整理します。
1.vagrantにlocalhost:8080で接続できるようにしておきます。
Vagrantfileに、下記を追記します。実際はコメントアウトされているのでそれを解除します。自分のVagrantfileでは22行目。

config.vm.network :forwarded_port, guest: 80, host: 8080

2.Xdebugをインストールします。

$ sudo yum --enablerepo=epel install php-pecl-xdebug

3.php.iniの設定をします。
まずxdebug.soの位置を確認しておきます。

$ sudo -i
$ find / -name xdebug.so
/usr/lib64/php/modules/xdebug.so

次に、vimなどでphp.iniを開いて編集します。

$ vim /etc/php.ini

php.iniに下記を追記します。

[xdebug]
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.default_enable = 1
xdebug.idekey = "sns"
xdebug.remote_enable = 1
xdebug.remote_port=9000
xdebug.remote_host=10.0.2.2

xdebug.idekeyは、xdebugがデバッグのときに使用する、セッションの識別子になりますので、任意の値を設定します。今回SNSサイトを作成する必要があるので、snsとしております。

また、remote_hostを設定しないと、デバッグが動きません。$_SERVER[‘REMOTE_ADDR’]をみると私の場合、10.0.2.2になっております。どうもVirtualboxの標準値のようです。

また、remote_portを9000以外にする場合は、phpstormの設定で、Prefereces > PHP > Debugで、Xdebugのdebug portを変更する必要があります。

あと、xdebugをインストールしたら、私の場合、/etc/php.d/xdebug.iniというものが作成されておりまして、そこでもzend_extensionの設定がされていました。設定が重複すると、エラーがでますので、xdebug.iniの記載を削除するか、上記のxdebugの設定をxdebug.iniに記載するなど対処する必要があります。

追記したらhttpdを再起動しておきます。

service httpd restart

4.phpstormのpreferenses > PHP > serversを下記のように設定して、サーバ情報を追加します。
スクリーンショット 2014-03-03 5.09.26

5.Run > Edit Configurationsをクリックして、Defaults > PHP Remote Debugに進み、そこでServerを選択し、id keyを入力します。これは先程php.iniに設定したxdebug.idekeyと同じです。
スクリーンショット 2014-03-03 5.11.14

6.下記サイトで、idekeyを入れてgenerateしたjavascriptでブックマークレットをつくる。generateすると下にリンクがでてくるので、そのリンク先に指定されているjavascriptをブックマークに保存します。Start debuggerがデバッグ開始する際のブックマークレットで、Stop debuggerがデバッグを停止する際のブックマークレットです。
http://www.jetbrains.com/phpstorm/marklets/
スクリーンショット 2014-03-03 7.46.16

7.phpstormの赤い電話みたいなマークをクリックして青くします。
スクリーンショット 2014-03-03 7.49.45

Vagrantのネットワークが超遅い(CentOS6.5)

参考:vagrantでCentOSのVMを立ちあげて、ネットワークが遅い時に試すこと

Vagrantfileに下記を追記するとなおるらしい

config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"]
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off"]
end

Vagrantの設定 – chefが動かない

今CentOS6.5のVagrantのboxをaddしまして、vagrant upを行いました。mountエラーが出ましたが、Vagrant mountエラーここの内容で解決しました。

しかしchefが機能しません。前回何をやったのかもう忘れました。chefも全然まだ詳しくないのでどっかのブログを真似ただけだったのですがどのブログか忘れました。あ、そういえば仮想マシンに対して何かchef関連のコマンドを実行してた気がする。
というかchef-repoっていうディレクトリを作成したんだった。これをコピーしてみよう。どうやってつくったか忘れた。

$ vagrant provision
[default] Running provisioner: chef_solo...
The chef binary (either `chef-solo` or `chef-client`) was not found on
the VM and is required for chef provisioning. Please verify that chef
is installed and that the binary is available on the PATH.

うむまだエラーが出る。あのブログを探そう。なんていう他人本意なんだ。まあいい今は。
発見!

Vagrantの使い方
(2) Chefを使ってApache、PHP、MySQLをインストールするこれこれ。
これだ仮想マシン向けのコマンド。

$ knife solo prepare hoge

このhogeは、下記コマンドで設定できるんだな。

vagrant ssh-config --host hoge >> ~/.ssh/config

こうすると、ssh hogeで仮想マシンに接続できるのだ。

$ knife solo prepare hogeをやったら成功した。では改めてvagrant provisionしてみます。

$ vagrant provision
[default] Running provisioner: chef_solo...
Generating chef JSON and uploading...
Running chef-solo...
[2014-03-02T07:37:05+00:00] INFO: Forking chef instance to converge...
[2014-03-02T07:37:05+00:00] INFO: *** Chef 11.10.4 ***
[2014-03-02T07:37:05+00:00] INFO: Chef-client pid: 3193
[2014-03-02T07:37:06+00:00] INFO: Setting the run_list to ["recipe[lamp]"] from JSON
[2014-03-02T07:37:06+00:00] INFO: Run List is 
] [2014-03-02T07:37:06+00:00] INFO: Run List expands to [lamp] [2014-03-02T07:37:06+00:00] INFO: Starting Chef Run for vagrant-centos65 [2014-03-02T07:37:06+00:00] INFO: Running start handlers [2014-03-02T07:37:06+00:00] INFO: Start handlers complete. [2014-03-02T07:37:06+00:00] INFO: service[iptables] disabled [2014-03-02T07:37:09+00:00] INFO: package[httpd] installing httpd-2.2.15-29.el6.centos from base repository [2014-03-02T07:37:23+00:00] INFO: package[httpd-devel] installing httpd-devel-2.2.15-29.el6.centos from base repository [2014-03-02T07:37:38+00:00] INFO: package[php] installing php-5.3.3-27.el6_5 from updates repository [2014-03-02T07:37:51+00:00] INFO: package[php-devel] installing php-devel-5.3.3-27.el6_5 from updates repository [2014-03-02T07:38:03+00:00] INFO: package[php-mbstring] installing php-mbstring-5.3.3-27.el6_5 from updates repository [2014-03-02T07:38:14+00:00] INFO: package[php-xml] installing php-xml-5.3.3-27.el6_5 from updates repository [2014-03-02T07:38:27+00:00] INFO: package[php-pear] installing php-pear-1.9.4-4.el6 from base repository [2014-03-02T07:38:39+00:00] INFO: package[php-mysql] installing php-mysql-5.3.3-27.el6_5 from updates repository [2014-03-02T07:38:50+00:00] INFO: package[mysql-server] installing mysql-server-5.1.73-3.el6_5 from updates repository [2014-03-02T07:39:05+00:00] INFO: package[mysql-devel] installing mysql-devel-5.1.73-3.el6_5 from updates repository [2014-03-02T07:39:20+00:00] INFO: service[httpd] enabled [2014-03-02T07:39:25+00:00] INFO: service[httpd] started [2014-03-02T07:39:26+00:00] INFO: service[mysqld] enabled [2014-03-02T07:39:28+00:00] INFO: service[mysqld] started [2014-03-02T07:39:28+00:00] INFO: Chef Run complete in 141.614846457 seconds [2014-03-02T07:39:28+00:00] INFO: Running report handlers [2014-03-02T07:39:28+00:00] INFO: Report handlers complete

できた。でもmysqlのバージョン古い。

yum --enablerepo=remi,epel,rpmforge -y install mysql-server

これでアップデートしたら、5.536になったけど、今度はPHPが5.45になった。うおー。chef覚えよう!今度。
yumでremoveしてもう一度installしたらphp5.3.3に戻った。だがしかし、mysqlもremoveしてみたら、インストールができなくなった(ToT)最悪。なんか5.1と5.3がごちゃごちゃになったようだ。
yum distribution-synchronizationというのをやってみたが、エラーになる。
yum install –setopt=protected_multilib=false mysqlとやってみると、ちょっと進んだけど、下記のエラーがでる。
package mysql-libs-5.5.36-1.el6.remi.x86_64 (which is newer than mysql-libs-5.1.73-3.el6_5.i686) is already installed

rpm -e –nodeps compat-mysql51-5.1.54-1.el6.remi.x86_64
rpm -e –nodeps mysql-libs-5.5.36-1.el6.remi.x86_64
yum install mysql
これでとりあえずエラーでなくてインストールできた。
あー長かった。なんだろうなあ。

Vagrant CentOS6.5 phpMyAdminを使う

phpmyadmin使えるようにしよう。めんどくさいし。

$ yum --enablerepo=epel install -y  phpMyAdmin php-mysql php-mcrypt

apache再起動したけど、入れない。
スクリーンショット 2014-02-28 3.25.07

client denied by server configuration: /usr/share/phpMyAdmin

というエラーがでている。
phpMyAdmin.confの設定で誰でもOKにしてみる。

vim phpMyAdmin.conf
sudo /etc/rc.d/init.d/httpd restart

おお入れた。

Vagrant – phpstormでデバッグする CentOS6.5

共有ディレクトリあるし簡単に出来たりして。出来ないねやっぱ。
リモートデバッグを調べる。

PhpStormでXdebugのリモートデバッグを設定する方法

ちなみにVagrantのCentos6.5サーバです。
サーバに、Xdebugをインストールしてみる。

$ sudo yum --enablerepo=epel install php-pecl-xdebug

php-pecl-xdebug.x86_64 0:2.1.4-1.el6がインストールできた。

phpstormの設定

できない!php.iniに設定かかないといけないのか。
To use PhpStorm with Ubuntu Vagrant install Xdebug for PHP

xdebug.soの場所を探す。

$ sudo -i
$ cd /
$ find -name xdebug.so
./usr/lib64/php/modules/xdebug.so

php.iniに追加


zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.default_enable = 1
xdebug.idekey = "centos65"
xdebug.remote_enable = 1

うおーできた!

その他phpstormの設定でやったこと。
Xdebugの設定 XAMPP macこれに書いたことやった。

Vagrantでelggを動かそうとしてる

カスタマイズされたelggだし、amazon linuxで動いているやつだから中々どうして自分でつくった環境で全然動かない。

mysql設定してインポートしたし、apacheの設定もできてるけど、php.iniにタイムゾーン設定する。

$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
$ vim /etc/php.ini

date.timezone = Asia/Tokyoを追加

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

エラー減ったけど、File does not exist: /var/www/html/cacheなどのエラーでる。
あもしかしてmodrewriteとかいうのがないのかも。
.htaccessが機能してない。

httpd.conf修正した。

sudo vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
sudo /etc/rc.d/init.d/httpd restart

あらまだ機能しない。
他にもAllになってないとこがあった。修正したら機能した。
お表面的にはしっかり表示されるようになった。
おおおおおおしっかり動いてる!おっけー牧場。

VagrantでEC2にアクセスする

ベイグラントと読むらしい。Vagrantで AWS EC2インスタンス(RHEL5.5)を作成するだけが頼りです。

Vagrant のAWS-Provider インストールというのをしてみる。

$ vagrant plugin install vagrant-aws

結構時間かかる。時間かかるなー。まだ終わらないので、Vagrantfileに記述する情報を調べる。

参考サイトから引用。こういうVagrantfileを作る必要があるらしいけど、アクセスキーとかシークレットキーとかもらってないので調べる。

Vagrant.configure("2") do |config|
  config.vm.box = "dummy"

  config.vm.provider :aws do |aws, override|
    aws.access_key_id = 'アクセスキーID'
    aws.secret_access_key = 'シークレットキーID'
    aws.region = 'ap-northeast-1'
    aws.instance_type = 't1.micro'    
    aws.ami = 'ami-3ddd543c'
    aws.security_groups = ['仮想マシンに設定するセキュリティグループ名']
    aws.keypair_name = '仮想マシンに設定するキーペア名'
    aws.tags = { 
      'Name' => 'サーバ名等、EC2インスタンスの名前に相当する名称'
    }
    # aws.use_iam_profile = ''
    # aws.subnet_id = ''
    # aws.private_ip_address = ''
    override.ssh.username = "root"
    override.ssh.private_key_path = 'pvivatekey(*.pem)のフルパス'

  end
end

と思ってたらインストールが完了した。

$ vagrant plugin install vagrant-aws
Installing the 'vagrant-aws' plugin. This can take a few minutes...
Installed the plugin 'vagrant-aws (0.4.1)'!

AWS EC2 用のDummyBox 取得&初期化というのをしてみる。

$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
Downloading box from URL: https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
Extracting box...e: 0/s, Estimated time remaining: --:--:--)--)
Successfully added box 'dummy' with provider 'aws'!

vagrant init
そして、上記のVagrantfileを作成する。なのでAPIのキーみたいの調べる。
ここにあるっぽい。

スクリーンショット 2014-02-26 4.08.41

Access Keys (Access Key ID and Secret Access Key)のCreate New Access Keyを押してみる。作成できた。rootkey.csvというのももらった。別にsecret access keyが書いてあるだけなのでしっかり保存しとけよっていうことらしい。

ではいざVagrantfileをつくってupしてみる。
amiがなかったから作ってみた。

vagrant 起動(= 仮想サーバ作成)をしてみる。

$ vagrant up --provider=aws

悲しいです。エラーでまくり。

Bringing machine 'default' up with 'aws' provider...
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.9.1
[fog][WARNING] Unable to load the 'unf' gem. Your AWS strings may not be properly encoded.
[default] Warning! The AWS provider doesn't support any of the Vagrant
high-level network configurations (`config.vm.network`). They
will be silently ignored.
An error occurred while executing multiple actions in parallel.
Any errors that occurred are shown below.

An unexpected error ocurred when executing the action on the
'default' machine. Please report this as a bug:

getaddrinfo: nodename nor servname provided, or not known (SocketError)

Nokogiriってなんだよ。。

unfっていうのをインストールしてみる。

$ sudo gem install unf
Password:
Fetching: unf_ext-0.0.6.gem (100%)
Building native extensions.  This could take a while...
Successfully installed unf_ext-0.0.6
Fetching: unf-0.1.3.gem (100%)
Successfully installed unf-0.1.3
Parsing documentation for unf_ext-0.0.6
unable to convert "\xCF" from ASCII-8BIT to UTF-8 for lib/unf_ext.bundle, skipping
Installing ri documentation for unf_ext-0.0.6
Parsing documentation for unf-0.1.3
Installing ri documentation for unf-0.1.3
2 gems installed

あんま関係ないかも。。エラー変わらず。

vagrantでawsのインスタンスを起動しようとしたときに、getaddrinfo: nodename nor servname provided, or not known (SocketError)と出る件

aws.region = “ap-northeast-1a”を、aws.region = “ap-northeast-1″したらいいらしい。

おおいい感じと思ったら別のエラーが出た。

[default] Waiting for instance to become "ready"...
[default] Waiting for SSH to become available...
[default] Machine is booted and ready for use!
[default] Rsyncing folder: /Users/hoge/vagrant/ => /vagrant
An error occurred while executing multiple actions in parallel.
Any errors that occurred are shown below.

An error occurred while executing the action on the 'default'
machine. Please handle this error then try again:

There was an error when attempting to rsync a share folder.
Please inspect the error message below for more info.

Host path: /Users/hoge/vagrant/
Guest path: /vagrant
Error: Warning: Permanently added '11.111.111.111' (RSA) to the list of known hosts.
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(181) [sender=3.0.9]

あーなんかAMIつくったときにもう1個インスタンスが出来てたらしくて一個止めたらなんか入れた。入れたけどこれって単純に接続してるだけじゃん。なんだこれ。

Vagrant 1.1 で EC2 を vagrant upなるほどー。おらが思ってたのとちゃう。。
単にVagrantつかってEC2にアクセスできるだけか。。

[AWS][Vagrant]vagrant-awsを利用したイイカンジ(?)のAWS開発フロー

なんかすごいけどまだよくわからない。
さくらにしても、AWSにしても俺はローカルと開発サーバと本番サーバを同じ環境にしたくて、しかもローカルの代わりにAWSは使いたくない。お金かかるし。だから本番サーバのAWSに合わせたVagrantのBOXを自分でつくりたい。

Packerっていうのでつくれそう。
https://speakerdeck.com/ryuzee/vagrant-plus-amazon-ec2これに下記があった。
スクリーンショット 2014-02-26 7.48.48

Packerというのをインストールしてみる。
PackerでVagrant用のBoxを作成したときのメモ

$ brew tap homebrew/binary
Cloning into '/usr/local/Library/Taps/homebrew-binary'...
remote: Reusing existing pack: 110, done.
remote: Total 110 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (110/110), 16.96 KiB, done.
Resolving deltas: 100% (51/51), done.
Warning: Could not tap homebrew/binary/cmucl over mxcl/master/cmucl
Warning: Could not tap homebrew/binary/grads over mxcl/master/grads
Warning: Could not tap homebrew/binary/jsl over mxcl/master/jsl
Warning: Could not tap homebrew/binary/lmutil over mxcl/master/lmutil
Warning: Could not tap homebrew/binary/perforce-proxy over mxcl/master/perforce-proxy
Warning: Could not tap homebrew/binary/perforce-server over mxcl/master/perforce-server
Warning: Could not tap homebrew/binary/perforce over mxcl/master/perforce
Tapped 10 formula

$ brew install packer
Error: Unsupported special dependency arch

インストールできない。
http://www.packer.io/downloads.htmlここにあった。

OSXでpackerでCentOS6.4のVirtualBox VMを作成する
インストールできた。
でどう使うんでしょうか?

今日全部覚えるのは無理だな。色々なツールがあるし、そもそもよくわかってないし。
どうしたらいいのじゃ!まいった!時間がないのに!

ただし「このLinuxをAmazonクラウド以外で使えますか?」という問いには「いいえ、Amazon EC2以外で利用可能ではありません」と記されています。

とどこかに書いてあった。まあそうなのか。じゃあローカルに仮想環境つくるもくそもないのか。全くおんなじじゃないと意味ないっすからねえ。でもamazon linuxはec2でしか使えないならローカルで実現できるわけないし。

VagrantとChefでチームの開発環境を共通化する

とりあえず便利そうなやつだけインストールしておこう。

$ vagrant plugin install sahara
$ vagrant plugin install vagrant-vbguest
$ vagrant plugin install vagrant-berkshelf

で、一旦amazon linuxという呪縛から離れて、CentOS release 6.5の仮想マシンを立ち上げてみよう。ということはboxをhttp://www.vagrantbox.es/で探してみよう。CentOS 6.5 x86_64かな??
ってことは、こんな感じでやるのかな?

vagrant init centos6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Box 'centos6.5' was not found. Fetching box from specified URL for
the provider 'virtualbox'. Note that if the URL does not have
a box for this provider, you should interrupt Vagrant now and add
the box yourself. Otherwise Vagrant will attempt to download the
full box prior to discovering this error.
Downloading box from URL: https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
Extracting box...te: 1443k/s, Estimated time remaining: --:--:--)
Successfully added box 'centos6.5' with provider 'virtualbox'!
[default] Importing base box 'centos6.5'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
GuestAdditions versions on your host (4.3.6) and guest (4.3.4) do not match.
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: www.ftp.ne.jp
 * epel: mirror01.idc.hinet.net
 * extras: www.ftp.ne.jp
 * updates: centos.tt.co.kr
Setting up Install Process
No package kernel-devel-2.6.32-431.el6.x86_64 available.
Package gcc-4.4.7-4.el6.x86_64 already installed and latest version
Package 1:make-3.81-20.el6.x86_64 already installed and latest version
Package 4:perl-5.10.1-136.el6.x86_64 already installed and latest version
Nothing to do
Copy iso file /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
Installing Virtualbox Guest Additions 4.3.6 - guest version is 4.3.4
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.6 Guest Additions for Linux............
VirtualBox Guest Additions installer
Removing installed version 4.3.4 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules[  OK  ]
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
The missing package can be probably installed with
yum install kernel-devel-2.6.32-431.el6.x86_64

Building the main Guest Additions module[FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions[  OK  ]
Installing the Window System drivers[FAILED]
(Could not find the X.Org or XFree86 Window System.)
An error occurred during installation of VirtualBox Guest Additions 4.3.6. Some functionality may not work as intended.
In most cases it is OK that the "Window System drivers" installation failed.
Restarting VM to apply changes...
[default] Attempting graceful shutdown of VM...
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Mounting shared folders...
[default] -- /vagrant
Failed to mount folders in Linux guest. This is usually beacuse
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` /vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` /vagrant /vagrant

エラーがいっぱいでてるけど、vagrant sshしたらとりあえず入れる。

$ cat /etc/redhat-release 
CentOS release 6.5 (Final)

ここに、Apache 2.2.15、Mysql 5.5.33、PHP 5.3.3これをchefで構築できるようにしたい。
でも時間かかるから、とりあえず普通にインストールしちゃって次のことするか。
次のことっていうのは、AMIを落として別のアカウントのEC2に適用するっていうのをしたいです。
あるいは、scpでソースコード移管して、DBに関しても移動させるか。システムログを消しても大丈夫かどうかだけど一般的にログは消しても大丈夫だからな。

さっきの、sudo yum groupinstall -y “Web Server” “MySQL Database” “PHP Support”をやってみたらmysqlがインストールできなかった。

http://qiita.com/srockstyle/items/8bed9550be75bf2e5e14これのとおりにやってみる。

## EpelとRemiを入れる
sudo -i
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

## MySQLの5.5をremiから
yum –enablerepo=remi install mysql-server mysql mysql-libs mysql-devel

できた。でも5.5.33がよかったんだけど、5.5.36だった。どうでもいいか。いいのかな?