じぶんメモ

プログラミングのメモ、日常のメモとか。

EasyWineでWindowsのアプリケーションを動かす

以下のサイトからEasyWine.appをダウンロードする。

matome.naver.jp

ダウンロードしたら、起動するとWindows風のエクスプローラが立ち上がる。 エクスプローラから参照できる場所にwindowsのexeファイルを設置しておけば、windowsのアプリケーションを実行することができる。

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

参考文献

Vagrantのネットワークが起動しないときは · THINKING MEGANE

MySQLのインポート・エクスポート

インポート

hoge$ mysql -u ユーザ名 インポート先DB < ダンプファイル

エクスポート

mysqldump -u ユーザ名 -r ダンプ先ファイル名 --single-transaction ダンプ対象のデータベース名

オプション

・-t … テーブルのデータのみエクスポートする。
・--no-data…テーブルのスキーマのみエクスポートする。
・--default-character-set=***…インポート・エクスポートするときのエンコードを指定する。
・--single-transaction…ダンプ中にテーブルをREADロックしないように付与する。

シェルスクリプトでディレクトリ内のファイルに対してループ処理する

たとえばこんなシェルスクリプトを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
  • 仮想OSのauthorized_keyに先ほど作成した公開鍵を設定
    vagrant upに失敗しても、vagrant sshはできる(パスワードはvagrant)ので、仮想OSにアクセスする。
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

参考記事

qiita.com

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';