環境
- windows7 64ビット
- VirtualBox4.3.12
- vagrant1.8.4
※VirtualBox5.0や4.3.38で実行するとvagrant upが以下のエラーで終わる。
「vagrant up で rails-dev-box が起動しない」を参考にして4.3.12にしたところ動いた。
Command: ["startvm", "xxxx-xxxxxxxx-xxxxxxxx-a4b1", "--type", "headless"]
Stderr: VBoxManage.exe: error: The virtual machine 'rails-dev-box_default_1461997523333_77253' has terminated unexpected
ly during startup with exit code -1073741819 (0xc0000005). More details may be available in 'C:\Users\xxx\VirtualBox
VMs\rails-dev-box_default_1461997523333_77253\Logs\VBoxHardening.log'
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MachineWrap, interface IMachine
※vagrant1.8.5で、vagrant up時に「Authentication failure. Retrying...」が繰り返されるバグに遭遇。 2016/09/15追記
参考:http://ytooyama.hatenadiary.jp/entry/2016/07/23/213132
Vagrant導入
VirtualBox/Vagrantインストール
VirtualBox4.3.12
https://www.virtualbox.org/wiki/Download_Old_Builds_4_3_pre24vagrant最新
https://www.vagrantup.com/downloads.html
Box取得
Box取得
//vagrant box add 任意のBox名 Box取得先
vagrant box add centos7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
取得されているBoxを確認
vagrant box list
有志によって作られたBoxが掲載されているサイト。ここからBOXを取得する。
http://www.vagrantbox.es/
仮想マシン初期化/起動
一つの仮想マシンにつき、ひとつのフォルダを割り当てる。
フォルダを作りそこへ移動して初期化や起動を行う。
mkdir Myvagrant
cd Myvagrant
//vagrant初期化
//vagrant init Box名
vagrant init centos7
//vagrant起動
vagrant up
注意 PCの「仮想化支援機構(VT-x/AMD-V)を有効化」をしていないと動かない。
1.事象
default: SSH auth method: private keyで止まる
2.対応
BIOSで仮想化支援機構(VT-x/AMD-V)を有効化する。
①再起動して、F10(HP)やF2(その他)を押してBIOS画面へ
②Virtualization Technologyを有効化する。
(PCによって若干表記異なる)
「仮想化支援機構(VT-x/AMD-V)を有効化できません Vagrant upでOS起動失敗した」がまんま参考になる。
仮想マシンへの接続
テラタームで127.0.0.1へ接続する。
ユーザ/パスワード vagrant/vagrant
ユーザ/パスワード root/vagrant
※特定のIPアドレスをプライベートアドレスとすることも可能。
フォルダ内のVagrantfileを開き以下をコメントアウトする。
config.vm.network :private_network, ip: "192.168.33.10"
変更を反映する。
vagrant reload
192.168.33.10でアクセスすることが可能。
共有フォルダの設定
ローカル上のinitしたフォルダは、仮想マシン上の/vagrantに該当する。
ローカルのフォルダ(ここでいえばMyVagrant)を仮想マシン上の/var/www/htmlに対応させる。
※Django使う場合は、ドキュメントルート使わないので必要ない。
rm -fr /var/www/html
ln -fs /vagrant /var/www/html
vagrantコマンド一覧
vagrant -hもしくはvagrant box -hでヘルプ
Boxのリスト表示
vagrant box list
Boxの初期化
vagrant init
仮想マシン立ち上げ
vagrant up
仮想マシン現状確認
vagrant status
仮想マシン一時停止
vagrant suspend
suspendからの復帰
vagrant resume
仮想マシン再起動
vagrant reload
仮想マシンシャットダウン
vagrant halt
Boxの追加
vagrant box add
仮想マシンの消去
vagrant destroy
Boxを削除する
vagrant box remove
CentOS7サーバ構築
言語の変更
取得してきたBoxがなぜかドイツ語なので英語へ変更。
CentOS7では/etc/locale.confに言語が定義されている。
vim /etc/locale.conf
LANG="en_US.UTF-8"
ファイアフォール停止/自動起動停止
ローカルなので停止する。
CentOS7ではiptablesではなく、firewalldを使用する。
chkconfigではなくて、systemctlを使う。
//ファイアフォール停止
systemctl stop firewalld
//ファイアフォール自動起動停止
systemctl disable firewalld
各ミドルウェアのインストール
Apache
yum install httpd
/etc/httpd/conf/httpd.confを修正
ServerTokens Prod
ServerSignature Off
Options -Indexes FollowSymLinks
ServerName XXX:80 #XXXはホスト名を指定
AllowOverride All
DirectoryIndex index.html index.html.var index.php
systemctl start httpd.service
systemctl enable httpd.service
PHP
yum install --enablerepo=remi,remi-php56 php php-devel php-mbstring php-mcrypt php-mysql
/etc/php.iniを修正
expose_php = Off
max_execution_time = 120
error_log = syslog
post_max_size = 20M
default_charset = "UTF-8"
upload_max_filesize = 20M
allow_url_fopen = Off
date.timezone = Asia/Tokyo
session.hash_function = 1
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none
Python
yum install python
MySQL5.6
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum -y install mysql-community-server
/etc/my.cnfを修正する。
[mysqld]
character-set-server=utf8 #追加
default-storage-engine=InnoDB #追加
innodb_file_per_table #追加
[mysql]
default-character-set=utf8 #追加
[mysqldump]
default-character-set=utf8 #追加