VMからvagrantのboxを作成する
1.vagrant用ユーザ設定をする
ゲストOS(VM)側で作業をする。 vagrantユーザを作成し、sudo設定をしておく。
# groupadd vagrant # useradd vagrant -g vagrant -G wheel # echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers # sudo設定 # passwd vagrant ユーザー vagrant のパスワードを変更。 新しいパスワード:←vagrantと設定する。警告が出るかもしれんが無視 # visudo Defaults requirettyをコメントアウトし、sudo するときのTTY要求をしないようにする。
2.sshの設定をする
ssh用の鍵の設定をする。
# mkdir -pm 700 /home/vagrant/.ssh # mkdir -p /vagrant # wget --no-check-certificate "https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub" -O /home/vagrant/.ssh/authorized_keys # chmod 600 /home/vagrant/.ssh/authorized_keys # chown vagrant:vagrant /home/vagrant/.ssh
3.ネットワークの設定
ネットワークアダプタの設定をしておく。 vagrant up時のインターフェースマッピングエラー防止。
# ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules # rm -rf /dev/.udev/ # rm -f /lib/udev/rules.d/75-persistent-net-generator.rules
4.boxの作成
ホストOSに戻りboxを作成する。
# vagrant package --base vm名
5.作成したboxの使用法
# vagrant box add box名 作成したboxファイル名 # vagrant init # vagrant up
参考文献
シェルスクリプトでディレクトリ内のファイルに対してループ処理する
たとえばこんなシェルスクリプトをfor.shとか名前をつけて保存する。
for file in `\find . -maxdepth 1 -type f`; do # TODO done
そんでもって実行する。
hogehoge:user$ bash for.sh
例)ディレクトリ内のファイルを1つに連結
for file in `\find . -maxdepth 1 -type f`; do cat $file >> out done
Vagrant upで「Authentication failure.」エラーが出る場合
他のユーザがpackage化したboxを使用するときによく発生する。
こうなると、共有フォルダもマウントされなくなる。
原因は、vagrant側のOSの公開鍵と、
vagrant upした際に生成される秘密鍵の組み合わせが合わないということ。
解決するためには以下の手順を踏む。
1 . 再度公開鍵を生成する
vagrant ssh-configで、sshに使用しているmac側の秘密が鍵を確認。
hoge$ vagrant ssh-config ... ... ... IdentityFile /Users/hoge/vag/.vagrant/machines/default/virtualbox/private_key
hoge$ ssh-keygen -yf /Users/hoge/vag/.vagrant/machines/default/virtualbox/private_key > public_key hoge$ pbcopy < public_key
hoge$ vagrant ssh [vagrant@localhost ~]$ vi /home/vagrant/.ssh/authorized_key
あとは、vagrant reloadすれば、共有ディレクトリもマウントできるようになる。
以下の記事が参考になりました。
package化したboxを使うときによく出るエラー -- blog.10rane.com
2 . 1でもダメな場合
仮想マシン側の/home/vagrantのパーミッションを755に変更。
[vagrant@localhost ~]$ sudo chmod 755 /home/vagrant
参考記事
MySQLでの権限設定
登録ユーザの確認
SELECT user, host FROM user;
権限の表示
SHOW GRANTS for 'hoge'@'%';
権限のつけ方
GRANT (許可したいコマンド) ON 許可するDB.* TO ユーザ名@'接続元ホスト' IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
権限周りの処理も許可したい場合はWITH GRANT OPTIONを指定する。
- とりあえず何でもできる管理者ユーザーを作りたい
-- %はワイルドカード GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '' WITH GRANT OPTION;
- IPの制限をかける場合
GRANT ALL ON *.* TO adminuser@'172.16.0.0/255.255.255.0' IDENTIFIED BY 'password' WITH GRANT OPTION;
- DBの制限をかける場合
GRANT ALL ON testdatabase.* TO testuser@'%' IDENTIFIED BY 'password';
- SELECT, INSERT, UPDATE, DELETEのみ許可する場合
GRANT SELECT,INSERT,UPDATE,DELETE ON testdatabase.* TO testuser@'%' IDENTIFIED BY 'password';
CodeIgniterでindex.phpへのアクセスでエラーが発生。
CodeIgniterでindex.phpにアクセスしたら以下のようなエラーが発生した。
Your system folder path does not appear to be set correctly. Please open the following file and correct this index.php
index.phpをapplication、systemsフォルダと違う階層に設置すると発生する。
index.phpで上記フォルダのパスを指定している部分があるので、
index.phpからの相対パスでapplication、systemsフォルダの場所を指定する必要がある。
// $system_path = '/system'; $system_path = '../system'; // $application_folder = '/application'; $application_folder = '../application';