Webサーバーの仕組み
公開用サーバーとローカル環境
Webサイトは、Webサーバーにアップします。
でも、開発中のものを誰の目にも触れるサーバーにアップするわけにはいきません。
また、公開用サーバーとして使えるサーバーは高負荷にも耐えられる代わりに高価だったりします。
Webサイトの開発中は、公開用のサーバーのほかに、ステージング用サーバーといって最終確認をするサーバーを使うこともあります。また、そのほかに、各開発者は、自分のパソコンの中にローカル環境と呼ばれるWebサーバーを構築して、その上でデバッグや動作確認することになります。
サーバーはレンタルサーバーを借りるのが良いです。ほとんどのサーバーにはLinuxというOSがインストールされていて、その中でapache(アパッチ)やNginx(エンジンエックス)というようなWebサーバーのアプリが、Webページを公開しています。
つまり、誰かがブラウザでサーバーにアクセスすると、apacheがそのアクセス要求に対して、該当するページのデータを送るんです。
そして、動的な(アクセスするたびに表示内容を変えられる)Webサイトを作るのに、プログラム言語として人気のあるものの一つにPHP(ピーエイチピー)があります。
また、データを管理するのにデータベースを使います。人気のあるのはデータベースソフトにMySQL(マイエスキューエル)がありあす。Webサーバーとして使うコンピュータには、例えば、
Linux + Apache + MySql + PHP
のような構成が必要になります。
これらのアプリの頭文字をとって、
LAMP(ランプ)
と呼んだりします。
LAMP環境をWindowsパソコンにもインストールすれば、自分のパソコン(これをローカル環境と呼ぶこともあります。)でWebの開発を進めることができるんです。
Webサイトが完成したら、実際に公開するために、レンタルサーバーにWebサイトをコピーすればよいのです。
で、レンタルサーバーもいろんなレベルがあって、どこまで自分でインストールするかというのが選べるんですが、とりあえず、この記事では、ローカル環境(自分のパソコンって意味ですね)に、LAMPをインストールする手順を説明します。
Windowsパソコンでのローカル環境の構築には、XAMPPを使うかVagrantを使うか選べます
ローカル環境の構築ですが、Windowsでは、XAMPPというパッケージソフトをインストールするか、Vagrant(ベイグラント)という、仮想環境を管理するソフトを使う方法が選べます。
XAMPP
XAMPPは、Apache、MariaDB(Mysqlの後継)、PHP、Perl がセットになったWeb開発環境です。Windows版、Mac版、Linux版などがあって、Windows版をインストールすれば、簡単にWeb開発環境が構築できます。
でも、Windows版はWindowsアプリとなるので、通常Linuxで構築される公開用Webサーバーとの違いが大きくなります。つまり再現性が低くなります。
また、例えば、Mysqlを使いたいとか、特定のPHPバージョンを使いたいとかを言い出すと、結局、追加でインストールしなければいけなくなるのですが、だんだん面倒が増えてきます。
基本的には、XAMPPのパッケージの場合、そのままのバージョンで使うというのが良いでしょう。
手軽だけど、公開用Webサーバーと違いがある、細かくバージョンを設定するのが面倒というのが特徴です。
Vagrant
正確には、Vagrant + Virtualbox + Linux + Apache + Mysql + PHP をインストールすることになります。
Virtualbox というのが仮想マシンといって、Windowsの中に、もう一つパソコンがあるふりをしてくれるソフトになります。
例えば、Virtualbox をインストールすれば、その中に、Windowsをインストールすることも、Mac OS をインストールすることもできるんです。仮想のパソコンになるんですね。
で、Vagrantは、Virtualbox を管理するためのコマンドラインツールです。Virtualbox は、GUI(グラフィックユーザインターフェース)で操作するため、マウスでボタンをクリックしていったりしないと使えないんですが、それだと、自動化するのが大変ですし、たくさんの仮想マシンに全く同じ環境を構築したり再現させるのが大変になるんです。
そこでVagrantを使うことにより、設定ファイルを書いておけば、何回やっても間違いなく同じ環境を構築することができるんです。
Vagrantの設定ファイルを人に見せれば、その人も同じ環境を楽に構築できるんです。
複数人でWebサイトを開発しているとき、みんなが自分のパソコンに同じローカル環境(=仮想のサーバー)をつくるのにVagrantはとっても便利なんです。
Vagrantを使ってローカル環境を構築する手順
では、Vagrantを使ってローカル環境でWebサイトを構築する手順を説明していきます。
ちなみに、お手軽にWeb開発を体験できるXAMPPの環境の作り方は、記事「Windowsにウェブ開発環境を入れよう:MySQL付きXAMPPのインストール手順」で説明しています。
実際のところは、XAMPPもプログラミングの仕事に十分つかえます。でも柔軟性ではvagrantに分があります。
この記事では、vagrant とVirtualBoxをインストールして、仮想マシンを構築し、その仮想マシン上でLinux OS を動かすところまでを行います。
そこまでできれば、サーバーが手元に入ったことになります。あとは、そのサーバーの中にどのようなソフトを構成していくか考えていくことになります。これは次回以降とします。
手順1. vagrantのインストール
ダウンロード
vagrantのwebサイトに行きます。
「DOWNLOAD x.x.x」のボタンをクリックしてダウンロードページに移動します。
Windows用の64-bitをクリックします。もしwindowsが32bitだったら、32bit版をダウンロードしてください。
自分のWindowsが 32bitか 64bitか不明な場合は、記事「Windowsのバージョン、32bitか64bitかを調べる方法」を確認してください。
インストール
ダウンロードしたら、ファイルを実行します。
「Next」でスタートします。
ライセンスに同意します。「I accept the terms in the License Agreement」にチェックして「Next」で進みます。
インストールフォルダを設定して「Next」ですすみます。
特に変更しなくてよいです。
「Install」をクリックしてインストールを開始します。
インストールが開始します。
「Finish」で終了します。
ここで再起動を要求されます。いったん再起動しましょう。
手順2. Virtualboxのインストール
ダウンロード
VirtualboxのWebサイトへ行きます。
左側メニューから「Download」をクリックします。
最新版であるVirtualBox 6.0.0 の「Windows hosts」をクリックし、インストーラをダウンロードします。
※Windowsのビット数が32bitの場合、VirtualBox 5.2を使用してください。VirtualBox6.0は、64bitしかないとのことです。
インストール
ダウンロードしたインストーラファイルを実行します。
インストーラが起動します。「Next」で開始します。
インストール構成、フォルダを選択しますが、当初のままで問題ないです。
「Next」で進みます。
ショートカットの設定です。
Virtualboxはvagrantから使用するため、特に思い入れがなければ、チェックを外して問題ないです。スタートメニューにはあったほうが良いので、一番上だけ残しておきます。
インストールを開始します。インストール中は、ネットワークがいったん切断されるため、別用途でネットワークが切断されて困る場合は、注意してください。
「Yes」でネットワークが切断されることを了承します。
「Install」をクリックしてインストールを開始します。
インストール中です。
Oracleのドライバーのインストールの確認ウィンドウが表示されたら、「インストール」をクリックします。
「Finish」で画面を閉じます。特にVirtualBoxを開く必要はないため、インストール後のVirtualbox起動チェックは外しておきます。
インストールできているか確認
Vagrant と VirtualBoxのインストールが終わったら、コマンドプロンプトから確認しましょう。
「スタートメニュー→Windowsシステムツール→コマンドプロンプト」で、コマンドプロンプトを起動します。
vagrant -v と入力してみましょう。
下図のようにバージョンが表示されたらインストール成功しています。
手順3. Git for Windowsをインストール
上記では、vagrantのコマンドを入力するのにコマンドプロンプトを使いましたが、これだと端末アクセスするコマンドラインとしては貧弱なので、ターミナルをインストールします。
Git for Windows というのは、バージョン管理システムなのですが、gitが使えるbash環境(シェル環境)が使えます。vagrantのコマンドを使ったり、仮想マシンにSSHで接続したりするのに、bash環境が便利なので、Git for Windowsをインストールします。
インストール方法は、記事「WindowsにGitをインストールする手順」に説明しています。
手順4. 仮想マシンへOSのインストール
仮想マシン(仮想のコンピュータ)にインストールするOSを選択
OSをゼロからインストールすることもできますが、面倒なので、インストール済みのイメージをダウンロードしましょう。
最近、ノートパソコンを買っても、WindowsなどのOSの自分でインストールすることはないですよね。
Windowsがプレインストールされたパソコンを買っていると思います。
そんな感じで、すでにインストールされてある程度アプリも入ったイメージが、いろいろと公開されているので、利用しましょう。
Boxの検索
vagrant では、インストールされたイメージのことを、box(ボックス)と言います。
boxを利用することによって、セットアップ済み・インストール済みのイメージから開発を進めることができます。
ここでは、bentoシリーズのCentOS(セントオーエス、Linux OSのディストリビューション、つまり配布用セットの一つ)を使ってみます。
通常Linuxを使うときは、Linux そのままでインストールするのではなく、ディストリビューションを選んで、インストールします。ディストリビューションに含まれているのは、Linux OS自身(カーネルと呼びます)のほかに、コンパイラやスクリプト言語、ブラウザやwebやメールなどのサーバーアプリケーションです。
ディストリビューションには、CentOSのほかにも、Debian(デビアン)系列のもの、Red Hat系のものなどで、数十種類もあります。
CentOSはRed Hat系列の中の1つです。
私は業務で何度もCentOSのサーバーを扱ってきたので、ここでもCentOSを選択します。
vvagrantのBoxの検索ページへ行きます。
検索テキストボックスに、 bento centos と入力して、Enterキーを押して検索します。
「Recentry Updated」(最近更新された順表示)をクリックすると、最新バージョンとしてbento/centos-7.5 が見つかりました。これを使うことにします。
bento/centos-7.5をクリックすると、このBoxの説明が表示されます。
下図を見るとVagrantfile(vagrantの設定ファイル)への記述方法が書いてあります。
また、「New」タブをクリックすると、新規で仮想マシンを作成するためのコマンドが表示されます。
つまり、以下のコマンドを使うことによって、このBoxを使うことができるということが分かりました。
1 2 |
vagrant init bento/centos-7.5 vagrant up |
仮想マシンの作成
それでは、仮想マシンを作りましょう。
まずは、仮想マシンを管理するフォルダを作成します。
仮想マシンを管理するフォルダの作成
どこでもよいです。
私はCドライブに、
C:\data\tk\vagrant\centos7
というフォルダを順番に作りました。
centos7フォルダを右クリックして、コンテキストメニューで「Git Bash Here」をクリックすると、bashというシェルが起動します。
下図のような画面です。コマンドプロンプトに似ていますが、LinuxなどのOSで使われるシェルと言われるテキストでのコマンド入力できる端末であり、ここからvagrantを操作します。
例えば、ここで、
1 |
vagrant -v |
と入力すると、先ほどのように、vagrant のバージョンが表示されます。
仮想マシンの作成と起動
では、このフォルダを管理フォルダとして、仮想マシンを作ります。
このフォルダで次の2つのコマンドを入力します。
1 2 |
vagrant init bento/centos-7.5 vagrant up |
vagrant init で、Vagrantファイルが生成されます。
vagrant up で、Vagrantファイルの設定どおりに仮想マシンをセットアップして、起動します。
最初は、イメージをダウンロードするため、かなり時間がかかります。
通信環境にもよりますが、30分から数時間でダウンロードが終わって設定されました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
user@cf-nx2 MINGW64 /c/data/tk/vagrant/centos7 $ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Box 'bento/centos-7.5' could not be found. Attempting to find and install... default: Box Provider: virtualbox default: Box Version: >= 0 ==> default: Loading metadata for box 'bento/centos-7.5' default: URL: https://vagrantcloud.com/bento/centos-7.5 ==> default: Adding box 'bento/centos-7.5' (v201808.24.0) for provider: virtualbox default: Downloading: https://vagrantcloud.com/bento/boxes/centos-7.5/versions/201808.24.0/providers/virtualbox.box ==> default: Box download is resuming from prior download progress default: Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com default: ==> default: Successfully added box 'bento/centos-7.5' (v201808.24.0) for 'virtualbox'! ==> default: Importing base box 'bento/centos-7.5'... ==> default: Matching MAC address for NAT networking... ==> default: Checking if box 'bento/centos-7.5' is up to date... ==> default: Setting the name of the VM: centos7_default_1546175346337_32764 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: 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: 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 installedon default: your host and reload your VM. default: default: Guest Additions Version: 5.2.18 default: VirtualBox Version: 6.0 ==> default: Mounting shared folders... default: /vagrant => C:/data/tk/vagrant/centos7 user@cf-nx2 MINGW64 /c/data/tk/vagrant/centos7 $ |
上図のようになれば、仮想マシンが設定されて、しかも起動されてます。
$はコマンド入力待ち状態です。 vagrant status と入力して、状態を確認してみましょう。
1 2 3 4 5 6 7 8 9 10 |
user@cf-nx2 MINGW64 /c/data/tk/vagrant/centos7 $ vagrant status Current machine states: default 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`. |
Current machine states: が runnning となっていたら、仮想マシンが起動しています。
仮想マシンにアクセス
仮想マシンが起動したら、SSHを使って仮想マシンにアクセスしてみましょう。
vagrant up をした後、 vagrant ssh と入力することで、仮想マシンにSSHでログインできます。
下図のように、ログインすると [vagrant@localhost ~]$ の表示に変わります。
1 2 3 4 |
user@cf-nx2 MINGW64 /c/data/tk/vagrant/centos7 $ vagrant ssh Last login: Sun Dec 30 13:19:46 2018 from 10.0.2.2 [vagrant@localhost ~]$ |
この表示をコマンドプロンプトと呼びますが、プロンプトは促すという意味があり、つまりコマンドの入力待ちを意味します。
コマンドプロンプトの表示の意味ですが、
- vagrant がユーザ名、
- @localhost がホスト名です。
- ~ はカレントディレクトリで、ホームディレクトリを意味します。
- $ がコマンド入力待ち、またユーザがroot権限(管理者権限)なしの一般ユーザがログインしているという意味になります。
簡単に言うと、コマンド入力待ちということです。
OSのバージョンを確認してみましょう。
cat /etc/redhat-release と入力してみてください。
CentOS の バージョン 7.5.1804 と表示されました。
1 2 3 |
[vagrant@localhost ~]$ cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [vagrant@localhost ~]$ |
また、インストールされているパッケージ(アプリケーション)の確認をしてみます。
yum list installed と入力します。
結果は下図のようになります。
ずらずらっとインストール済みのパッケージ名が表示されます。
細かくは理解していなくても問題ありません。
このリストを見ると、apacheやPHP、Mysqlなど、LAMP環境のアプリケーションが入っていません。これらはこれからインストールしていきます。
とりあえず、ここまでできれば、仮想マシンの作成とOSインストールまでは終了です。
ログアウトして、仮想マシンの電源OFFというかシャットダウンをしておきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 |
[vagrant@localhost ~]$ yum list installed Loaded plugins: fastestmirror Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast Loading mirror speeds from cached hostfile * base: ftp.tsukuba.wide.ad.jp * extras: ftp.tsukuba.wide.ad.jp * updates: ftp.tsukuba.wide.ad.jp Installed Packages GeoIP.x86_64 1.5.0-11.el7 @anaconda NetworkManager.x86_64 1:1.10.2-16.el7_5 @updates NetworkManager-libnm.x86_64 1:1.10.2-16.el7_5 @updates NetworkManager-team.x86_64 1:1.10.2-16.el7_5 @updates NetworkManager-tui.x86_64 1:1.10.2-16.el7_5 @updates acl.x86_64 2.2.51-14.el7 @anaconda audit.x86_64 2.8.1-3.el7_5.1 @updates audit-libs.x86_64 2.8.1-3.el7_5.1 @updates audit-libs-python.x86_64 2.8.1-3.el7_5.1 @updates authconfig.x86_64 6.2.8-30.el7 @anaconda basesystem.noarch 10.0-7.el7.centos @anaconda bash.x86_64 4.2.46-30.el7 @anaconda bind-libs-lite.x86_64 32:9.9.4-61.el7 @anaconda bind-license.noarch 32:9.9.4-61.el7 @anaconda binutils.x86_64 2.27-28.base.el7_5.1 @updates biosdevname.x86_64 0.7.3-1.el7 @anaconda btrfs-progs.x86_64 4.9.1-1.el7 @anaconda bzip2.x86_64 1.0.6-13.el7 @anaconda bzip2-libs.x86_64 1.0.6-13.el7 @anaconda ca-certificates.noarch 2018.2.22-70.0.el7_5 @updates centos-logos.noarch 70.0.6-3.el7.centos @anaconda centos-release.x86_64 7-5.1804.4.el7.centos @updates checkpolicy.x86_64 2.5-6.el7 @anaconda chkconfig.x86_64 1.7.4-1.el7 @anaconda chrony.x86_64 3.2-2.el7 @anaconda coreutils.x86_64 8.22-21.el7 @anaconda cpio.x86_64 2.11-27.el7 @anaconda cracklib.x86_64 2.9.0-11.el7 @anaconda cracklib-dicts.x86_64 2.9.0-11.el7 @anaconda cronie.x86_64 1.4.11-19.el7 @anaconda cronie-anacron.x86_64 1.4.11-19.el7 @anaconda crontabs.noarch 1.11-6.20121102git.el7 @anaconda cryptsetup-libs.x86_64 1.7.4-4.el7 @anaconda curl.x86_64 7.29.0-46.el7 @anaconda cyrus-sasl-lib.x86_64 2.1.26-23.el7 @anaconda dbus.x86_64 1:1.10.24-7.el7 @anaconda dbus-glib.x86_64 0.100-7.el7 @anaconda dbus-libs.x86_64 1:1.10.24-7.el7 @anaconda dbus-python.x86_64 1.1.1-9.el7 @anaconda deltarpm.x86_64 3.6-3.el7 @anaconda device-mapper.x86_64 7:1.02.146-4.el7 @anaconda device-mapper-event.x86_64 7:1.02.146-4.el7 @anaconda device-mapper-event-libs.x86_64 7:1.02.146-4.el7 @anaconda device-mapper-libs.x86_64 7:1.02.146-4.el7 @anaconda device-mapper-persistent-data.x86_64 0.7.3-3.el7 @anaconda dhclient.x86_64 12:4.2.5-68.el7.centos.1 @updates dhcp-common.x86_64 12:4.2.5-68.el7.centos.1 @updates dhcp-libs.x86_64 12:4.2.5-68.el7.centos.1 @updates diffutils.x86_64 3.3-4.el7 @anaconda dmidecode.x86_64 1:3.0-5.el7 @anaconda dracut.x86_64 033-535.el7_5.1 @updates dracut-config-rescue.x86_64 033-535.el7_5.1 @updates dracut-network.x86_64 033-535.el7_5.1 @updates e2fsprogs.x86_64 1.42.9-12.el7_5 @updates e2fsprogs-libs.x86_64 1.42.9-12.el7_5 @updates ebtables.x86_64 2.0.10-16.el7 @anaconda elfutils-default-yama-scope.noarch 0.170-4.el7 @anaconda elfutils-libelf.x86_64 0.170-4.el7 @anaconda elfutils-libs.x86_64 0.170-4.el7 @anaconda ethtool.x86_64 2:4.8-7.el7 @anaconda expat.x86_64 2.1.0-10.el7_3 @anaconda file.x86_64 5.11-33.el7 @anaconda file-libs.x86_64 5.11-33.el7 @anaconda filesystem.x86_64 3.2-25.el7 @anaconda findutils.x86_64 1:4.5.11-5.el7 @anaconda fipscheck.x86_64 1.4.1-6.el7 @anaconda fipscheck-lib.x86_64 1.4.1-6.el7 @anaconda firewalld.noarch 0.4.4.4-14.el7 @anaconda firewalld-filesystem.noarch 0.4.4.4-14.el7 @anaconda freetype.x86_64 2.4.11-15.el7 @anaconda gawk.x86_64 4.0.2-4.el7_3.1 @anaconda gdbm.x86_64 1.10-8.el7 @anaconda gettext.x86_64 0.19.8.1-2.el7 @anaconda gettext-libs.x86_64 0.19.8.1-2.el7 @anaconda glib2.x86_64 2.54.2-2.el7 @anaconda glibc.x86_64 2.17-222.el7 @anaconda glibc-common.x86_64 2.17-222.el7 @anaconda gmp.x86_64 1:6.0.0-15.el7 @anaconda gnupg2.x86_64 2.0.22-5.el7_5 @updates gobject-introspection.x86_64 1.50.0-1.el7 @anaconda gpgme.x86_64 1.3.2-5.el7 @anaconda grep.x86_64 2.20-3.el7 @anaconda groff-base.x86_64 1.22.2-8.el7 @anaconda grub2.x86_64 1:2.02-0.65.el7.centos.2 @anaconda grub2-common.noarch 1:2.02-0.65.el7.centos.2 @anaconda grub2-pc.x86_64 1:2.02-0.65.el7.centos.2 @anaconda grub2-pc-modules.noarch 1:2.02-0.65.el7.centos.2 @anaconda grub2-tools.x86_64 1:2.02-0.65.el7.centos.2 @anaconda grub2-tools-extra.x86_64 1:2.02-0.65.el7.centos.2 @anaconda grub2-tools-minimal.x86_64 1:2.02-0.65.el7.centos.2 @anaconda grubby.x86_64 8.28-23.el7 @anaconda gssproxy.x86_64 0.7.0-17.el7 @anaconda gzip.x86_64 1.5-10.el7 @anaconda hardlink.x86_64 1:1.0-19.el7 @anaconda hostname.x86_64 3.13-3.el7 @anaconda hwdata.x86_64 0.252-8.8.el7 @anaconda info.x86_64 5.1-5.el7 @anaconda initscripts.x86_64 9.49.41-1.el7_5.1 @updates iproute.x86_64 4.11.0-14.el7 @anaconda iprutils.x86_64 2.4.15.1-1.el7 @anaconda ipset.x86_64 6.29-1.el7 @anaconda ipset-libs.x86_64 6.29-1.el7 @anaconda iptables.x86_64 1.4.21-24.1.el7_5 @updates iputils.x86_64 20160308-10.el7 @anaconda irqbalance.x86_64 3:1.0.7-11.el7 @anaconda jansson.x86_64 2.10-1.el7 @anaconda kbd.x86_64 1.15.5-13.el7 @anaconda kbd-legacy.noarch 1.15.5-13.el7 @anaconda kbd-misc.noarch 1.15.5-13.el7 @anaconda kernel.x86_64 3.10.0-862.11.6.el7 @updates kernel-tools.x86_64 3.10.0-862.11.6.el7 @updates kernel-tools-libs.x86_64 3.10.0-862.11.6.el7 @updates kexec-tools.x86_64 2.0.15-13.el7 @anaconda keyutils.x86_64 1.5.8-3.el7 @anaconda keyutils-libs.x86_64 1.5.8-3.el7 @anaconda kmod.x86_64 20-21.el7 @anaconda kmod-libs.x86_64 20-21.el7 @anaconda kpartx.x86_64 0.4.9-119.el7_5.1 @updates krb5-libs.x86_64 1.15.1-19.el7 @updates less.x86_64 458-9.el7 @anaconda libacl.x86_64 2.2.51-14.el7 @anaconda libaio.x86_64 0.3.109-13.el7 @anaconda libassuan.x86_64 2.1.0-3.el7 @anaconda libattr.x86_64 2.4.46-13.el7 @anaconda libbasicobjects.x86_64 0.1.1-29.el7 @anaconda libblkid.x86_64 2.23.2-52.el7_5.1 @updates libcap.x86_64 2.22-9.el7 @anaconda libcap-ng.x86_64 0.7.5-4.el7 @anaconda libcgroup.x86_64 0.41-15.el7 @anaconda libcollection.x86_64 0.7.0-29.el7 @anaconda libcom_err.x86_64 1.42.9-12.el7_5 @updates libcroco.x86_64 0.6.11-1.el7 @anaconda libcurl.x86_64 7.29.0-46.el7 @anaconda libdaemon.x86_64 0.14-7.el7 @anaconda libdb.x86_64 5.3.21-24.el7 @anaconda libdb-utils.x86_64 5.3.21-24.el7 @anaconda libdrm.x86_64 2.4.83-2.el7 @anaconda libedit.x86_64 3.0-12.20121213cvs.el7 @anaconda libestr.x86_64 0.1.9-2.el7 @anaconda libevent.x86_64 2.0.21-4.el7 @anaconda libfastjson.x86_64 0.99.4-2.el7 @anaconda libffi.x86_64 3.0.13-18.el7 @anaconda libgcc.x86_64 4.8.5-28.el7_5.1 @updates libgcrypt.x86_64 1.5.3-14.el7 @anaconda libgomp.x86_64 4.8.5-28.el7_5.1 @updates libgpg-error.x86_64 1.12-3.el7 @anaconda libidn.x86_64 1.28-4.el7 @anaconda libini_config.x86_64 1.3.1-29.el7 @anaconda libmnl.x86_64 1.0.3-7.el7 @anaconda libmount.x86_64 2.23.2-52.el7_5.1 @updates libmpc.x86_64 1.0.1-3.el7 @anaconda libndp.x86_64 1.2-7.el7 @anaconda libnetfilter_conntrack.x86_64 1.0.6-1.el7_3 @anaconda libnfnetlink.x86_64 1.0.1-4.el7 @anaconda libnfsidmap.x86_64 0.25-19.el7 @anaconda libnl3.x86_64 3.2.28-4.el7 @anaconda libnl3-cli.x86_64 3.2.28-4.el7 @anaconda libpath_utils.x86_64 0.2.1-29.el7 @anaconda libpciaccess.x86_64 0.14-1.el7 @anaconda libpipeline.x86_64 1.2.3-3.el7 @anaconda libpwquality.x86_64 1.2.3-5.el7 @anaconda libref_array.x86_64 0.1.5-29.el7 @anaconda libseccomp.x86_64 2.3.1-3.el7 @anaconda libselinux.x86_64 2.5-12.el7 @anaconda libselinux-python.x86_64 2.5-12.el7 @anaconda libselinux-utils.x86_64 2.5-12.el7 @anaconda libsemanage.x86_64 2.5-11.el7 @anaconda libsemanage-python.x86_64 2.5-11.el7 @anaconda libsepol.x86_64 2.5-8.1.el7 @anaconda libss.x86_64 1.42.9-12.el7_5 @updates libssh2.x86_64 1.4.3-10.el7_2.1 @anaconda libstdc++.x86_64 4.8.5-28.el7_5.1 @updates libsysfs.x86_64 2.1.0-16.el7 @anaconda libtasn1.x86_64 4.10-1.el7 @anaconda libteam.x86_64 1.27-4.el7 @anaconda libtirpc.x86_64 0.2.4-0.10.el7 @anaconda libunistring.x86_64 0.9.3-9.el7 @anaconda libuser.x86_64 0.60-9.el7 @anaconda libutempter.x86_64 1.1.6-4.el7 @anaconda libuuid.x86_64 2.23.2-52.el7_5.1 @updates libverto.x86_64 0.2.5-4.el7 @anaconda libverto-libevent.x86_64 0.2.5-4.el7 @anaconda libxml2.x86_64 2.9.1-6.el7_2.3 @anaconda libxml2-python.x86_64 2.9.1-6.el7_2.3 @base linux-firmware.noarch 20180220-62.2.git6d51311.el7_5 @updates logrotate.x86_64 3.8.6-15.el7 @anaconda lshw.x86_64 B.02.18-12.el7 @anaconda lsscsi.x86_64 0.27-6.el7 @anaconda lua.x86_64 5.1.4-15.el7 @anaconda lvm2.x86_64 7:2.02.177-4.el7 @anaconda lvm2-libs.x86_64 7:2.02.177-4.el7 @anaconda lz4.x86_64 1.7.5-2.el7 @anaconda lzo.x86_64 2.06-8.el7 @anaconda m4.x86_64 1.4.16-10.el7 @anaconda make.x86_64 1:3.82-23.el7 @anaconda man-db.x86_64 2.6.3-9.el7 @anaconda mariadb-libs.x86_64 1:5.5.60-1.el7_5 @updates microcode_ctl.x86_64 2:2.1-29.10.el7_5 @updates mozjs17.x86_64 17.0.0-20.el7 @anaconda mpfr.x86_64 3.1.1-4.el7 @anaconda ncurses.x86_64 5.9-14.20130511.el7_4 @anaconda ncurses-base.noarch 5.9-14.20130511.el7_4 @anaconda ncurses-libs.x86_64 5.9-14.20130511.el7_4 @anaconda net-tools.x86_64 2.0-0.22.20131004git.el7 @anaconda newt.x86_64 0.52.15-4.el7 @anaconda newt-python.x86_64 0.52.15-4.el7 @anaconda nfs-utils.x86_64 1:1.3.0-0.54.el7 @anaconda nspr.x86_64 4.19.0-1.el7_5 @updates nss.x86_64 3.36.0-5.el7_5 @updates nss-pem.x86_64 1.0.3-4.el7 @anaconda nss-softokn.x86_64 3.36.0-5.el7_5 @updates nss-softokn-freebl.x86_64 3.36.0-5.el7_5 @updates nss-sysinit.x86_64 3.36.0-5.el7_5 @updates nss-tools.x86_64 3.36.0-5.el7_5 @updates nss-util.x86_64 3.36.0-1.el7_5 @updates numactl-libs.x86_64 2.0.9-7.el7 @anaconda openldap.x86_64 2.4.44-15.el7_5 @updates openssh.x86_64 7.4p1-16.el7 @anaconda openssh-clients.x86_64 7.4p1-16.el7 @anaconda openssh-server.x86_64 7.4p1-16.el7 @anaconda openssl.x86_64 1:1.0.2k-12.el7 @anaconda openssl-libs.x86_64 1:1.0.2k-12.el7 @anaconda os-prober.x86_64 1.58-9.el7 @anaconda p11-kit.x86_64 0.23.5-3.el7 @anaconda p11-kit-trust.x86_64 0.23.5-3.el7 @anaconda pam.x86_64 1.1.8-22.el7 @anaconda parted.x86_64 3.1-29.el7 @anaconda passwd.x86_64 0.79-4.el7 @anaconda pciutils-libs.x86_64 3.5.1-3.el7 @anaconda pcre.x86_64 8.32-17.el7 @anaconda perl.x86_64 4:5.16.3-292.el7 @anaconda perl-Carp.noarch 1.26-244.el7 @anaconda perl-Encode.x86_64 2.51-7.el7 @anaconda perl-Exporter.noarch 5.68-3.el7 @anaconda perl-File-Path.noarch 2.09-2.el7 @anaconda perl-File-Temp.noarch 0.23.01-3.el7 @anaconda perl-Filter.x86_64 1.49-3.el7 @anaconda perl-Getopt-Long.noarch 2.40-3.el7 @anaconda perl-HTTP-Tiny.noarch 0.033-3.el7 @anaconda perl-PathTools.x86_64 3.40-5.el7 @anaconda perl-Pod-Escapes.noarch 1:1.04-292.el7 @anaconda perl-Pod-Perldoc.noarch 3.20-4.el7 @anaconda perl-Pod-Simple.noarch 1:3.28-4.el7 @anaconda perl-Pod-Usage.noarch 1.63-3.el7 @anaconda perl-Scalar-List-Utils.x86_64 1.27-248.el7 @anaconda perl-Socket.x86_64 2.010-4.el7 @anaconda perl-Storable.x86_64 2.45-3.el7 @anaconda perl-Text-ParseWords.noarch 3.29-4.el7 @anaconda perl-Time-HiRes.x86_64 4:1.9725-3.el7 @anaconda perl-Time-Local.noarch 1.2300-2.el7 @anaconda perl-constant.noarch 1.27-2.el7 @anaconda perl-libs.x86_64 4:5.16.3-292.el7 @anaconda perl-macros.x86_64 4:5.16.3-292.el7 @anaconda perl-parent.noarch 1:0.225-244.el7 @anaconda perl-podlators.noarch 2.5.1-3.el7 @anaconda perl-threads.x86_64 1.87-4.el7 @anaconda perl-threads-shared.x86_64 1.43-6.el7 @anaconda pinentry.x86_64 0.8.1-17.el7 @anaconda pkgconfig.x86_64 1:0.27.1-4.el7 @anaconda plymouth.x86_64 0.8.9-0.31.20140113.el7.centos @anaconda plymouth-core-libs.x86_64 0.8.9-0.31.20140113.el7.centos @anaconda plymouth-scripts.x86_64 0.8.9-0.31.20140113.el7.centos @anaconda policycoreutils.x86_64 2.5-22.el7 @anaconda policycoreutils-devel.x86_64 2.5-22.el7 @anaconda policycoreutils-python.x86_64 2.5-22.el7 @anaconda polkit.x86_64 0.112-14.el7 @anaconda polkit-pkla-compat.x86_64 0.1-4.el7 @anaconda popt.x86_64 1.13-16.el7 @anaconda postfix.x86_64 2:2.10.1-6.el7 @anaconda procps-ng.x86_64 3.3.10-17.el7_5.2 @updates pth.x86_64 2.0.7-23.el7 @anaconda pygpgme.x86_64 0.3-9.el7 @anaconda pyliblzma.x86_64 0.5.3-11.el7 @anaconda python.x86_64 2.7.5-69.el7_5 @updates python-IPy.noarch 0.75-6.el7 @anaconda python-chardet.noarch 2.2.1-1.el7_1 @base python-configobj.noarch 4.7.2-7.el7 @anaconda python-decorator.noarch 3.4.0-3.el7 @anaconda python-firewall.noarch 0.4.4.4-14.el7 @anaconda python-gobject-base.x86_64 3.22.0-1.el7_4.1 @anaconda python-iniparse.noarch 0.4-9.el7 @anaconda python-kitchen.noarch 1.1.1-5.el7 @base python-libs.x86_64 2.7.5-69.el7_5 @updates python-linux-procfs.noarch 0.4.9-3.el7 @anaconda python-perf.x86_64 3.10.0-862.11.6.el7 @updates python-pycurl.x86_64 7.19.0-19.el7 @anaconda python-pyudev.noarch 0.15-9.el7 @anaconda python-schedutils.x86_64 0.4-6.el7 @anaconda python-slip.noarch 0.4.0-4.el7 @anaconda python-slip-dbus.noarch 0.4.0-4.el7 @anaconda python-urlgrabber.noarch 3.10-8.el7 @anaconda pyxattr.x86_64 0.5.1-5.el7 @anaconda qemu-guest-agent.x86_64 10:2.8.0-2.el7_5.1 @updates qrencode-libs.x86_64 3.4.1-3.el7 @anaconda quota.x86_64 1:4.01-17.el7 @anaconda quota-nls.noarch 1:4.01-17.el7 @anaconda readline.x86_64 6.2-10.el7 @anaconda rootfiles.noarch 8.1-11.el7 @anaconda rpcbind.x86_64 0.2.0-44.el7 @anaconda rpm.x86_64 4.11.3-32.el7 @anaconda rpm-build-libs.x86_64 4.11.3-32.el7 @anaconda rpm-libs.x86_64 4.11.3-32.el7 @anaconda rpm-python.x86_64 4.11.3-32.el7 @anaconda rsyslog.x86_64 8.24.0-16.el7_5.4 @updates sed.x86_64 4.2.2-5.el7 @anaconda selinux-policy.noarch 3.13.1-192.el7_5.6 @updates selinux-policy-devel.noarch 3.13.1-192.el7_5.6 @updates selinux-policy-targeted.noarch 3.13.1-192.el7_5.6 @updates setools-libs.x86_64 3.3.8-2.el7 @anaconda setup.noarch 2.8.71-9.el7 @anaconda sg3_utils.x86_64 1.37-12.el7 @anaconda sg3_utils-libs.x86_64 1.37-12.el7 @anaconda shadow-utils.x86_64 2:4.1.5.1-24.el7 @anaconda shared-mime-info.x86_64 1.8-4.el7 @anaconda slang.x86_64 2.2.4-11.el7 @anaconda snappy.x86_64 1.1.0-3.el7 @anaconda sqlite.x86_64 3.7.17-8.el7 @anaconda sudo.x86_64 1.8.19p2-14.el7_5 @updates systemd.x86_64 219-57.el7_5.1 @updates systemd-libs.x86_64 219-57.el7_5.1 @updates systemd-sysv.x86_64 219-57.el7_5.1 @updates sysvinit-tools.x86_64 2.88-14.dsf.el7 @anaconda tar.x86_64 2:1.26-34.el7 @anaconda tcp_wrappers.x86_64 7.6-77.el7 @anaconda tcp_wrappers-libs.x86_64 7.6-77.el7 @anaconda teamd.x86_64 1.27-4.el7 @anaconda tuned.noarch 2.9.0-1.el7_5.2 @updates tzdata.noarch 2018e-3.el7 @updates ustr.x86_64 1.0.4-16.el7 @anaconda util-linux.x86_64 2.23.2-52.el7_5.1 @updates vim-minimal.x86_64 2:7.4.160-4.el7 @anaconda virt-what.x86_64 1.18-4.el7 @anaconda wget.x86_64 1.14-15.el7_4.1 @anaconda which.x86_64 2.20-7.el7 @anaconda wpa_supplicant.x86_64 1:2.6-9.el7 @anaconda xfsprogs.x86_64 4.5.0-15.el7 @anaconda xz.x86_64 5.2.2-1.el7 @anaconda xz-libs.x86_64 5.2.2-1.el7 @anaconda yum.noarch 3.4.3-158.el7.centos @anaconda yum-metadata-parser.x86_64 1.1.4-10.el7 @anaconda yum-plugin-fastestmirror.noarch 1.1.31-46.el7_5 @updates yum-utils.noarch 1.1.31-46.el7_5 @updates zlib.x86_64 1.2.7-17.el7 @anaconda [vagrant@localhost ~]$ |
仮想マシンのシャットダウン
まず、 exit で、ログアウトします。
windows10マシンに戻ってきたら、 vagrant halt と入力して、仮想マシンをシャットダウンしましょう。
vagrant status でシャットダウン済みか確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[vagrant@localhost ~]$ exit logout Connection to 127.0.0.1 closed. user@cf-nx2 MINGW64 /c/data/tk/vagrant/centos7 $ vagrant halt ==> default: Attempting graceful shutdown of VM... user@cf-nx2 MINGW64 /c/data/tk/vagrant/centos7 $ vagrant status Current machine states: default poweroff (virtualbox) The VM is powered off. To restart the VM, simply run `vagrant up` |
Current machine statusが poweroff となっていればOKです。仮想マシンが動いたまま、Windows10(ホストOS)をシャットダウンすると、仮想マシン上での作業が消えてしまうこともあるので注意してください。
まとめ
windows10のローカル環境に、Webアプリの開発環境を構築するすることができます。
そのために、本記事では、vagrant + virtualbox を使って、仮想マシンを作り、Linuxをインストールするところまで説明しました。
次回以降で、Apache, Mysql, PHP をインストールして動作確認までしていきます。
予定としては、CentOS7/apache2.4/PHP7.1/MySQL5.7 の各バージョンを使います。
ぜひ、今回の記事で仮想マシン上でLinux OS を動かすところまで挑戦してみてください。
記事一覧
windowsにvagrantとvirtualboxでWeb開発環境をつくろう。(その1)仮想マシン作成まで
windowsにvagrantとvirtualboxでWeb開発環境をつくろう。(その2)IPアドレスとホスト名の設定
windowsにvagrantとvirtualboxでWeb開発環境をつくろう。(その3)LAMP環境構築の概略
windowsにvagrantとvirtualboxでWeb開発環境をつくろう。(その4)手作業でLAMP環境構築
windowsにvagrantとvirtualboxでWeb開発環境をつくろう。(その5)itamaeを使って自動でLAMP環境構築するには
コメント
[…] […]