HTTP

WEBサイト作成

VirtualBoxとVagrantで仮想マシン作成 【仮想化ソフトの中で開発環境のイメージをシェアする】


仮想環境構築の流れ

話の流れを整理するとこんな感じです。

  1. Windows内でIISとApache⇒切り替えが面倒
  2. Windows内でIIS、仮想化ソフトでLinux&Apache&MySQL環境(仮想マシン)を構築⇒作業が大変
  3. Windows内でIIS、仮想化ソフトでテンプレート使って環境(仮想マシン)構築⇒楽チン

テンプレート(イメージファイル)で開発環境シェアという発想は、ローカルPC上で開発環境をシェアして、互換性からくるエラーのリスクが減らすということであり、仕組みとして必要になるのは以下の4つになります。

  1. 仮想化ソフト(VM)
  2. Vagrant本体
  3. Vagrantファイル
  4. boxテンプレート

仮想化ソフト(プロバイダー)はOracleのVirtualBoxを使う事例が圧倒的に多いようなので、今は使っていないVM WareをアンインストールしてOracleのVirtualBoxをインストールしました。

またVagrant本体と設定ファイルであるVagrantfileでもって、開発環境のテンプレートであるboxを仮想化ソフトに展開し、仮想マシンを作成します。

WordPress開発環境のboxイメージとして有名なVCCW(Vagrant Chef Centos Wordress)のGITをクローンしますが、実行時にPC側のBIOSの仮想化支援機能をEnableにしておかないと、SSH接続時にエラーが出ます。

$ git clone https://github.com/miya0001/vccw.git

これだけでWindowsのVirtualBox上でCentOSを動かし、Chefを使ってWordPress環境を自動構築するという管理をVagrantで行なうことができます。

Cygwin64 Terminal

ローカルWindows環境から一歩インターネットの世界に出ると、サーバーのほとんどがUNIXであるため、Windowsで使える端末エミュレータ(ターミナル+シェル)と言えば、必然的にUNIX(カーネル)に繋いでCUIターミナル上で操作するもの、ということになります。

emulateは「真似る」という意味であり、一般的にエミュレーションとはWindows上のターミナルから打ち込んだシェルコマンドでUNIXカーネルを操作することであり、操作対象となるUNIXはインターネット上のサーバーにあったり、ローカルPC内の仮想マシンにあったりしますが、リモートであろうとローカルであろうと、SSH通信接続が主流です。

MacはもともとUNIXベースなのでデフォルトでターミナルというUNIX端末エミュレータが付いています。

Windows7にはデフォルトの端末エミュレータとしてPowerShellというのがありますが、如何せんコマンドがWindows専用、UNIX互換コマンドライン環境はありません。

自分の場合、VPSサーバー操作のためにPuTTYはインストールしていますが、いかんせんPuTTYはリモートSSH接続するときのターミナルの通信機能だけ切り取ったようなソフトなので、今回の仮想マシン作成のためにCygwin64をインストールしました。

ただし仮想マシン用のboxテンプレートはGITをクローンするので、Cygwin64でgitコマンドが使えるようにGITをインストールしておく必要があります。

仮想マシンの実行プロセス

まずクローンしたboxを確認します。

$ vagrant box list
miya0001/vccw (virtualbox, 2.19.0)

VCCWのGITをクローンした時点でvagrantfileも同梱されていますので、initで初期化してvagrantfileを作成しようとすると「既に存在します」と怒られます。

$ vagrant init vccw
`Vagrantfile` already exists in this directory. Remove it before
running `vagrant init`.

vagrantの初回起動時に、GITをクローンしたvccw.devというboxイメージをプロバイダーであるVirtualBoxにaddすることにより、virtualbox上で起動するようになります。

またvagrantfileの設定に基づいて必要なリソースをダウンロードするプロビジョニング(Provisioning)が実行されますので、起動するまで時間がかかります。

$ vagrant up
Bringing machine 'vccw.dev' up with 'virtualbox' provider...
==> vccw.dev: Box 'miya0001/vccw' could not be found. Attempting to find and install...
    vccw.dev: Box Provider: virtualbox
    vccw.dev: Box Version: >= 0
==> vccw.dev: Loading metadata for box 'miya0001/vccw'
    vccw.dev: URL: https://atlas.hashicorp.com/miya0001/vccw
==> vccw.dev: Adding box 'miya0001/vccw' (v2.19.0) for provider: virtualbox
    vccw.dev: Downloading: https://atlas.hashicorp.com/miya0001/boxes/vccw/versions/2.19.0/providers/virtualbox.box
==> vccw.dev: Box download is resuming from prior download progress
    vccw.dev:
==> vccw.dev: Successfully added box 'miya0001/vccw' (v2.19.0) for 'virtualbox'!
==> vccw.dev: Importing base box 'miya0001/vccw'...
==> vccw.dev: Matching MAC address for NAT networking...
==> vccw.dev: Checking if box 'miya0001/vccw' is up to date...
==> vccw.dev: Setting the name of the VM: vccw.dev
==> vccw.dev: Auto-generating node name for Chef...

//省略

==> vccw.dev: * template[/etc/motd] action create
==> vccw.dev:  (up to date)
==> vccw.dev: [2016-01-20T16:31:43+00:00] INFO: execute[a2ensite wordpress.conf] sending restart action to service[apache2] (delayed)
==> vccw.dev: Recipe: apache2::default
==> vccw.dev:
==> vccw.dev: * service[apache2] action restart
==> vccw.dev: [2016-01-20T16:31:47+00:00] INFO: service[apache2] restarted
==> vccw.dev:
==> vccw.dev: - restart service service[apache2]
==> vccw.dev:
==> vccw.dev:
==> vccw.dev: [2016-01-20T16:31:47+00:00] INFO: Chef Run complete in 843.305980276 seconds
==> vccw.dev:
==> vccw.dev: Running handlers:
==> vccw.dev: [2016-01-20T16:31:47+00:00] INFO: Running report handlers
==> vccw.dev: Running handlers complete
==> vccw.dev:
==> vccw.dev: [2016-01-20T16:31:47+00:00] INFO: Report handlers complete
==> vccw.dev: Chef Client finished, 37/231 resources updated in 846.788885529 seconds

HP@HP-PC ~/vccw
$

プロビジョニングとは本来、ネットワークやコンピューターの設備などのリソースを提供できるよう予測し準備しておくことであり、供給や設備等の意味を表すプロビジョン(provision)という単語がもととなって派生した言葉です。

これで仮想マシンが起動しましたので、ホストPC上からhttp://192.168.33.10/でWordPressが起動し、物理ファイルはboxディレクトリ内の/www/wordpressに存在します。

ちなみに2回目以降のvagrantの起動はあっさり終わります。

$ vagrant up
Bringing machine 'vccw.dev' up with 'virtualbox' provider...
==> vccw.dev: Checking if box 'miya0001/vccw' is up to date...
==> vccw.dev: Clearing any previously set forwarded ports...
==> vccw.dev: Clearing any previously set network interfaces...
==> vccw.dev: Preparing network interfaces based on configuration...
    vccw.dev: Adapter 1: nat
    vccw.dev: Adapter 2: hostonly
==> vccw.dev: Forwarding ports...
    vccw.dev: 22 (guest) => 2222 (host) (adapter 1)
==> vccw.dev: Running 'pre-boot' VM customizations...
==> vccw.dev: Booting VM...
==> vccw.dev: Waiting for machine to boot. This may take a few minutes...
    vccw.dev: SSH address: 127.0.0.1:2222
    vccw.dev: SSH username: vagrant
    vccw.dev: SSH auth method: private key
    vccw.dev: Warning: Remote connection disconnect. Retrying...
==> vccw.dev: Machine booted and ready!
==> vccw.dev: Checking for guest additions in VM...
==> vccw.dev: Setting hostname...
==> vccw.dev: Configuring and enabling network interfaces...
==> vccw.dev: Mounting shared folders...
    vccw.dev: /vagrant => C:/cygwin64/home/HP/vccw
    vccw.dev: /var/www/wordpress => C:/cygwin64/home/HP/vccw/www/wordpress
    vccw.dev: /tmp/vagrant-chef/c7ebca6d77af9158fff141a6f118ee56/cookbooks => C:/cygwin64/home/HP/vccw/provision/cookbooks
    vccw.dev: /tmp/vagrant-chef/7d5350f7934765ca44a15807f16805d5/cookbooks => C:/cygwin64/home/HP/vccw/provision/site-cookbooks
==> vccw.dev: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> vccw.dev: flag to force provisioning. Provisioners marked to run always will still run.
HP@HP-PC ~/vccw
$

一回仮想マシンを削除した後に再度vagrantを起動するとまた少し時間がかかります。

$ vagrant up
Bringing machine 'vccw.dev' up with 'virtualbox' provider...
==> vccw.dev: Importing base box 'miya0001/vccw'...
==> vccw.dev: Matching MAC address for NAT networking...
==> vccw.dev: Checking if box 'miya0001/vccw' is up to date...
==> vccw.dev: Setting the name of the VM: vccw.dev
==> vccw.dev: Auto-generating node name for Chef...
==> vccw.dev: Clearing any previously set network interfaces...
==> vccw.dev: Preparing network interfaces based on configuration...
    vccw.dev: Adapter 1: nat
    vccw.dev: Adapter 2: hostonly
==> vccw.dev: Forwarding ports...
    vccw.dev: 22 (guest) => 2222 (host) (adapter 1)
==> vccw.dev: Running 'pre-boot' VM customizations...
==> vccw.dev: Booting VM...
==> vccw.dev: Waiting for machine to boot. This may take a few minutes...
    vccw.dev: SSH address: 127.0.0.1:2222
    vccw.dev: SSH username: vagrant
    vccw.dev: SSH auth method: private key
    vccw.dev: Warning: Remote connection disconnect. Retrying...
    vccw.dev:
    vccw.dev: Vagrant insecure key detected. Vagrant will automatically replace
    vccw.dev: this with a newly generated keypair for better security.
    vccw.dev:
    vccw.dev: Inserting generated public key within guest...
    vccw.dev: Removing insecure key from the guest if it's present...
    vccw.dev: Key inserted! Disconnecting and reconnecting using new SSH key...
==> vccw.dev: Machine booted and ready!
==> vccw.dev: Checking for guest additions in VM...
==> vccw.dev: Setting hostname...
==> vccw.dev: Configuring and enabling network interfaces...
==> vccw.dev: Mounting shared folders...
    vccw.dev: /vagrant => C:/cygwin64/home/HP/vccw
    vccw.dev: /var/www/wordpress => C:/cygwin64/home/HP/vccw/www/wordpress
    vccw.dev: /tmp/vagrant-chef/c7ebca6d77af9158fff141a6f118ee56/cookbooks => C:/cygwin64/home/HP/vccw/provision/cookbooks
    vccw.dev: /tmp/vagrant-chef/7d5350f7934765ca44a15807f16805d5/cookbooks => C:/cygwin64/home/HP/vccw/provision/site-cookbooks
==> vccw.dev: Running provisioner: chef_solo...
==> vccw.dev: Detected Chef (latest) is already installed
==> vccw.dev: Generating chef JSON and uploading...
==> vccw.dev: Running chef-solo...

//途中省略

==> vccw.dev: [2016-01-23T16:07:36+00:00] INFO: Chef Run complete in 9594.780249836 seconds
==> vccw.dev:
==> vccw.dev: Running handlers:
==> vccw.dev: [2016-01-23T16:07:36+00:00] INFO: Running report handlers
==> vccw.dev: Running handlers complete
==> vccw.dev:
==> vccw.dev: [2016-01-23T16:07:36+00:00] INFO: Report handlers complete
==> vccw.dev: Chef Client finished, 35/231 resources updated in 9596.505026441 seconds

HP@HP-PC ~/vccw
$

vagrantファイル

ホストPCから仮想マシンのhttpdサーバーにアクセスするためのIPアドレス192.168.33.10というのはvagrantfileから呼び出している設定ファイル/provision/default.yml内に定義されています。

# General Settings
wp_box: miya0001/vccw
chef_cookbook_path: ./provision

# Virtual Machine Settings
memory: 512
cpus: 1

# Network Settings
hostname: vccw.dev
ip: 192.168.33.10
sync_folder: 'www/wordpress'

# WordPress Settings
version: latest
lang: en_US
title: Welcome to the VCCW
multisite: false
rewrite_structure: /archives/%post_id%

# WordPress Path
document_root: '/var/www/wordpress'
wp_siteurl: ''  # Path to the WP_SITEURL like "wp"
wp_home: ''     # Path to the WP_HOME like "wp"

# WordPress User
admin_user: admin
admin_pass: admin
admin_email: vccw@example.com

# WordPress Database
db_prefix: wp_
db_host: localhost

# WordPress Default Plugins
# Plugin's slug or url to the plugin's slug.
plugins:
  - dynamic-hostname
  - wp-total-hacks
  - tinymce-templates

# WordPress Default Theme
# Theme's slug or url to the theme's .zip.
theme: ''

# WordPress Options
options:
  blogdescription: Hello VCCW.

# The values of wp-config.php
force_ssl_admin: false
wp_debug: true
savequeries: false

# Theme unit testing
theme_unit_test: false
theme_unit_test_uri: https://wpcom-themes.svn.automattic.com/demo/theme-unit-test-data.xml
# theme_unit_test_uri: https://raw.githubusercontent.com/jawordpressorg/theme-test-data-ja/master/wordpress-theme-test-date-ja.xml

# DB will be reset when provision
reset_db_on_provision: true

# Are you hurrying a lot?
disable_vccw_cookbook: false

# User and Group
user: vagrant
group: vagrant

# phpenv
php_version: default

# Linked Clone for Vagrant v1.8
linked_clone: false

仮想マシンへの接続

仮想マシンとしてCentOSのApacheサーバー上でのWordPress環境が起動し、ホストPCからアクセスできるようになりましたが、仮想マシンへの接続は、vagrantの専用コマンドvagrant sshがあります。

$ vagrant ssh
Last login: Thu Jan  7 01:56:47 2016 from 10.0.2.2
                   ___           ___           ___
      ___         /  /\         /  /\         /__/\
     /__/\       /  /:/        /  /:/        _\_ \:\
     \  \:\     /  /:/        /  /:/        /__/\ \:\
      \  \:\   /  /:/  ___   /  /:/  ___   _\_ \:\ \:\
  ___  \__\:\ /__/:/  /  /\ /__/:/  /  /\ /__/\ \:\ \:\
 /__/\ |  |:| \  \:\ /  /:/ \  \:\ /  /:/ \  \:\ \:\/:/
 \  \:\|  |:|  \  \:\  /:/   \  \:\  /:/   \  \:\ \::/
  \  \:\__|:|   \  \:\/:/     \  \:\/:/     \  \:\/:/
   \__\::::/     \  \::/       \  \::/       \  \::/
       ~~~~       \__\/         \__\/         \__\/

http://vccw.cc/

Initial code by Takayuki Miyauchi.
https://github.com/miya0001
[vagrant@vccw ~]$

これはVirtualBoxで起動しているウィンドウ内のCentOSからユーザーID:vagrant, パスワード:vagrantでログインしているのと同じです。
仮想マシンへの接続

ステータスの確認

仮想マシン起動前

$ vagrant status
Current machine states:
vccw.dev                  poweroff (virtualbox)
The VM is powered off. To restart the VM, simply run `vagrant up`

仮想マシン起動後

$ vagrant up
$ vagrant status
Current machine states:
vccw.dev                  running (virtualbox)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

仮想マシン削除後

$ vagrant destroy
$ vagrant status
Current machine states:
vccw.dev                  not created (virtualbox)
The environment has not yet been created. Run `vagrant up` to
create the environment. If a machine is not created, only the
default provider will be shown. So if a provider is not listed,
then the machine is not created for that environment.





おすすめ記事一覧

1

よく会計の世界では「利益と減価償却でキャッシュを作る」と言われ、これは企業のキャッシュの源泉が利益と減価償却の二種類あるという意味なのですが、減価償却費はキャッシュの流出のない費用であり、P/L上の当期利益額よりも実際には減価償却費分だけキャッシュは多く残っているという数字遊びをしているだけで、物理的にキャッシュが生み出されるわけではありません。

2

毎月の生産でいくらコストがかかったかを計算する原価計算(実際原価)業務は、インドネシアではシステム化されている事例は少なく、細かく計算すれば時間がかかり、どんぶり勘定だと見たい情報が見られず、コロナ禍の影響で時間に余裕が出来た今は収益改善という観点から原価計算のやり方を見直す絶好の機会です。

3

ジャカルタでは、2019年4月にMRT地下鉄の第1期区間(総延長15.7km)が正式開通しましたが、コロナ禍の中にあった今年6月に、現在の始発駅であるPlaza Indonesia前のBendaran HI駅から、北ジャカルタのKotaまでの6.3km、西ジャカルタのアンチョールの車両基地までの5.2kmの総延長11.5km(11駅)を第2期区間として工事が開始されました。

4

2014年に誕生したジョコウィ政権は、事あるごとに中国寄りと言われ、2015年に中国と日本が受注合戦を繰り広げ日本の新幹線方式での導入が確実視されていたジャカルタ~バンドゥン高速鉄道案件では、インドネシア政府が手のひら返し中国案に鞍替えし、日本を袖にしたのは記憶に新しいところですが、南シナ海の南方にあるナトゥナ諸島周辺の排他的経済水域(EEZ)は、中国が主権を主張する「九段線」と呼ばれる境界と重複しており、中国漁船が公船を伴って活動する違法漁業問題で中国と対立しています。

大統領選挙で考えたギャップにハマるということ 5

ギャップにキュンとするというのは人間の本能みたいなもので、ジョコウィの私利私欲のない素朴なおじさん像と、その実強力なリーダーシップを発揮する実務派という内面が、一見普通の人だが実はスゴイというギャップ好きのインドネシア人に大ウケして、大衆は一種の集団催眠状態にあるようです。

情報の質のレベル 6

見える化された結果を共有化することで問題点が共通認識されますが、共有化が進むことで情報の持つ希少価値が薄れて困る人間がいる場合、有益な情報を独占することでポジションを高めようという政治力が働きます。

7

日本人がインドネシアに来ると、インドネシア人ののんびり加減にイライラするというのは昔からよく聞く話で、インドネシア在住日本人にとってのバイブル的小説である深田祐介著「ガルーダ商人」の中でも、インドネシア宗教省の高官が日本人とインドネシア人を自宅に招待する際に、インドネシア人向けの招待状には、遅刻することを前提にパーティ開始時間を三十分早く書いておくという記述があるほどです。

宗教によって異なる「死んだらどうなる」の考え方 8

キリスト教もイスラム教もともにユダヤ教から派生した宗教であり、それぞれイエス・キリスト(本人が神)またはアッラーという唯一無二の神を信じます。

株価操作なんてインドネシア株では当たり前 9

株価は売り注文と買い注文により変動し、大量の売り注文を買う注文がたくさん入れば、他の投資家達は「俺も俺も」と続くことで株価が上がります。

心臓に毛が生えたインドネシア人のずうずうしい転職活動を応援してみた 10

インドネシア人は秘密の話は誰かに暴露しないと精神の安定を保てない人が多いため、内緒の話に情報の希少性は少なく信憑性も低いことが多いので、「ここだけの話」という枕詞付きで聞かされる話は話半分に聞いておいたほうがいいかもしれません。

日系企業のインドネシアでの存在意義 11

今のまま日本の人口減が続けば、内需は縮小の一途をたどるわけで、そうなると日本国内市場だけで生き残るのは難しいと判断する国内企業が、海外市場に活路を見出そうとするのは必然です。

チャンスはあるが勝てる分野を見つけるのが難しい 12

実際にインドネシアに住んでみて、自分で動いて人と話しをして、現地の事情を少しずつ理解していくにつれて、インドネシアで起業することが意外と手強いことに気づき、その難しさの原因は、高い送料と関税であったりローカル企業との競争であったり、就労ビザ(IMTA)や外国人技能開発基金(DPKK)などのランニングコストの高さであったりします。

インドネシアのシステムインテグレーション業界 13

先日JETRO(日本貿易振興機構)さんと、インドネシアの中小企業のIT投資について意見交換させていただく機会をいただいたのですが、そこで「システム投資のコストメリットはどのように説明できるのか」という、システムインテグレーターの存在価値にも関わる重要な問題提起がありました。

肉体と精神と心と魂 14

「Body and Soul」といえば、昨日の内閣改造に伴う人事で内閣府政務官に内定した自民党の今井絵理子参議院員がメンバーだったSPEEDのデビュー曲であり、インドネシアの老舗女性ファッションブランド名でもあります。

ジャカルタのラーメン市場 15

僕がインドネシアに初めて来たのが1997年10月、インドネシア語は分からないし、仕事は辛いし、周囲の人間は理不尽だし、一時期日本に帰りたくて仕方がない時期がありましたが、当時自分をかろうじてインドネシアに繋ぎ止める心の支えとなっていたのが、協栄プリンスビル(今のWisma Keiai)の日本食レストラン「五右衛門」であり、ここでキムチラーメンを食べることが唯一の楽しみと言っても過言ではありませんでした。

ブランド力、技術力、資金力の3要素 16

1998年のジャカルタ暴動後、ルピアが暴落し海外からのドル建て債務を抱えた国内企業が利子の支払いに苦しんでいた頃、僕は外貨が獲得できるインドネシアでの新しいビジネスを探していました。

日本とインドネシアの間でのタイムマシン経営が通じなくなっている件 17

先進国と後進国との間にある流行のタイムラグを利用して、先進国での成功例を後進国で実践するビジネスモデルをタイムマシン経営といいますが、インターネットの普及に伴い情報がフラット化してしまい、モノと情報のタイムラグが限りなく小さくなった今、先駆者である中小零細同業他社が乱立し市場が出来上がったところに、後発の大手が参入し先発零細を駆逐していく、という典型的な負けパターンにはまります。

サリナデパートとマクドナルド 18

本日5月10日を最後にインドネシアのマクドナルド第1号店であるサリナデパート店(Sarinah)が閉店になりますが、ジャカルタのショッピングモールが新しいコンセプトでモダンにリニューアルされ続ける中で、僕がインドネシアに来たばかりの20数年前には、若者の待ち合わせ場所の定番でもあったサリナデパートやブロックMのパサラヤ(Pasaraya)などは完全に時代に取り残されてしまいました。

不景気の歴史 19

僕がインドネシアに来てからこれまで何度か経済不況を見てきましたが、今回の新型コロナウィルスの感染拡大により、間違いなく景気後退しますので、数年後にはこれがコロナショックとかコロナ不況とか呼ばれるようになるのかもしれません。

日本のバブル経済崩壊後とインドネシアの通貨危機後 20

自分が大学に入学したのがバブル経済末期の1991年、土地も株価もMAX爆上げして、三菱地所がアメリカの象徴であるロックフェラーセンタービルを買収し、ジュリアナ東京でワンレンボディコン(登美丘高校ダンス部のバブリーダンスみたいなやつ)のお姉さん達が扇子振って踊っている時期でした。

内需と外需の自国経済に及ぼす影響 21

公共事業投資を行っても、お金が企業内や個人の貯蓄に滞留してしまい国内消費が増えないのが日本の状況であり、国内消費は増えても消費材の輸入品比率が高く、国内資産が海外に流出しているのがインドネシアの状況です。

2019年の総選挙を前にインドネシア政治史のおさらい 22

来年の大統領選挙(Pemilu Pilpres Pileg Indonesia 2019)に向けての選挙運動(Kampanye)を解禁するにあたり、投票用紙に印字される順番はジョコウィ現職大統領・マフル副大統領候補組が1番、プラボウォ大統領候補・サンディアガウノ副大統領候補組が2番と決まりました。

コーヒーをもっと楽しくもっと美味しく 23

インドネシアは北回帰線と南回帰線をはさむコーヒーベルトに位置するコーヒー栽培に適した国で、1602年の東インド会社の進出を契機にオランダの植民地支配が300年以上続き、その間アラビカ種のコーヒーが持ち込まれ、気候のいい高原地帯で栽培が開始されました。

インドネシア人の悪魔祓い 24

人間誰しも自分の中に悪魔が潜んでおり、それが何らかのきっかけで表面に出て来るという考え方自体には、背景に宗教が有るか無いかの違いだけで、基本的に理解できる話であり、それを信じるか信じないかは別として、そういう考えがあることを認めることは大切なことだと思います。

-WEBサイト作成

© 2020 バテラハイシステム Powered by STINGER