■目次
Vagrant概要起動環境構築フォルダ同期スペックの指定IPアドレスの指定複数サーバの起動についてAmazon Linux の起動についてボックスを作成&使用(要検証)クローン(要検証)アクセスするドメインを自動設定(要検証)Vagrant ManagerPostgreSQL検証トラブルVagrantコマンドメモ
■Vagrant概要
VirtualBox ... 仮想化環境。Windows内でLinux、Mac内でWindows…など、、既存のOS内で別のOSを使うことができる。 Vagrant ... VirtualBoxなど、仮想化環境を容易に構築することができる。 ここでは、Windows上にLinux環境を作るものとする Vagrant https://ja.wikipedia.org/wiki/Vagrant_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2) VirtualBox https://ja.wikipedia.org/wiki/VirtualBox VMware https://ja.wikipedia.org/wiki/VMware Oracle VM VirtualBox http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnj... VagrantとDockerについて名前しか知らなかったので試した http://qiita.com/hidekuro/items/fc12344d36d996198e96 Vagrant(1.7.2)でCentOSをインストールする http://qiita.com/ringo0321/items/f07ea1dfc9b7eb9326f8 仮想環境構築ツール「Vagrant」で開発環境を仮想マシン上に自動作成する http://knowledge.sakura.ad.jp/tech/1552/ Oracle VM VirtualBoxを使う http://www.atmarkit.co.jp/ait/articles/1009/30/news122.html VirtualBoxの導入からOSインストールまでのチュートリアル解説 http://success.tracpath.com/blog/2013/10/15/virtualbox%E3%81%AE%E5%B0%8E%E5%85%A5%E3%81%8B%E3%82%89o... VirtualBoxとVagrantで開発環境を構築 http://www.webcyou.com/?p=4632 2016年版、Dockerのすべてが5分でわかるまとめ!(コマンド一覧付き) http://paiza.hatenablog.com/entry/docker_intro 開発環境の構築・共有を簡単にするVagrant入門 https://thinkit.co.jp/story/2015/03/19/5740 Vagrantで複数環境を立ち上げる際、IPアドレスの割当やポートフォワードを全て自動化する http://qiita.com/jyokyoku/items/85b030537a5728c9d771
■起動
■準備 XAMPPなど何らかのローカル環境を使っている場合、念のためあらかじめ終了させておく ■VirtualBoxインストール ※環境によっては、最新版では動作しないことがあるので注意 ※2020年12月にWindows10をアップデートをした Windows10にインストール済みだったVagrantが起動しなくなった 「Vagrant 2.2.14 + VurtualBox 6.1.16」なら動作した(この時点での最新版) いったん Docker Toolbox の利用は急がないので、このまま進める ※2020年6月の時点でWindows10にインストールする際、 「Vagrant 2.2.9 + VurtualBox 6.1」なら動作した(この時点での最新版) ただし上記VirtualBoxではDockerが起動しなかった。詳細は docker.txt を参照 ※2019年8月の時点でWindows10にインストールする際、 「VirtualBox-6.0.10-132072-Win.exe」 「vagrant_2.2.5_x86_64.msi」 なら動作した(この時点での最新版) ただし上記VirtualBoxではDockerが起動しなかったので、後から「VirtualBox-5.2.32-132073-Win.exe」をインストールしなおした ※2018年5月の時点でWindows10にインストールする際、 「VirtualBox-5.2.12-122591-Win.exe」 「vagrant_2.1.1_x86_64.msi」 なら動作した(最新版のVirtualBoxでは、CentOS起動時に「default: SSH auth method: private key」で止まってしまった) ※2018年2月の時点でWindows10にインストールする際、 「VirtualBox-5.1.32-120294-Win.exe」 「vagrant_2.0.1_x86_64.msi」 なら動作した(最新版のVirtualBoxでは、CentOS起動時に「default: SSH auth method: private key」で止まってしまった) https://www.virtualbox.org/ から VirtualBox-6.0.10-132072-Win.exe をダウンロード 初期設定のまま C:\Program Files\Oracle\VirtualBox\ にインストール 途中「Warning Network Interfaces」と表示されるが、「Yes」を選択する 途中デバイスソフトウェアのインストールについて確認されるが、「インストール」を選択する Oracle VM VirtualBox マネージャが起動すれば完了 ■Vagrantインストール https://www.vagrantup.com/ から vagrant_2.2.5_x86_64.msi をダウンロード 初期設定のまま C:\HashiCorp\Vagrant\ にインストール PCを再起動 ■CentOS7用にVagrantBox作成 https://app.vagrantup.com/boxes/search でCentOS7用BoxのURLを確認 (Oracleだったりその他サイトだったり、ダウンロード先はたくさんあるので好みの場所から取得する) 以下にボックスがある Vagrant box centos/7 - Vagrant Cloud https://app.vagrantup.com/centos/boxes/7 以下、Windowsのコマンドプロンプトで操作 >vagrant box list There are no installed boxes! Use `vagrant box add` to add some. はじめはボックスは無い 以下のようにしてボックスを追加できる >vagrant box add centos/7 CentOSをダウンロードには時間がかかる 実行しても、反応があるまで少しラグがある 以下のようにして、追加されたボックスを確認できる >vagrant box list ■参考: app.vagrantup.com 以外から取得する例 http://www.vagrantbox.es/ でCentOS7用BoxのURLを確認 >vagrant box add centos72-x64 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box ==> box: Box file was not detected as metadata. Adding it directly... ==> box: Adding box 'centos72-x64' (v0) for provider: box: Downloading: https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box box: Download redirected to host: github-production-release-asset-2e65be.s3.amazonaws.com box: ==> box: Successfully added box 'centos72-x64' (v0) for 'virtualbox'! >vagrant box list centos72-x64 (virtualbox, 0) ■Vagrantfile作成 >mkdir C:\Users\refirio\Vagrant\centos7 >cd C:\Users\refirio\Vagrant\centos7 ※CentOS7用フォルダを作成して移動。場所やフォルダ名は任意 >vagrant init --minimal centos/7 ==> vagrant: A new version of Vagrant is available: 2.2.13 (installed version: 2.2.9)! ==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html 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(VMの構成を書くためのファイル)を作成 ※--minimal を省略すると、コメント付きのファイルが作成される ※コマンドを使わずに、手動でVagrantfileを作成してもいい Vagrantfileの内容は以下のとおり。「centos/7」には先程入手したボックスの名前を指定する(任意の名前ではない)
Vagrant.configure("2") do |config| config.vm.box = "centos/7" end
一例だが、テキストエディタで以下のように編集。「192.168.33.10」はサーバにアクセスするときのIPアドレス
Vagrant.configure(2) do |config| config.vm.box = "centos/7" config.vm.box_check_update = false config.vm.network "private_network", ip: "192.168.33.10" # config.vm.network "forwarded_port", guest: 80, host: 80 # config.vm.synced_folder "./code", "/var/www/html/code" end
※上記のうち config.vm.box_check_update は true の方がいいかもしれない。要検証 【備忘録】Vagrant 基本の巻 - Qiita https://qiita.com/shoko_kb/items/1701247996f031d0cf4f vagrant box updateでboxファイルをアップグレードする https://hnakamur.github.io/blog/2015/04/25/vagrant-box-update/ ■仮想マシンを起動 >vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'centos/7'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: centos7_default_1565852593519_83202 Vagrant is currently configured to create VirtualBox synced folders with the `SharedFoldersEnableSymlinksCreate` option enabled. If the Vagrant guest is not trusted, you may want to disable this option. For more information on this option, please refer to the VirtualBox manual: https://www.virtualbox.org/manual/ch04.html#sharedfolders This option can be disabled globally with an environment variable: VAGRANT_DISABLE_VBOXSYMLINKCREATE=1 or on a per folder basis within the Vagrantfile: config.vm.synced_folder '/host/path', '/guest/path', SharedFoldersEnableSymlinksCreate: false ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection reset. Retrying... default: Warning: Connection aborted. Retrying... default: Warning: Connection aborted. Retrying... default: Warning: Connection reset. Retrying... default: Warning: Connection aborted. Retrying... default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if it's present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... default: The guest additions on this VM do not match the installed version of default: VirtualBox! In most cases this is fine, but in rare cases it can default: prevent things such as shared folders from working properly. If you see default: shared folder errors, please make sure the guest additions within the default: virtual machine match the version of VirtualBox you have installed on default: your host and reload your VM. default: default: Guest Additions Version: 4.3.30 default: VirtualBox Version: 6.0 ==> default: Configuring and enabling network interfaces... ==> default: Mounting shared folders... default: /vagrant => C:/Users/refirio/Vagrant/centos7 ※仮想マシンを起動(初回はBoxのダウンロードとVM生成があるため時間がかかる) ※完了すると、Oracle VM VirtualBox マネージャで確認できる ■SSHでアクセス >vagrant ssh `ssh` executable not found in any directories in the %PATH% variable. Is an SSH client installed? Try installing Cygwin, MinGW or Git, all of which contain an SSH client. Or use your favorite SSH client with the following authentication information shown below: Host: 127.0.0.1 Port: 2222 Username: vagrant Private key: C:/Users/refirio/Vagrant/centos7/.vagrant/machines/default/virtualbox/private_key SSHでの接続情報が表示されるので、この情報でSSHログインできる (環境によっては、即座にSSHで操作できる状態になる) もしくは、以下のホスト名とポートでもアクセスできる (Vagrantfile で「config.vm.network "private_network", ip: "192.168.33.10"」と設定した場合) Host: 192.168.33.10 Port: 2222 Vagrantの持つ機能で「ホストOS(この場合はWindows)から127.0.0.1の2222番ポートへアクセスした場合、VagrantのSSHへ転送する」となっている 設定されているのはSSHへのアクセスのみ それとは別にVagrantはネットワークの設定機能を持っている デフォルトで「ホストOSから192.168.33.10の22番ポートへのアクセスは2222番ポートへ転送する」となっているため、SSHアクセスができる これを使えば80番ポートでHTTPアクセスさせることもできる FTP - vagrantのssh-addressとprivate-network-ipの違い(32537)|teratail https://teratail.com/questions/32537 Vagrantで立ち上げた仮想環境にIPアドレスを振ってsshでログインする - Qiita https://qiita.com/grachro/items/4d34a43a9a57946f3693 ■バーチャルマシンを終了する場合 >cd C:\Users\refirio\Vagrant\centos7 >vagrant halt ■バーチャルマシンを破棄する場合 >cd C:\Users\refirio\Vagrant\centos7 >vagrant destroy ■ボックスを削除する場合 >vagrant box remove centos/7
■環境構築
■SELinuxを無効化 ※設定しておかないと、/var/www/html/index.html を作成しても反映されなかった # setenforce 0 # getenforce Permissive # vi /etc/sysconfig/selinux
#SELINUX=enforcing SELINUX=disabled
■日本語化 # localedef -f UTF-8 -i ja_JP ja_JP … 日本語ロケールを追加 # localectl set-locale LANG=ja_JP.UTF-8 … 設定 # localectl status … 確認 ■日本語化(CentOS6のときに検証したもの) # yum -y groupinstall "Japanese Support" … 日本語関連のパッケージをまとめてインストール # localedef -f UTF-8 -i ja_JP ja_JP.utf8 … 日本語ロケールを追加 # vi /etc/sysconfig/i18n … i18nを修正
#LANG="en_US.UTF-8" LANG="ja_JP.UTF-8"
$ date … 日本語化を確認する(一旦ログアウトして確認する) 2017年 11月 18日 土曜日 20:19:27 JST ※すべてが日本語化されるわけではないみたい VagrantのCentOSを日本語化してみる http://d.hatena.ne.jp/yk5656/20140527/1402758009 ■ファイヤーウォールを設定(CentOS6のときに検証したもの) $ su - … rootになる Password: vagrant # service iptables stop … ファイヤーウォールを無効にする(ローカル開発環境のため) # chkconfig ip6tables off # chkconfig iptables off ■タイムゾーンを設定 # timedatectl set-timezone Asia/Tokyo … 設定 # timedatectl status … 確認 ■タイムゾーンを設定(CentOS6のときに検証したもの) # date … 時間を確認する(時差がある) Fri Jun 3 12:35:48 UTC 2016 # cp /usr/share/zoneinfo/Japan /etc/localtime … 時差を調整する cp: overwrite `/etc/localtime'? y # vi /etc/sysconfig/clock
#ZONE="Etc/UTC" ZONE="Asia/Tokyo"
# date … 時間を確認する(時差が調整されている) Fri Jun 3 21:36:45 JST 2016 以降は通常通りサーバを構築する 開発環境なので、急ぐなら yum update は省略していいかも ■HTTPでアクセス(Apacheの場合) # yum -y install httpd … Apacheをインストール # vi /etc/httpd/conf/httpd.conf … サーバ名を設定
ServerName localhost.localdomain:80
# systemctl start httpd # systemctl enable httpd # vi /var/www/html/index.html … テストページ作成
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>テスト</title> </head> <body> <p>テスト。</p> </body> </html>
インストール後、Vagrantfile で設定したIPアドレスである http://192.168.33.10/ にアクセスすると /var/www/html/index.html の内容が表示される ■HTTPでアクセス(nginxの場合) # yum -y install nginx … nginxをインストール # systemctl start nginx # systemctl enable nginx インストール後、Vagrantfile で設定したIPアドレスである http://192.168.33.10/ にアクセスすると nginxのデフォルト画面が表示される ■PHPを使用(Apacheの場合) # yum -y install php php-mbstring php-gd 通常通り、上のようなコマンドでインストールできる ただし開発環境なので、タイムゾーンや文字コードなどの基本的な設定以外に、以下の設定も行なっておくことを推奨 (すべてのエラーを画面に表示) # vi /etc/php.ini
#error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL #display_errors = Off display_errors = On
# systemctl restart httpd ■localhostでアクセスする&同一LAN内からアクセスする ※以下の方法の他に、「config.vm.network」の設定でDHCPや固定IPの設定などを行うこともできる 詳細は「IPアドレスの指定について」の項目を参照(そちらの方が正攻法かもしれない) 例えばVagrantfile に以下の設定を追加して起動すると、 http://localhost:8080/ でアクセスできるようになる config.vm.network "forwarded_port", guest: 80, host: 8080 つまり、Vagrantfile に以下の設定を追加して起動すると、 http://localhost:80/ でアクセスできるようになり、ポート番号を省略して http://localhost/ でアクセスできる config.vm.network "forwarded_port", guest: 80, host: 80 この状態なら、同一LAN内から http://192.168.1.25/ のようにPCのIPアドレスを指定すればlocalhostにアクセスできる (LANやWindowsのネットワーク設定はされているものとする) OSX における Vagrant 80番ポートフォワーディング - Qiita http://qiita.com/hidekuro/items/a94025956a6fa5d5494f LAN内の他端末からvagrantの仮想マシンにsshする - Qiita http://qiita.com/teratsyk/items/10bf89422ce98265c8a8 ■メールの送信 # yum -y install mailx sendmail sendmail-cf # systemctl start sendmail # systemctl enable sendmail # systemctl is-enabled sendmail ↑上記の手順で最低限メールを送信できるらしいが、設定を行わなくても↓でメールを送信できた PHPからの送信も mb_ 含め大丈夫だった # mail refirio.work@gmail.com Subject:test … 「test」と入力してENTER test … 「test」と入力してENTER . … 「.」と入力してENTER ■CentOS7+nginx(整理中メモ) MacにVagrantでCentOS7環境を作成 - Qiita https://qiita.com/sudachi808/items/3614fd90f9025973de4b v1801.01 の CentOS 7 Vagrant box に日本語ロケールを追加する方法 - Qiita https://qiita.com/ryo-sato/items/00dea41bf665626c9b43 vagrant box list vagrant box add centos/7 3 vagrant box list mkdir C:\vagrant\centos7 mkdir C:\vagrant\centos7\code cd C:\vagrant\centos7 vagrant init centos/7 Vagrant.configure(2) do |config| config.vm.box = "centos/7" config.vm.box_check_update = false config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "forwarded_port", guest: 80, host: 80 config.vm.synced_folder "./code", "/var/www/html/code" end vagrant up su - systemctl stop firewalld systemctl disable firewalld localectl list-locales | grep -i ja yum -y reinstall glibc-common localectl list-locales | grep -i ja localectl set-locale LANG=ja_JP.UTF-8 localectl status timedatectl set-timezone Asia/Tokyo timedatectl status yum -y install nginx … これで駄目なら以下でインストール yum -y install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum -y install --enablerepo=nginx nginx systemctl start nginx.service systemctl enable nginx.service http://192.168.33.10/
■フォルダ同期
初期状態では C:\Users\refirio\Vagrant\centos7 の内容と /vagrant の内容が同期している 以下のように指定すると、任意の場所を同期させることができる (この場合、C:\Users\refirio\Vagrant\centos7\code の内容と /var/www/html/code の内容が同期している) config.vm.synced_folder "./code", "/var/www/html/code" 開発時はバーチャルホストを設定して、C:\Users\refirio\Vagrant\centos7\code と /var/www/vhosts を丸ごと同期させたりすると便利 以下はVagrantfileの設定例 config.vm.synced_folder "./code", "/var/www/vhosts" 開発時はWindowsのhostsファイルを編集して http://refirio.localhost/ のようなURLでアクセスすると良さそう ■共有フォルダをNFSにする VagrantでECCubeなどを使うと非常に重いが、大量のファイルがある場合に共有フォルダの同期に時間がかかっている可能性がある vagrant-winnfsd プラグインを導入して共有フォルダをNFSに指定すると、動作が早くなる可能性がある >vagrant halt … 起動している場合は終了させる >vagrant plugin install vagrant-winnfsd … プラグインをインストール Vagrantfile で以下のように設定する
config.vm.synced_folder "./code", "/var/www" ↓ config.vm.synced_folder "./code", "/var/www", type: "nfs"
>vagrant up 起動時にWindowsのネットワークの警告が表示されたが、そのまま許可して進めた これで使用中の動作が早くなり、起動自体も早くなった Vagrant(VirtualBox)でディスクアクセスが遅い問題の対処法 https://masshiro.blog/vagrant-laravel-slow/ Vagrant 事始め 05 - 共有フォルダを設定する - Qiita https://qiita.com/centipede/items/5b3cb4965618993cefec Windows + vagrant環境にはvagrant-winnfsdがおすすめ(一部難あり) | Blog | riatw.me https://riatw.me/blog/windows_vagrant_winnfsd.html
■スペックの指定
Vagrantfile で以下のように設定する。この場合、CPUは2つでメモリは4096MBとなる ECCubeなどでは、この指定を行っておくと比較的高速に起動できる
config.vm.provider "virtualbox" do |vb| vb.cpus = 2 vb.memory = 4096 end
Vagrantで作成するVMのスペック等の設定(cpu/memory/storageほか) - Qiita https://qiita.com/zaki-lknr/items/469e4de02a8d544f2153 VagrantfileでCPUの数を設定する - Qiita https://qiita.com/nmatayoshi/items/61b6936e9b9b0abecc1a
■IPアドレスの指定
Vagrantfileの「config.vm.network」で、IPアドレスを指定できる(HTTPアクセスなどに使用するアドレス) いずれの場合も、SSHでのアクセスは 127.0.0.1 で行う Vagrantでpingが通らない!ゆえにVagrantネットワークを学び直したよ | ITかあさん http://www.kaasan.info/archives/3665 Vagrant 初心者 Network 設定 - Qiita https://qiita.com/yusk24/items/e43b25ce4eeda69b4b57 LAN内の他端末からvagrantの仮想マシンにsshする - Qiita https://qiita.com/teratsyk/items/10bf89422ce98265c8a8 よく使うVagrantfileの設定のまとめ https://www.virment.com/vagrantfile-settings/ ■forwarded_port
config.vm.network "forwarded_port", guest: 80, host: 8080
ホストマシンから http://localhost:8080/ でアクセスできる PCのIPアドレスを指定すれば、同一LAN内からVagrantにアクセスできる 詳細はこのドキュメントの「環境構築」の「localhostでアクセスする&同一LAN内からアクセスする」を参照 ■private_network
config.vm.network "private_network", ip: "192.168.33.10"
ホストマシンから 192.168.33.10 にアクセスできる サーバ内でIPアドレスを確認すると、以下のようになっている $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:cb:d7:28 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 inet6 fe80::a00:27ff:fecb:d728/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:ae:64:f9 brd ff:ff:ff:ff:ff:ff inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1 inet6 fe80::a00:27ff:feae:64f9/64 scope link valid_lft forever preferred_lft forever ■public_network(DHCP)
config.vm.network "public_network"
以下の場合、ホストマシンから 192.168.1.105 にアクセスできる(毎回IPアドレスの確認が必要) 同一LAN内の他マシンからもアクセスできる $ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:cb:d7:28 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 inet6 fe80::a00:27ff:fecb:d728/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:ae:64:f9 brd ff:ff:ff:ff:ff:ff inet 192.168.1.105/24 brd 192.168.1.255 scope global eth1 inet6 fe80::a00:27ff:feae:64f9/64 scope link valid_lft forever preferred_lft forever $ ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:CB:D7:28 inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fecb:d728/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:868 errors:0 dropped:0 overruns:0 frame:0 TX packets:579 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:90222 (88.1 KiB) TX bytes:82612 (80.6 KiB) eth1 Link encap:Ethernet HWaddr 08:00:27:AE:64:F9 inet addr:192.168.1.105 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:feae:64f9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:510 errors:0 dropped:0 overruns:0 frame:0 TX packets:37 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:39865 (38.9 KiB) TX bytes:4801 (4.6 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) ■両方を指定
config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "public_network"
以下の場合、ホストマシンから 192.168.33.10 にアクセスできる 192.168.1.106 でもアクセスでき、このアドレスなら他マシンからもアクセスできる(毎回IPアドレスの確認が必要) $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:cb:d7:28 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 inet6 fe80::a00:27ff:fecb:d728/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:ae:64:f9 brd ff:ff:ff:ff:ff:ff inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1 inet6 fe80::a00:27ff:feae:64f9/64 scope link valid_lft forever preferred_lft forever 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:71:6d:ff brd ff:ff:ff:ff:ff:ff inet 192.168.1.106/24 brd 192.168.1.255 scope global eth2 inet6 fe80::a00:27ff:fe71:6dff/64 scope link valid_lft forever preferred_lft forever ■public_network(IP固定)
config.vm.network "public_network", ip: "192.168.1.10", bridge: "en0: Wi-Fi (AirPort)"
IPアドレスの重複があると、Vagrant起動時にエラーになる
The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! /sbin/ifdown 'eth1' mv -f '/tmp/vagrant-network-entry-eth1-1526521968-0' '/etc/sysconfig/network-scripts/ifcfg-eth1' /sbin/ifup 'eth1' Stdout from the command: Determining if ip address 192.168.1.10 is already in use for device eth1... Error, some other host (60:F8:1D:BA:9D:46) already uses address 192.168.1.10. Stderr from the command:
config.vm.network "public_network", ip: "192.168.33.101", bridge: "en0: Wi-Fi (AirPort)"
他のアドレスを指定すればエラーが解消された …が、ブラウザから接続できない 試したネットワークのセグメントが 192.168.1.0/24 のため、192.168.33.0/24 だと通信できなかったのだと思われる また改めて検証したい
■複数サーバの起動について
Capistrano で Rails アプリケーションの自動デプロイ - Qiita https://qiita.com/Salinger/items/4ee4f3c5ebd5227196c0 Vagrantで複数の仮想マシンを立ち上げる マルチマシン(Malti-Machine)設定 - Qiita https://qiita.com/zum/items/03da94291ffbc9af2244 以下のようなVagrantfileで、複数のサーバを一度に起動できる
Vagrant.configure(2) do |config| config.vm.box = "centos72" config.vm.box_check_update = false config.vm.define "server1" do |node| node.vm.hostname = "server1.localhost" node.vm.synced_folder "./code1", "/var/code" node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2210 #node.vm.network "private_network", ip: "192.168.33.10", virtualbox__intnet: "intra" node.vm.network "private_network", ip: "192.168.33.10" end config.vm.define "server2" do |node| node.vm.hostname = "server2.localhost" node.vm.synced_folder "./code2", "/var/code" node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2211 #node.vm.network "private_network", ip: "192.168.33.11", virtualbox__intnet: "intra" node.vm.network "private_network", ip: "192.168.33.11" end config.vm.define "server3" do |node| node.vm.hostname = "server3.localhost" node.vm.synced_folder "./code3", "/var/code" node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2212 #node.vm.network "private_network", ip: "192.168.33.12", virtualbox__intnet: "intra" node.vm.network "private_network", ip: "192.168.33.12" end end
この場合、以下の情報でSSHアクセスできる ポート: 2210 鍵: C:/vagrant/multi/.vagrant/machines/server1/virtualbox/private_key ポート: 2211 鍵: C:/vagrant/multi/.vagrant/machines/server2/virtualbox/private_key ポート: 2212 鍵: C:/vagrant/multi/.vagrant/machines/server3/virtualbox/private_key Webサーバをインストールすれば、以下のURLでHTTPアクセスできる http://192.168.33.10/ http://192.168.33.11/ http://192.168.33.12/ 以下のようにすれば、サーバ間でSSHアクセスできる $ ssh -p 22 vagrant@192.168.33.11
■Amazon Linux の起動について
Windows10 + Vagrant で Amazon Linux を起動する - ぎゃぴろぐ http://gappy.hateblo.jp/entry/20180617/1529230685 Vagrantでお手軽にAmazon Linuxの仮想マシンを立てる | レコチョクのエンジニアブログ https://techblog.recochoku.jp/5048 Amazon Linux 2が出たのでVagrantでの開発環境を試してみる - Qiita https://qiita.com/winky/items/8fff704a50db821ea77a
■ボックスを作成&使用(要検証)
作成した環境を複製して使い回す ■ボックスを作成 >vagrant package --base refirio_net_default_1465954562620_24555 --output vagrant-centos-6.7-refirio_net-20160615.box ==> refirio_net_default_1465954562620_24555: Clearing any previously set forwarded ports... ==> refirio_net_default_1465954562620_24555: Exporting VM... ==> refirio_net_default_1465954562620_24555: Compressing package to: C:/vagrant/refirio_net/vagrant-centos-6.7-refirio_net-20160615.box --base ... 作成対象の仮想マシン名 --output ... 出力 box ファイル名 仮想マシン名は「Oracle VM VirtualBox マネージャ」で確認できる「refirio_net_default_1465954562620_24555」を指定した C:\vagrant\refirio_net\vagrant-centos-6.7-refirio_net-20160615.box が作成されたので、ボックスとして使えるか確認する 大丈夫なら、他のPCなどでも使えるか確認する ボックスとは別にスナップショットも試す cronも試す ■作成したボックスから作成 >vagrant box add centos-6.7-refirio_net C:\Users\Refirio\Documents\VirtualBox\vagrant-centos-6.7-refirio_net-20160615.box Vagrant.configure(2) do |config| config.vm.box = "vagrant-centos-6.7" config.vm.box_check_update = false # config.vm.network "forwarded_port", guest: 80, host: 80 config.vm.network "private_network", ip: "192.168.33.10" # config.vm.synced_folder "./test", "/var/www/html/test" end >vagrant init --minimal centos-6.7-refirio_net Vagrant.configure(2) do |config| config.vm.box = "centos-6.7-refirio_net" config.vm.box_check_update = false # config.vm.network "forwarded_port", guest: 80, host: 80 config.vm.network "private_network", ip: "192.168.33.11" # config.vm.synced_folder "./test", "/var/www/html/test" end >vagrant up default: Warning: Authentication failure. Retrying... のエラーが表示された >vagrant ssh Host: 127.0.0.1 Port: 2222 Username: vagrant Private key: C:/Users/Refirio/.vagrant.d/insecure_private_key 上記情報で接続すると「秘密鍵ファイルが存在しません。」と表示された が、 Host: 127.0.0.1 Port: 2222 Username: vagrant Password: vagrant なら接続できた。 .vagrant/machines/default/virtualbox/ の内容を確認すると、鍵ファイルがなく本来よりもファイル数が少ない エラーの最中にここに鍵ファイルを置くと通った? でも以前の .vagrant/ を置いて vagrant up すると、内容がクリアされた上で新規に作られた よって一度 vagrant up で立ち上げてから .vagrant/ を入れ替えればよかった? と思ったけど、そうでも無いかも。要検証 未検証だが、以下も参考にできそう Vagrantでboxファイル作成 - Qiita https://qiita.com/Esfahan/items/46da3ce1893a67789b58 vagrant upコマンド実行時にAuthentication failure.エラーが発生する - Qiita https://qiita.com/shyse/items/9ec50b868b90f847c75f Vagrant 1.7 〜 で vagrant package する場合の注意 - Qiita https://qiita.com/komazarari/items/eebdfd06300275c02914 VagrantでSSH鍵の設定 - [Authentication failure. Retrying…]の対処策 - Qiita https://qiita.com/Esfahan/items/e5f707dc6d116c2cc751 package化したboxを使うときによく出るエラー -- blog.10rane.com http://blog.10rane.com/2015/08/28/errors-out-when-using-to-package-the-box/
■クローン(要検証)
コマンドでシャットダウンし、Oracle VM VirtualBox マネージャで、 「仮想マシンを右クリック → クローン → 名前を付けて次へ → すべてをクローン → クローン」 とするとクローン(環境の複製)ができる
■アクセスするドメインを自動設定(要検証)
vagrant使うときのipアドレスを自分の好きなようにカスタマイズ! http://blog.fukamin.me/2015/08/06/vagrant%E4%BD%BF%E3%81%86%E3%81%A8%E3%81%8D%E3%81%AEip%E3%82%A2%E3... config.vm.hostname = "local.fukamin.me" のように書けばVagrantがhostsファイルを編集してくれるらしい この場合、Vagrantが立ち上がっている間だけhostsファイルに記述が追加されるらしい …が、自分の環境ではなぜかアクセスできず。要調査 現状のこのファイルの手順では、SSHで接続できてもHTTPで接続できないことがあった 以前ダウンロードした centos64-x86_64 から新規に環境を作って問題なかったので、OSの設定などに問題は無いと思われる Windows10環境で新規にVagrantをインストールするときは、追加で何らかの設定が必要だとか? 同一ネットワーク内で同一IPアドレスを使えないとか? 同一ネットワーク内の複数のPCで 192.168.33.10 で起動させても大丈夫だった。重複は問題ないみたい? 次回構築時、以下の手順などを確認する Vagrant + Virtualbox + CentOS 6.5 でhttpdサーバを構築できない https://teratail.com/questions/26240 VagrantでCentOS7を立てたが、httpアクセスが繋がらない時にやったこと http://qiita.com/ta__ho/items/1bdd8403a15be7411e20 Windowsにインストールされているセキュリティソフトの影響とか?それらをすべてOFFにしてみる 80番ポート以外に変更すればアクセスできたかも?8080ポートでのアクセスなども試してみる 「vagrant http ポート」でググると色々出てくる OSX における Vagrant 80番ポートフォワーディング http://qiita.com/hidekuro/items/a94025956a6fa5d5494f Vagrant + VirtualBoxで仮想環境側のポートをあける http://qiita.com/kkam0907/items/4a345cd5e834969d3859 Vagrantのport forwardは普通に80 → 80に転送すればよいのでは http://dqn.sakusakutto.jp/2014/02/vagrant_port_forward_80_80.html
■Vagrant Manager
※未検証 最初のマシン内のスキャンには時間がかかるかも? [windows]Vagrant Managerインストール方法 | たきもと.com https://kengotakimoto.com/post-1674/ Vagrantをメニューバーから操作できるVagrant Manager - Sou-Lablog https://blog.sou-lab.com/vagrant-manager/
■PostgreSQL検証
■基本設定 ※SELinuxを無効にしておく ※言語とタイムゾーンを設定しておく ■Apacheをインストール # yum -y install httpd # vi /etc/httpd/conf/httpd.conf
ServerName localhost.localdomain:80
# service httpd start # chkconfig httpd on # vi /var/www/html/index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>テスト</title> </head> <body> <p>テスト。</p> </body> </html>
http://192.168.33.10/ ■PHPをインストール # yum -y install epel-release # rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # yum -y install --enablerepo=remi-php73 php php-cli php-common php-devel php-fpm php-mbstring php-pgsql php-pdo php-gd php-xml # vi /etc/php.ini
#error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL #display_errors = Off display_errors = On
# service httpd restart # vi /var/www/html/phpinfo.php
<?php phpinfo() ?>
■PostgreSQLをインストール # yum -y install postgresql-server # service postgresql initdb データベースを初期化中: [ OK ] # vi /var/lib/pgsql/data/postgresql.conf
# 59行目:コメント解除して変更(他ホストからのアクセスも受け付ける場合) listen_addresses = '*' # 397行目:コメント解除して変更(ログの形式を [日時 ユーザー DB 〜]とする) log_line_prefix = '%t %u %d '
# service postgresql start # chkconfig postgresql on ■PostgreSQL用のユーザとデータベースを作成 PostgreSQLの仕様上、同名のLinuxユーザも作成しておく必要がある # useradd webmaster # passwd webmaster 1234 引き続き、PostgreSQLのユーザとデータベースを作成 # su - postgres -bash-4.2$ createuser webmaster -bash-4.2$ createdb test -bash-4.2$ exit 作成したユーザで接続テスト # su - webmaster $ psql -l $ psql test test=> CREATE TABLE test(no INT, name TEXT); test=> INSERT INTO test VALUES(1, '山田太郎'); test=> INSERT INTO test VALUES(2, '山田花子'); test=> SELECT * FROM test; test=> \q ■PostgreSQLにPHPから接続 # vi /var/lib/pgsql/data/pg_hba.conf
# "local" is for Unix domain socket connections only … 丸ごとコメントアウト #local all all ident # IPv4 local connections: #host all all 127.0.0.1/32 ident # IPv6 local connections: #host all all ::1/128 ident local all all trust … 代わりに以下の設定を追加 host all all 127.0.0.1/32 trust host all all ::1/128 trust host all all 0.0.0.0/0 password
# service postgresql restart # vi /var/www/html/pgsql.php
<?php try { $pdo = new PDO( 'pgsql:dbname=test;host=localhost', 'webmaster', '1234' ); $stmt = $pdo->query('SELECT NOW() AS now;'); $data = $stmt->fetch(PDO::FETCH_ASSOC); echo "<p>" . $data['now'] . "</p>\n"; } catch (PDOException $e) { exit($e->getMessage()); } $pdo = null;
■トラブル
■起動しようとすると「vagrant No usable default provider could be found for your system.」と表示される VirtualBoxやVMWareなどの仮想環境ソフトウェアを先にインストールする ■Oracle VM VirtualBox を起動できない Oracle VM VirtualBox をダブルクリックで起動しても以下のダイアログが表示されて起動できない
[Window Title] プログラム互換性アシスタント [Main Instruction] このアプリはこのデバイスで実行できません [詳細情報] [閉じる(C)]
「詳細情報」をクリックすると以下に遷移する Download_Old_Builds_5_2 - Oracle VM VirtualBox https://www.virtualbox.org/wiki/Download_Old_Builds_5_2 Vagrant、VirtualBox をアンインストールし、それぞれ最新版をインストールする ■起動しようとすると「The virtual machine 'XXXXX' has terminated unexpectedly」のようなエラーになる >vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["startvm", "be217c1e-0540-4fcb-8fb9-32b12b5cd567", "--type", "headless"] Stderr: VBoxManage.exe: error: The virtual machine 'centos6_default_1469071051278_3326' has terminated unexpectedly during startup with exit code -1073741819 (0xc0000005) VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MachineWrap, interface IMachine VirtualBoxが開けなくなったら http://yuttariblog.blogspot.jp/2014/07/virtualbox.html Windowsアップデートの影響で動かなくなることがあるらしいが、最新版にすれば動作するらしい Windowsコントロールパネルの「プログラムのアンインストール」から 「Oracle VM VirtualBox 5.0.20」 「vagrant」 をアンインストールし、その時点での最新版の 「VirtualBox-5.1.22-115126-Win.exe」 「vagrant_1.9.5.msi」 をインストールすれば起動するようになった 以前作成した設定や構築したサーバは、そのまま残っていた 2017年12月4日、大きなWindowsアップデートを適用すると起動しなくなった。その時点での 「VirtualBox-5.2.2-119230-Win.exe」 「vagrant_2.0.1_x86_64.msi」 をインストールしなおせば起動するようになった 環境によっては上記の組み合わせでも起動しなかったが 「VirtualBox-5.1.30-118389-Win.exe」 「vagrant_2.0.1_x86_64.msi」 をインストールしなおせば起動するようになった 「とりあえずは最新(5.2)のVirtualBoxと、それにあったVagrantで試す。駄目なら5.1内で最新のVirtualBoxと、それにあったVagrantで試す」 なら、割となんとかなる。ということかもしれない ■起動しようとすると「Vagrant failed to initialize at a very early stage」のようなエラーになる >vagrant up Vagrant failed to initialize at a very early stage: The plugins failed to initialize correctly. This may be due to manual modifications made within the Vagrant home directory. Vagrant can attempt to automatically correct this issue by running: vagrant plugin repair If Vagrant was recently updated, this error may be due to incompatible versions of dependencies. To fix this problem please remove and re-install all plugins. Vagrant can attempt to do this automatically by running: vagrant plugin expunge --reinstall Or you may want to try updating the installed plugins to their latest versions: vagrant plugin update Error message given during initialization: No such file or directory @ rb_sysopen - C:/Users/refirio/.vagrant.d/gems/2.6.6/gems/micromachine-3.0.0/micromachine.gemspec Windowsアップデートの直後に起動しなくなった VirtualBoxとVagrantをインストールしなおしても、相変わらず同じエラーになる エラーメッセージ内に C:/HashiCorp/Vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/bundler.rb:725:in `write': No such file or directory @ rb_sysopen - C:/Users/refirio/.vagrant.d/gems/2.6.6/gems/micromachine-3.0.0/micromachine.gemspec (Errno::ENOENT) C:/HashiCorp/Vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/bundler.rb:725:in `write': No such file or directory @ rb_sysopen - C:/Users/refirio/.vagrant.d/gems/2.6.6/gems/vagrant-vbguest-0.24.0/vagrant-vbguest.gemspec (Errno::ENOENT) C:/HashiCorp/Vagrant/embedded/gems/2.2.14/gems/vagrant-2.2.14/lib/vagrant/bundler.rb:725:in `write': No such file or directory @ rb_sysopen - C:/Users/refirio/.vagrant.d/gems/2.6.6/gems/vagrant-vbguest-0.28.0/vagrant-vbguest.gemspec (Errno::ENOENT) とあるので、 C:/Users/refirio/.vagrant.d/gems/2.6.6/gems/micromachine-3.0.0/micromachine.gemspec C:/Users/refirio/.vagrant.d/gems/2.6.6/gems/vagrant-vbguest-0.24.0/vagrant-vbguest.gemspec C:/Users/refirio/.vagrant.d/gems/2.6.6/gems/vagrant-vbguest-0.28.0/vagrant-vbguest.gemspec にカラのファイルを作成した (「micromachine-3.0.0」の対応をすると、新たに他のものが表示されたので順次対応した) これで >vagrant plugin update Updating installed plugins... Successfully uninstalled micromachine-3.0.0 Successfully uninstalled vagrant-vbguest-0.24.0 Successfully uninstalled vagrant-vbguest-0.28.0 All plugins are up to date. を実行すると、プラグインがアンインストールされた? (場合によっては、コマンドプロンプトを管理者権限で実行する必要があるかもしれない) この後さらに >vagrant plugin repair >vagrant plugin expunge --reinstall >vagrant plugin update を実行すると、今度はエラーなく完了できた その後 >vagrant up を実行すると 「Stderr: VBoxManage.exe: error: Failed to open/create the internal network」 のようなエラーになったが、後述の「ネットワークと共有センター」からの作業を行った その後 >vagrant up を実行すると 「Vagrant was unable to mount VirtualBox shared folders.」 のようなエラーになったが、後述のマウントエラー対策の作業を行った これで起動できるようになった ■起動しようとすると「Stderr: VBoxManage.exe: error: Failed to open/create the internal network」のようなエラーになる >vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'centos/7'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: centos7_default_1608985428243_21755 ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 80 (guest) => 8080 (host) (adapter 1) default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["startvm", "e1e1054e-897d-40e3-bd76-97cb2e7868a9", "--type", "headless"] Stderr: VBoxManage.exe: error: Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #2' (VERR_INTNET_FLT_IF_NOT_FOUND). VBoxManage.exe: error: Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND) VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole 以下が参考になる VirtualBox で Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter' が出た時の対処 - Qiita https://qiita.com/ExA_DEV/items/ae80a7d767144c2e1992 上記のとおり、 1. "ネットワークと共有センター" を開く 2. "アダプターの設定の変更" を開く 3. "VirtualBox Host-Only Network #N" のプロパティを開く 4. "VirtualBox NDIS6 Bridged Networking Driver" にチェックを入れる 5. "インターネットプロトコル バージョン6(TCP/IPv6)" のチェックを外す 6. [OK] を押し、プロパティウィンドウを閉じる 7. "VirtualBox Host-Only Network #N" の右クリックメニューで「無効」にする 8. 再度、「有効」にし直す の操作を行うと起動できるようになった 以前に作成した環境も、問題なく起動できるようになった ■起動しようとすると「default: SSH auth method: private key」で止まり、その後「Timed out while waiting for the machine to boot」となる 「VirtualBox-5.2.0-118431-Win.exe」 「vagrant_2.0.1_x86_64.msi」 で発生した 別環境で起動を確認できた 「VirtualBox-5.1.22-115126-Win.exe」 「vagrant_1.9.5.msi」 にバージョンダウンしてみると起動できた VagrantとVirtualBox(もしくはWindowsとVirtualBox?)のバージョンで相性があるようで、マイナーバージョンにすると起動することがある Windows - Vagrantup時に、SSH auth method: private keyでタイムアウトになる(99629)|teratail https://teratail.com/questions/99629 以下は直接の解決では無かったが、参考までに "vagrant up"したら"SSH auth method: private key"で止まった話 - Qiita https://qiita.com/sasurai_usagi3/items/2ba572013b16f2703f6a Vagrant UP時にSSH auth method: private key・・・で詰まった話 - Qiita https://qiita.com/is_ryo/items/d67d29fc56cf3cd07199 問題なく使えていたが、大きなWindowsアップデートを行った後に 「The virtual machine 'XXXXX' has terminated unexpectedly」 のようなエラーになって起動しなくなった。上に記載したように、VirtualBoxとVagrantを最新版にすると起動するようになった 作成済みのBoxを破棄して、再度一から構築すると起動したこともある ■起動しようとすると「Vagrant was unable to mount VirtualBox shared folders.」のようなエラーになる 仮想マシンを起動しようとすると以下のエラーが表示された ==> default: Mounting shared folders... default: /vagrant => C:/vagrant/centos7_test Vagrant was unable to mount VirtualBox shared folders. This is usually because the filesystem "vboxsf" is not available. This filesystem is made available via the VirtualBox Guest Additions and kernel module. Please verify that these guest additions are properly installed in the guest. This is not a bug in Vagrant and is usually caused by a faulty Vagrant box. For context, the command attempted was: mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant The error output from the command was: /sbin/mount.vboxsf: mounting failed with the error: No such device Vagrantでマウントエラーが発生したときの解消方法 - Qiita https://qiita.com/chubura/items/4166585cf3f44e33271d Vagrantで共有フォルダのマウントに失敗するときの対処方法 - Qiita https://qiita.com/ozawan/items/9751dcfd9bd4c470cd82 「ホスト⇔ゲスト間のフォルダ共有機能はGuest Additionsが提供していますが ホスト(VirtualBox)とゲスト(Guest Additions)でバージョン不一致があるとマウントエラーが起きるようです。」 とのこと ミドルウェアをインストールした際にカーネルが一部更新された可能性があり、 つまりは「Guest Additions」というソフトウェアを更新する必要がある。場合によってはカーネルも更新する必要がある vagrant up時に自動的に新しいバージョンのGuest Additionsに更新してくれる「vagrant-vbguest」というプラグインがあるらしい >vagrant plugin install vagrant-vbguest Installing the 'vagrant-vbguest' plugin. This can take a few minutes... Fetching: vagrant-share-1.1.9.gem (100%) Fetching: micromachine-2.0.0.gem (100%) Fetching: vagrant-vbguest-0.18.0.gem (100%) Installed the plugin 'vagrant-vbguest (0.18.0)'! その後、仮想マシンを停止&起動すればフォルダ同期もできた >vagrant halt ==> default: Attempting graceful shutdown of VM... >vagrant up ==> default: Mounting shared folders... default: /vagrant => C:/vagrant/refirio_net default: /var/www/html/test => C:/localhost/home/refirio_net/public_html/test ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run. これでも駄目な場合、いったん立ち上げたサーバにSSHで接続して $ sudo yum install -y kernel kernel-devel gcc を実行し、サーバから抜けてから >vagrant reload を実行すると大丈夫だった Vagrant was unable to mount VirtualBox shared folders.でvagrantでフォルダがマウント出来ない - Qiita https://qiita.com/pnpk/items/2c4e976cda20610e7096 【Vagrant】 VirtualBoxのGuestAdditionsを自動で更新する - takafumi blog http://takafumi-s.hatenablog.com/entry/2016/01/03/172840 複数のサーバを一度に立ち上げる場合、 Vagrantfile に1台目だけの設定を記載した上で起動して1台目に上記の対応を行い、 Vagrantfile 1台目と2台目の設定を記載した上で起動して1台目と2台目に上記の対応を行い、 Vagrantfile 1台目と2台目と3台目の設定を記載した上で起動して1台目と2台目と3台目に上記の対応を行い …とすれば大丈夫だった Box自体のバージョンアップが必要なのかも(未検証) ■起動しようとすると「No Virtualbox Guest Additions installation found.」「umount: /mnt: not mounted」のようなエラーになる 仮想マシンを起動しようとすると以下のエラーが表示された 「Vagrant was unable to mount VirtualBox shared folders.」と同じ方法で対処できる可能性がある ==> default: Machine booted and ready! [default] No Virtualbox Guest Additions installation found. Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp-srv2.kddilabs.jp * extras: ftp-srv2.kddilabs.jp * updates: ftp-srv2.kddilabs.jp Package centos-release-7-9.2009.0.el7.centos.x86_64 already installed and latest version Nothing to do Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp-srv2.kddilabs.jp * extras: ftp-srv2.kddilabs.jp * updates: ftp-srv2.kddilabs.jp No package kernel-devel-3.10.0-1127.el7.x86_64 available. Error: Nothing to do Unmounting Virtualbox Guest Additions ISO from: /mnt umount: /mnt: not mounted ==> default: Checking for guest additions in VM... default: No guest additions were detected on the base box for this VM! Guest default: additions are required for forwarded ports, shared folders, host only default: networking, and more. If SSH fails on this machine, please install default: the guest additions and repackage the box to continue. default: default: This is not an error message; everything may continue to work properly, default: in which case you may ignore this message. The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! umount /mnt Stdout from the command: Stderr from the command: umount: /mnt: not mounted ■起動しようとすると「[default] GuestAdditions versions on your host (5.1.22) and guest (4.3.6) do not match.」のようなエラーになる /vagrantのマウントに失敗 - その2 | technote http://tech.withsin.net/2017/04/17/vagrant-mount-failed/ ■フォルダ同期の設定を行ったらエラーになる 仮想マシンを起動しようとすると以下のエラーが表示された ==> default: Mounting shared folders... default: /vagrant => C:/vagrant/refirio_net 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 The error output from the last command was: /sbin/mount.vboxsf: mounting failed with the error: No such device サーバ自体は起動しているのでSSHで接続し、vboxをリビルドする vagrantでmountエラーの解決方法 http://qiita.com/osamu1203/items/10e19c74c912d303ca0b $ 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 [FAILED] (Look at /var/log/vboxadd-install.log to find out what went wrong) Doing non-kernel setup of the Guest Additions [ OK ] その後、仮想マシンを停止&起動すればフォルダ同期もできた >vagrant halt ==> default: Attempting graceful shutdown of VM... >vagrant up ==> default: Mounting shared folders... default: /vagrant => C:/vagrant/refirio_net default: /var/www/html/test => C:/localhost/home/refirio_net/public_html/test ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run. ■起動しようとすると「flag to force provisioning. Provisioners marked to run always will still run.」と表示されるがブラウザでアクセスできない >vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Clearing any previously set forwarded ports... ==> default: Vagrant has detected a configuration issue which exposes a ==> default: vulnerability with the installed version of VirtualBox. The ==> default: current guest is configured to use an E1000 NIC type for a ==> default: network adapter which is vulnerable in this version of VirtualBox. ==> default: Ensure the guest is trusted to use this configuration or update ==> default: the NIC type using one of the methods below: ==> default: ==> default: https://www.vagrantup.com/docs/virtualbox/configuration.html#default-nic-type ==> default: https://www.vagrantup.com/docs/virtualbox/networking.html#virtualbox-nic-type ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 80 (guest) => 8080 (host) (adapter 1) default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key ==> default: Machine booted and ready! [default] GuestAdditions 5.2.2 running --- OK. ==> default: Checking for guest additions in VM... ==> default: Configuring and enabling network interfaces... ==> default: Rsyncing folder: /cygdrive/c/Users/Yamano/Vagrant/nokai-school/ => /vagrant ==> default: Mounting shared folders... default: /var/www => C:/Users/Yamano/Vagrant/nokai-school/code ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run. SSHで接続し、Apacheが起動できているかを確認する。後述の「Apacheを自動起動できない」も参照 また、「フォルダ同期の設定を行ったらエラーになる」と同様、以下で起動できたことがあった >vagrant plugin install vagrant-vbguest >vagrant halt >vagrant up ■起動しようとすると「Path: C:/Users/Refirio/.vagrant.d/data/machine-index/index」と表示される 停電から復旧後、仮想マシンを起動しようとすると以下のエラーが表示された C:\vagrant\homestead\Homestead>vagrant up The machine index which stores all required information about running Vagrant environments has become corrupt. This is usually caused by external tampering of the Vagrant data folder. Vagrant cannot manage any Vagrant environments if the index is corrupt. Please attempt to manually correct it. If you are unable to manually correct it, then remove the data file at the path below. This will leave all existing Vagrant environments "orphaned" and they'll have to be destroyed manually. Path: C:/Users/Refirio/.vagrant.d/data/machine-index/index 強制終了によりロックファイルが残っている 案内されているように、以下のフォルダ内にあるファイルを削除すれば起動できるようになった C:\Users\Refirio\.vagrant.d\data\machine-index vagrant up実行で,SYSTEM_SERVICE_EXCEPTIONでブルースクリーンになる時 http://nanoappli.com/blog/archives/8114 さらに連続して何度か停電にあった後、起動時に以下のようなエラーが大量に表示されるようになった PC自体を再起動しても表示される VagrantというよりHomesteadに異常が発生していると思われるが要調査 ==> homestead-7: Mounting shared folders... homestead-7: /vagrant => C:/localhost/home/asims2/public_html/Homestead homestead-7: /home/vagrant/code => C:/localhost/home/asims2/public_html/code C:/HashiCorp/Vagrant/embedded/mingw64/lib/ruby/2.4.0/json/common.rb:156:in `parse': 751: unexpected token at '' (JSON::ParserError) from C:/HashiCorp/Vagrant/embedded/mingw64/lib/ruby/2.4.0/json/common.rb:156:in `parse' from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-2.0.1/lib/vagrant/action/builtin/mixin_synced_folders.rb:236:in `cached_synced_folders' ■起動しようとすると「default: Warning: Authentication failure. Retrying...」と表示される vagrant upコマンド実行時にAuthentication failure.エラーが発生する - Qiita https://qiita.com/shyse/items/9ec50b868b90f847c75f 上記ページより、以下の原因により鍵認証ができなくなることがあるらしい 鍵を配置し直すことで対応はできるらしい(未検証)
Vagrant 1.7 以降では、vagrant up 時に旧来の insecure_key を検知した場合、 その仮想マシン用の別の鍵ペアを生成して insecure_key を置き換える。 生成した秘密鍵は .vagrant/machines/default/virtualbox/private_key に置かれ、 それ以降そのマシンへのアクセスは新しい鍵が使われるようになり、insecure_key での SSH はできなくなる。
■起動しようとすると「The guest machine entered an invalid state while waiting for it to boot.」と表示される 以下を実行すると起動できた >vagrant plugin update >vagrant plugin install vagrant-vbguest >vagrant halt >vagrant up 【Vagrant】非常に稀なVagrantの問題が発生した際の解決方法(のうちの一つ) - Qiita https://qiita.com/sola-msr/items/604614353e678f7d2d08 ■起動しようとすると「There was an error when attempting to rsync a synced folder.」と表示される Cygwinとの兼ね合いで正しく起動できないことがあるみたい Vagrantfileの
config.vm.synced_folder "./code", "/var/www"
この部分を以下のように変更すれば起動できた もしくはこの編集なしに、Windowsを再起動することで対応できるかもしれないが未確認
config.vm.synced_folder "./", "/vagrant", type: "virtualbox" config.vm.synced_folder "./code", "/var/www", create: true, type: "virtualbox" config.winnfsd.uid=1 config.winnfsd.gid=1
Windows10+Vagrant+VirtualBoxでrsyncが失敗する - forget for get https://lightwill.hatenablog.com/entry/2018/03/01/010040 ■Apacheを自動起動できない Apacheの自動起動を設定しても、Vagrantを起動し直すと停止している SSHで接続してから以下を実行すると大丈夫 $ sudo service httpd restart 原因と思われるものが以下に記載されている Vagrantのup時、httpdが自動起動しないとき - Qiita https://qiita.com/ooba1192/items/96b7ab25d2bda1676aaa Vagrant上のCentOSでhttpd.confをVagrant共有ディレクトリのシンボリックリンクにしているとOSブート時にhttpdが自動起動しない #vagrant #apache - nori3tsu's blog http://nori3tsu.hatenablog.com/entry/2014/03/22/123313 「/etc/init.dの起動スクリプトが実行されるタイミングで/vagrantディレクトリがマウントされていないことが原因」とのこと Vagrantfile 内の最後にある「end」の前の行に、以下を追加すれば改善できた これにより、Vagrant起動時にApacheを常に再起動させている
config.vm.provision :shell, run: "always", :inline => <<-EOT sudo service httpd restart EOT
■「yum -y update」を実行するとエラーになる
config.vm.box = "centos72"
の設定でVagrantを立ち上げ、「yum -y update」を実行すると以下のエラーになった # yum -y update Downloading packages: warning: /var/cache/yum/x86_64/7/puppetlabs-pc1/packages/puppet-agent-1.10.14-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID ef8d349f: NOKEY file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs-PC1 から鍵を取得中です。 The GPG keys listed for the "Puppet Labs PC1 Repository el 7 - x86_64" repository are already installed but they are not correct for this package. Check that the correct key URLs are configured for this repository. Failing package is: puppet-agent-1.10.14-1.el7.x86_64 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs-PC1 リポジトリを追加すればいいらしい yum update できなかったCentOS6 - Qiita https://qiita.com/teru855/items/cfe4b71bf1af14b9b05a 以下でリポジトリを追加してから再度「yum -y update」を実行すると完了できた # rpm -Uvh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm もしくは、以下を実行しても対応できた が、先のコマンドのほうが一行で済むのでいいかも # curl -L https://yum.puppetlabs.com/RPM-GPG-KEY-puppet -o /tmp/RPM-GPG-KEY-puppet # gpg --with-fingerprint "/tmp/RPM-GPG-KEY-puppet" # cp /tmp/RPM-GPG-KEY-puppet /etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs-PC1 centos7.2でyum updateした際のエラー - 猫のプロトコル https://protocol.nekono.tokyo/2018/09/13/centos7-2%E3%81%A7yum-update%E3%81%97%E3%81%9F%E9%9A%9B%E3%... ■外部CSSを修正しても反映されない インラインで調整した場合には反映されないが、 丸ごと書き換えるとファイルサイズの差分だけ反映される?ような現象が発生する sendfileでキャッシュされている可能性がある # vi /etc/httpd/conf/httpd.conf で EnableSendfile off と設定されていることを確認する。 バーチャルホストやユーザディレクトリを使用している場合、 対象ディレクトリに対して以下の設定を追加する <Directory "/path/to/target"> EnableMMAP Off EnableSendfile Off </Directory> その後Webサーバを再起動する # service httpd restart Nginxの場合も、以下の設定で同様に調整できる sendfile off; VagrantでCSSの更新が反映されない場合の対処法 http://qiita.com/shoyan/items/12389d5beaa8695b1a53
■Vagrantコマンドメモ
vagrant --version ... バージョン確認 vagrant -v ... 同上 vagrant init xxx ... 仮想マシン初期化 vagrant up ... 仮想マシン起動 vagrant halt ... 仮想マシン停止 vagrant reload ... 仮想マシン再起動 vagrant destroy ... 仮想マシン破棄 vagrant share ... 仮想マシン状態確認 vagrant box add xxx https://xxx.yyy/zzz ... URLからボックスを追加 vagrant box add xxx C:\xxx\yyy\xxx.box ... ローカルのボックスを追加 vagrant box list ... ボックス一覧を表示 vagrant box remove xxx ... ボックスを削除