【Vagrant】 apacheの設定方法
環境 CentOS 7.0 apache2.4.6
httpdのインストール、起動はVagrantに限らず、通常のCentOS7の手順と同じ。
$ sudo yum install -y httpd httpd-devel $ sudo systemctl start httpd
自動起動の設定をするなら、
$ sudo systemctl enable httpd.service
これで状態を確認すると、
sudo systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2016-01-05 22:33:04 JST; 6min ago Docs: man:httpd(8) man:apachectl(8) Main PID: 3066 (httpd) Status: "Total requests: 10; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─3066 /usr/sbin/httpd -DFOREGROUND ├─3067 /usr/sbin/httpd -DFOREGROUND ├─3068 /usr/sbin/httpd -DFOREGROUND ├─3069 /usr/sbin/httpd -DFOREGROUND ├─3070 /usr/sbin/httpd -DFOREGROUND ├─3071 /usr/sbin/httpd -DFOREGROUND └─3072 /usr/sbin/httpd -DFOREGROUND Jan 05 22:33:03 localhost.localdomain systemd[1]: Starting The Apache HTTP Server... Jan 05 22:33:04 localhost.localdomain httpd[3066]: AH00558: httpd: Could not reliably determine the server's fully qualifi...ssage Jan 05 22:33:04 localhost.localdomain systemd[1]: Started The Apache HTTP Server. Hint: Some lines were ellipsized, use -l to show in full.
さてこれにアクセスできるようにするには、Vagrantfileの以下の行からコメントをはずせばよい。
config.vm.network "private_network", ip: "192.168.33.10"
これで、vagrant reload
し、192.168.33.10
にブラウザからアクセスすればよい。
【Node.js】 いつの間にかバージョン表記が変わってた
環境 CentOS 7.0 Node.js 5.3.0
Node.jsを最新版にしようと思って、最新版を調べたら、バージョンが5.3.0?
□ CentOS7.0にNode.js最新版をインストール - takafumi blog
のときは0.12.2とかだったのに。
で気が付いたんですが、Node.jsとio.jsが統合したんでしたね。
バージョンがio.jsを引き継いで、3から4として扱われたらしい。
□ JavaScriptプラットフォーム「Node.js v4.0.0」がリリース、io.jsと統合し、今後は定期的なリリースに移行:CodeZine(コードジン)
インストール方法は変わりなし。
【Vagrant】 プロビジョニングで環境を自動構築
環境 Vagrant 1.8.1 VirtualBox 5.0.12
プロビジョニングの実行タイミング
はじめてvagrant up
を行ったときに、実行される処理。
2回目以降は以下のようなメッセージが表示されている。
==> default: flag to force provisioning. Provisioners marked to run always will still run.
明示的に、プロビジョニングを実行する場合は
vagrant up --provision
vagrant reload --provision
とする。
プロビジョニングの書き方
1. Vagrantfileにインラインで書く
以下のように書く。
Vagrant.configure("2") do |config| config.vm.provision "shell", inline: <<-SHELL echo 'HELLO!' date yum insatall -y mysql-server SHELL end
以下のようにも書ける。
script = <<SCRIPT echo 'HELLO!' date yum insatall -y mysql-server SCRIPT Vagrant.configure("2") do |config| config.vm.provision :shell, :inline => script end
2. 別ファイルに書く
Vagrant.configure("2") do |config| config.vm.provision "shell", path: "provision.sh" end
pathの部分はホスト側(Windows)のパスになる。
ただし実行するファイル(provision.sh)内のパスは、ゲスト側(CentOS)のパスになる事に注意。
chefやansibleも同様に書ける。
と言う事で作ってみた。
最小限の構成だけど、完全に自動化しようとすると結構大変。
これで今後は、デスクトップPCとノートPCの環境が統一できるかな?
【Vagrant】 独自のboxを作成する
環境 Vagrant 1.8.1 VirtualBox 5.0.12
既存のVMからboxイメージを作成する
ホスト側から以下のようにする。
PS> vagrant package --base VMName --output Custom.box ==> VMName: Attempting graceful shutdown of VM... VMName: Guest communication could not be established! This is usually because VMName: SSH is not running, the authenticationinformation was changed, VMName: or some other networking issue. Vagrant will force halt, if VMName: capable. ==> VMName: Forcing shutdown of VM... ==> VMName: Clearing any previously set forwarded p orts... ==> VMName: Exporting VM... ==> VMName: Compressing package to: Custom.box
--base
はVirtualBox上の名前
--output
は新しいboxの名前
【参考】
Vagrant:package作成時「VM not created. Moving on…」をエラーが出たら | ログってなんぼ
--output
が未指定だと、package.box
になる
新しいboxファイルを、vagrantのboxに登録する
PS> vagrant box add NewBox Custom.box ==> box: Box file was not detected as metadata. Adding it directly... ==> box: Adding box 'NewBox' (v0) for provider: box: Unpacking necessary files from: file://Custom.box box: Progress: 100% (Rate: 461M/s, Estimated time remaining: --:--:--) ==> box: Successfully added box 'NewBox' (v0) for 'virtualbox'! PS> vagrant box list NewBox (virtualbox, 0) bento/centos-7.1 (virtualbox, 2.2.2)
となる。
【Vagrant】 VirtualBoxのGuestAdditionsを自動で更新する
環境 Vagrant 1.8.1 VirtualBox 5.0.12
割と有名な事らしいけど、VirtualBoxのゲストでカーネルに更新があったときは、GuestAdditionsを入れなおす必要があるらしい。
VirtualBox共有フォルダ覚書 | dark_greenの日記 | スラド
当然知らず、vagrantでVM作って即yum upgrade
したところ、vagrantでのファイル共有ができなくなった。
==> default: Mounting shared folders... default: /vagrant => C:/Users/<ユーザー名>/VirtualBox VMs/CentOS7.x Failed to mount folders in Linux guest. This is usually because 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
とはいえ、ゲスト側で毎度GuestAdition入れなおすのは面倒なので、何か方法がないかとググッてみた。
まさにこれです。
PS> vagrant plugin install vagrant-vbguest
後は普通にvagrant up
でOK。
起動時にゲストが自動で更新される。
【追記】
と思ったら罠が。
vagrant-vbguestは常に最新版のGuestAdditionsをインストールしようとする。
つまり、カーネル側も最新になっていないと、GuestAdditionsだけが更新され、結局バージョン違いで問題になる事がある。
vagrant-vbguestプラグインがGuestAdditionsを無効にしてしまう - Qiita
dotless-de/vagrant-vbguest · GitHub
と言う事で、Vagrantfileに通常は更新無効の設定を書いておく
Vagrant::Config.run do |config| config.vbguest.auto_update = false end