サーバー 記事一覧

ホストOSとゲストOSでフォルダを共有する

公開日時:2021/05/04 23:24

はじめに

この記事は以下の3つの記事、

で、VirtualBox上にCentOS 7がインストールされている事を前提としています。

Vagrantで共有フォルダを設定する

現在は、VirtualBox上のゲストOSとホストOS間でファイルをやり取りする手段がありません。

そこで、ローカルマシンと仮想マシンの間でファイルの転送が出来るようにする為の共有フォルダを設定します。

まず、共有フォルダを利用する為に必要なプラグインvagrant-vbguestが入っているか確認します。

vagrant plugin list

Vagrantのプラグインリスト

入っていませんでしたので、インストールします。

vagrant plugin install vagrant-vbguest

インストール完了

インストールが完了したらゲストOSを起動し、vbguestのステータスを確認します。

vagrant up
vagrant vbguest --status

パッケージ確認

PS C:\Vagrant\centos7> vagrant vbguest --status
[default] No Virtualbox Guest Additions installation found.

No ~~ installation found.(見つかりませんでした)』との事で、vbguestを利用するために必要なパッケージがCentOSにインストールされていないようです。vagratを使ってインストールしましょう。

vagrant vbguest

vbguestパッケージのインストール

vbguestのインストール完了

Vagrantの共有フォルダの確認

vbguestがインストールされると、デフォルトの共有フォルダが作成・設定されています。

上記のようにデフォルトでは、

  • ホストOS /cygdrive/c/Vagrant/centos7/
  • ゲストOS /Vagrant

が共有される事になっています。

/cygdrive/c/Vagrant/centos7/というのは実際にはC:\Vagrant\centos7、つまり、ホストOSでシェルを起動している現在のディレクトリ(カレントディレクトリ)です。

尚、/cygdrive/というのはWindows上でUnixに近い環境を提供するソフトウェアCygwinがWindowsのファイルシステムを利用する際に用いる仮のルートディレクトリです。

共有フォルダでの同期設定

そうしたら、Vagrantfileを編集してより使い勝手の良い共有設定に変更します。

C:\Vagrant\centos7\Vagrantfile
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
            ↓
config.vm.synced_folder ".", "/vagrant", type:"virtualbox" 

vbguestをインストールすると、デフォルトではUnixやLinuxのrsyncコマンドを使って共有が行われる事になっているようですが、これはファイルを編集したりしてもリアルタイムで同期がされません。

それでは不便ですので、上記のように共有フォルダタイプをvirtualboxにする事で、リアルタイム同期が行われるようになります。

"."については相対パスといって、意味は『カレントディレクトリ(現在のフォルダ)』で、Vagrantfile自身のあるフォルダを意味します。

つまり、C:\Vagrant\centos7であり/cygdrive/c/Vagrant/centos7/と同じディレクトリですね。

CentOS側の共有フォルダの確認

次に、CentOSを再起動してSSH接続でログインして共有フォルダを確認してみます。※CentOSの再起動を行うvagrant reloadはしばらく時間がかかります。

vagrant reload
vagrant ssh

CentOSにログインしたらルートディレクトリに移動し、ファイルリストを表示してみましょう。

cd /
ls -la

ルートディレクトリ

ルートディレクトリにvagrantフォルダが作成されているのが分かります。

フォルダ内に入って中を見てみましょう。

cd vagrant
ls -la

vagrantフォルダの中身

C:\Vagrant\centos7の中に在ったVagrantファイルが存在するのが分かります。ファイルを表示してみると、内容が同じである事を確認できます。

フォルダが共有されているかテストする

Vagrant自身の再起動が終わったら、仮想マシンを起動してSSH接続し、共有フォルダ/vagrantに移動します。

vagrant up
vagrant ssh
cd /vagrant

共有フォルダテスト

では、ここにテストファイルを配置してみます。

echo "ファイル共有テストです。" > testfile.txt

上記コマンドは何をしているのかというと、echoコマンドでその後に定義してある文字列"ファイル共有テストです。"を、まず標準出力に対して出力しています。

そのままだとシェルに上記文字列が返されて表示されますが、ここでUnixやLinuxのリダイレクトという機能を使ってtestfile.txtというファイル内に上記文字列を出力させています。

その為の表記がです。testfile.txtが存在しない場合は新規作成されます。

すると、ホストOS側のC:\Vagrant\centos7内にtestfile.txtというファイルが出現し、フォルダが共有されて同期されている事が分かります。

共有フォルダ内に作ったファイルが同期された

ホスト側で、testfile.txtを開いてみましょう。同じ内容ですね。

同期されたファイルの中身

次は、ホストOS側でこのファイルに変更を加え、保存してみます。

ホストOSでのファイル内容変更テスト

仮想マシン側で、testfile.txtの内容を表示してみます。

cat testfile.txt

ファイルの同期テスト2

変更内容反映されていますね。これで、共有フォルダが正しく動作している事が確認できました。

まとめ

これで、ホストOSとゲストOSの間でリアルタイムにファイルの共有が出来るようになりました。

次は『CentOSにSFTP接続でファイルを転送する』で、SSH接続を使ったSFTPでのファイル転送を行えるようにします。

CentOSにSFTP接続でファイルを転送する

公開日時:2021/05/04 23:24

はじめに

この記事は以下の3つの記事、

で、VirtualBox上にCentOS 7がインストールされている事を前提としています。

SFTP接続を導入する理由

上記3記事は、ローカルPCで動作する仮想マシン上に、本番環境を想定した開発・検証環境を構築して効率的なソフトウェア開発が行えるようにする事を目的としています。

主な対象はWEBソフトウェア開発、特にPHPでのソフトウェア開発ですが、ほかの言語についても同様に行えます。

PHPは現在主流となっているLL(Lightweight Language)と呼ばれるプログラミング言語で、実行時に都度ソースコードをコンパイルして処理する『スクリプト言語』と呼ばれる物です。

この為、ソースコードに加えた修正が、次の実行時には即時反映されます。

ローカルPC上でWEBサーバが稼働している場合は、ローカルPCのストレージにあるソースコードを参照して処理を行うので特に問題は無いのですが、この記事はVirtualBoxという仮想環境上にある仮想マシンで動作しているCentOS 7でWEBサーバが稼働するため、ローカルPCで修正したソースコードをこの仮想マシン上に再配置する必要があります。

その際に、

1. ローカルでソースコードを修正

2. 仮想マシンに手動でアップロード

3. ブラウザで確認

といった手順を、ソフトウェア開発を行っている真っ最中に毎回手動でひたすら繰り返すのは非常に大変なため、ローカルでのソースコードの修正が即時的に仮想マシン上のソースコードに反映されるようにしたくなります。

現在はIDEと呼ばれる統合開発環境を使ってソフトウェア開発を行うのが当たり前になっていますが、多くのIDEがSFTP接続での自動ファイル同期機能を備えているので、これを利用して効率的なソフトウェア開発を行えるようにするのがこの記事の狙いです。

秘密鍵の確認

SFTP接続はSSHというプロトコルを使って暗号化された通信路を使ってファイルをやり取りする、非常に安全なファイル転送手段で、SSH File Transfer Protocolの略称です。

vagrantユーザーは既にSSH接続でVirtualBox上のCentOSにログインできるようになっており、ホストOS上に秘密鍵が存在します。

現在構築しているVagrant+VirtualBoxは自分だけが使う事を想定した開発環境であるため、このvagrantユーザーの秘密鍵を流用して効率よく開発環境を作成しようと思います。

まず、以下のコマンドでホストOS上のvagrantユーザー用秘密鍵の場所を調べます。

vagrant up
vagrant ssh-config

秘密鍵の場所

上記の

IdentityFile C:/Vagrant/centos7/.vagrant/machines/default/virtualbox/private_key

が、vagrantユーザーの秘密鍵の場所です。

余談

頻繁に目にするようになった暗号化という言葉ですが、この反対語は非常に多くの場合に復号化という間違った表現が使われています。正しくは [ 暗号化⇔復号 ] です。

号という文字には『合図、しるし』といった意味がありますが、つまり、情報の事をと定義しています。

暗号というのは『読めない状態にした情報』という意味で、この暗号にするのが、暗号です。つまりは『~にする』という動詞です。

その暗号を元の号に戻すのが復号です。つまりは『復元する』という動詞です。

暗号化に対してどうしても〇〇化という表現が使いたいのであれば、まず、明号という全く新しい日本語を定義して周知させた後、明号化と表現する必要があります。実に無駄ですね?

引用:平成27年春期問39 同じ鍵を使用する暗号化方式|基本情報技術者試験.com

基本情報技術者試験からの抜粋

基本情報技術者試験ですから、『復号化』等という明らかに間違った表現はもう使わないようにしましょう。

SCP・SFTPクライアントの導入

実際のソフトウェア開発ではプログラムコードを編集している統合開発環境(IDE)が自動でファイルをアップロードする事になりますが、ここではSFTP接続を確認する為、専用のクライアントアプリケーションを導入してみます。

WinSCPのダウンロードとインストール

WinSCPとは :: WinSCP

WinSCPはオープンソースでグラフィカルなWindows用のFTP、FTPS、SFTPクライアントです。

SCPプロトコルとはSecure Copyの略で、主にUnixやLinuxでSSHによる暗号化通信を使ってセキュリティ面で信頼性の高いファイル転送を行う為のプロトコルです。WinSCPはWindowでもこれを可能にしています。

下記リンクから、アプリケーションをダウンロードしてください。現在の最新安定版はWinSCP 5.17でした。

WinSCP :: Official Site :: Download

WinSCPダウンロードページ

ダウンロードされたWinSCPのインストーラー

インストーラーがダウンロードされたらダブルクリックし、ウィザードに従ってインストールを完了してください。

WinSCPのショートカット

WinSCPでのサイト設定

WinSCPのインストールが終わったので、仮想マシン上のゲストOSに接続する為の設定を行います。

WinSCPのウィンドウ

開いているログインダイアログに、仮想マシン上のゲストOSとvagrantユーザーの情報を入力します。このユーザーの認証は鍵認証となっている為、パスワードの入力は必要ありません。

サイト情報入力

設定▼』のプルダウンメニューから設定を選び、開いた高度なサイトの設定ダイアログでSSH > 認証をクリックしてタブを開き、認証条件の中にある『ツール▼』から『鍵ペアをPuTTYgenで生成』をクリックします。

机周り

PuTTY Key Generatorダイアログが開くので、Actionsの中から『Load』ボタンをクリックし、先ほど調べたvagrantユーザーの秘密鍵を読み込みます。

PuTTY Key Generator

秘密鍵の読み込み

秘密鍵が正しく読み込まれると、次のような画面になります。Key passphraseの欄に任意のパスフレーズを入力してください。

パスフレーズというのは一般に言うところのパスワードのような物ですが、秘密鍵自体がそもそも強力なパスワードのような物なので、本来は必要ありません。

パスフレーズは、万が一秘密鍵が流出してしまった際に、新たな鍵を作成してサーバに適用して古い鍵を無効にするまでの時間稼ぎの為に設定します。ここでは適当な覚えやすいフレーズを入力してください。

パスフレーズを入力し終えたら、『Save private key』ボタンをクリックしてください。.ppk形式の秘密鍵の保存場所を聞かれます。下記ではWindowsのユーザーのドキュメントフォルダを選んでいますが、自分の扱いやすい任意の場所で構いません。

.ppkファイルの生成

.ppkの保存ディレクトリ指定

『保存』ボタンをクリックすると.ppkファイルが保存されます。 PuTTY Key Generatorダイアログを閉じてください。高度なサイトの設定ダイアログに戻り、秘密鍵に先ほど作成した.ppkファイルへのディレクトリパスが設定されています。

併せて『エージェントの転送を許可する』にチェックを入れて『OK』をクリックしてください。

机周り

ログインダイアログに戻ってきます。『保存▼』ボタンをクリックして、サイト設定を保存します。

机周り

セッションの保存名指定

サイト設定が登録されました。

サイト設定登録完了

ログイン▼』をクリックして、実際にCentOSにSFTP接続してみましょう。

初めて接続するサーバの為、信頼できるサーバかどうか確認するための警告が表示されます。サイト情報の登録でIPアドレスを間違えてさえいなければ、『はい▼』をクリックして接続サーバ情報をキャッシュに追加してください。以後、表示されなくなります。

接続警告

接続を許可すると、PuTTY形式の秘密鍵を生成する際に設定したパスフレーズが聞かれます。正しくパスフレーズを入力してください。

パスフレーズ

VirtualBox上のCentOSにSFTPでログイン出来ました。

ログイン完了

実際にSFTPで任意のファイルをアップロードしてテストしてみてください。

まとめ

以上で、SFTP接続によるファイル転送環境の構築は終わりです。

CentOS上にPHPの開発環境を作成する

公開日時:2021/05/04 13:23

この記事は以下の2つの記事、

で、VirtualBox上にCentOS 7がインストールされている事を前提としています。

CentOSの初期設定

CentOS 7を更新する

上記の2記事を終えた直後のCentOS 7は、Boxファイルが作成されてから時間が経っている為に古く、セキュリティの観点等から好ましくありません。そこで、CentOSのパッケージマネージャ『yum(ヤム)』を使ってCentOS 7自身を最新の状態にしていきましょう。

まず、Vagrantfileのあるディレクトリ(フォルダ)でシェルを起動してください(※Shiftキーを押しながら右クリックで開くコンテキストメニューで『PowerShellウィンドウをここで開く』です)。

開いたシェルで以下のコマンドで仮想マシンを起動します。

vagrant up

仮想マシンの起動

次に、ssh接続で仮想マシンにログインします。

vagrant ssh

sshログイン

ここで、yumを使ってCentOS 7自身のアップデートを行います。sudoは、管理者権限でコマンドを実行する為のコマンドで、Vagrantでインストールした際に作成されているデフォルトユーザvagrantはsudoを実行できるユーザとして作成されています。

sudo yum update

最初に、アップデート可能なパッケージの検査が始まります。

yum update中

アップデート可能なパッケージの検査が終わると、アップデートを行ってもよいか確認のためにプロンプトが返って処理が一時停止します。yを入力してエンターキーを押してください。実際のアップデート処理が走ります。

update確認

結構時間がかかりますが、Windowsと違ってアップデートされるパッケージの総数と、今処理されているのが幾つ目のパッケージなのか分かるため、あとどのくらい時間が掛かりそうかの推測が立て易く、ストレスは少ない筈です。

パッケージのアップデート処理

Complete!と表示されてコマンドプロンプトが返ってくれば、アップデート完了です。

アップデート完了

sudoコマンド脆弱性有無の確認

先ほどyum updateを実行する際に使ったsudoコマンドですが、実はつい最近、2021年1月26日に重大な脆弱性(ソフトウェアの欠陥)が報告されています。

詳しい内容はsudoの脆弱性(CVE-2021-3156)に関する注意喚起ですが、この脆弱性が存在するかは以下のコマンドの実行結果で分かります。

sudoedit -s /

上記コマンドの実行結果が

sudoedit: /: not a regular file

であった場合は脆弱性が存在するので対処が必要です。

この記事の最初の状態、つまりBoxファイルcentos/7を使ってインストールした直後の状態では公開時期の問題から当然CVE-2021-3156が存在していました。

しかし、現在はyum updateを実行する事でこの脆弱性対応済みのsudoへと自動でアップデートされます。ですから上記コマンドで確認すると、このようなメッセージが表示される筈です。

sudoの脆弱性確認

rootパスワードを設定する

Linuxの管理者アカウントであるrootにパスワードを設定します。

sudo passwd root

タイムゾーンを設定する

Boxファイルcentos/7では、タイムゾーンが協定世界時(UTC)に設定されています。

timedatectl

現在のタイムゾーン

これを、日本標準時(JST)に変更します。

sudo timedatectl set-timezone Asia/Tokyo

日本標準時にタイムゾーンを変更

時刻の同期

以下のコマンドでNTPサーバを起動し、時刻の同期を行います。

sudo systemctl start chronyd

ファイアーウォールの無効化

generic/centos7でインストールされたCentOSでは、初期状態でファイアーウォールが有効になっています。

許可されているのはSSH接続のみで、これからApacheやMySQLをインストールしてもそのままでは外部に公開できません。

本番環境ではファイアーウォールで使用する通信プロトコルを許可するのですが、現在構築しているのはローカルの開発環境であるため、余計なトラブルが起きないように一旦ファイアーウォールを無効にします。

ファイアーウォールを無効にするには以下のコマンドを実行してください。

sudo systemctl stop firewalld
sudo systemctl disable firewalld

スナップショットの作成

さて、ここまで行ったら、またスナップショットを作成しておきましょう。そうすれば、このあと様々なパッケージをインストールしていて失敗してもいつでも現在の状態に戻ってくる事ができます。

スナップショットの作成

PHPの導入

まず、yumでインストールされるPHPパッケージのバージョンを確認します。

yum list available | grep php

yumでインストールされるPHP関連パッケージのリスト

5.4.16のようです。かなり古いですね。CentOSはRed Hat Enterprise Linux(RHEL)のクローン製品であり、RHELは商業用の堅牢なLinuxであるため、公式にサポートしているパッケージは十分な検証が終わっており安定している物が選択される傾向にあります。

このためCentOSはDebian系のLinuxと比べると、デフォルトで入るパッケージのヴァージョンが古い事がよくあります。

そこで、PHP 7.4がインストールできるように別のリポジトリ(ソースコード等を管理する場所)を認識させます。

EPELリポジトリの追加

EPEL リポジトリとは、CentOS 標準のリポジトリでは提供されていないパッケージを、yum コマンドでインストールできるようにする為のリポジトリのことです。CentOS 7の場合、このリポジトリの追加自体もyumで提供されています。

sudo yum install epel-release

EPELリポジトリの追加

remiリポジトリの追加

remiリポジトリはCentOS標準ではない、所謂サードパーティーが提供しているリポジトリの一つで、PHPスタックの最新バージョン、フル機能、およびその他のソフトウェアを、FedoraおよびEnterprise Linux(RHEL、CentOS、Oracle、Scientific Linuxなど)のユーザーに提供する為のリポジトリです。

公式サイト:Remi's RPM repository

こちらのリポジトリの追加はyumでは提供されておらず、rpm(RHEL系のLinuxでの標準のパッケージ管理コマンド)を使います。rpmは1つのパッケージに対して管理を行いますが、前述のyumはこれらrpmでの管理を総合的に取り扱い、複数のパッケージについて1つのコマンドで集中管理出来るようにしています。ですから通常、yumコマンドを実行すると裏側で複数のrpmコマンドが実行されている事になります。

今回は理化学研究所のミラーサイトを利用してみましょう。今年のNHK大河ドラマ『青天を衝け』の主人公『渋沢栄一』さんが1917年(大正6年)に設立した国民的研究所ですね。

sudo rpm -ivh http://ftp.riken.jp/Linux/remi/enterprise/remi-release-7.rpm

RIKEN.JP

rpm実行結果

インストール可能なPHPパッケージを再確認

EPELとremiの2リポジトリを追加したので、再度、インストール可能なPHPのバージョンを確認してみます。今回はremiリポジトリを追加した事で膨大なリストが表示されるため、grepのパラメタについてphp..-php.x86_64として、PHP本体パッケージのみに絞り込みを行います。(※ . は、任意の1文字の意)

yum list available | grep php..-php.x86_64

インストール可能なPHPパッケージ

CentOSが標準でサポートしているPHP 5.4から、最新版であるPHP 8.0までインストールが可能になりました。

PHP 7.4をインストールする

今回は、PHP 7.4をインストールします。

まず、インストール可能なパッケージのリストを見て必要なパッケージを見繕います。後で別のパッケージを追加する事も出来ますので、必ずしも全てを網羅している必要はありません。

yum list available | grep php74

php php-cli php-common php-devel php-mbstringといった基本パッケージに加え、PHPの画像処理用ライブラリ(GD)を提供するphp-gd、データベースMySQL及びPostgreSQL用ドライバ、データベースアクセスの為の抽象化ライブラリ(PDO)を提供するphp-pdo、JSONとXMLを扱うためのphp-json、php-xml、暗号化されたPHPソースコード用ローダーphp-ioncube-loaderを入れておきます。

そして、現在のPHPにとっては一番重要な拡張モジュールであるOPcache(オペキャッシュ:コンパイル済みバイトコードをメモリにキャッシュして処理の高速化を図るモジュール)を提供するphp-opcacheは必ず入れましょう

同様に、現在のPHPの開発では様々な便利なライブラリを導入する手段として、Composerというパッケージマネージャを使うのが当たり前になっています。これを利用しないのはもう考えられないので、絶対にインストールしておきましょう

sudo yum install --enablerepo=remi,remi-php74 php php-cli php-common php-devel php-opcache php-mbstring php-gd php-mysqlnd php-pgsql php-pdo php-json php-xml php-ioncube-loader composer

インストールされるパッケージの確認

インストールされるパッケージ一覧が表示されるので確認し、よければyを入力してください。

PHPインストール完了

PHPのバージョン確認コマンドを使って、インストール状況を確認します。

php -v

PHPのインストール状況確認

PHP設定ファイルの編集

PHPはインストール直後の初期状態ではタイムゾーンが設定されていません。以下のPHPコマンドを実行してみると、協定世界時(UTC)の時刻が表示されます。

php -r "echo date('Y-m-d H:i:s') . PHP_EOL;"

時刻確認

そこで、PHPの設定ファイルを修正して日本標準時(JST)が表示されるようにします。

設定ファイルは/etc/php.iniです。CentOSでの標準的なテキストエディタはVimなので、Vimで編集できるようになるのが一番良いですが、操作方法に結構クセがあります。

参考:Vimの使い方 よく使うコマンドまとめ | Memo on the Web

sudo vi /etc/php.ini

※viコマンドを使っていますが、現在のCentOSのviコマンドはvimコマンドのエイリアスとなっています。

/etc/php.ini

php.ini

ファイルが開いたら、/キーを押してください。画面下にカーソルが移動し、後方検索モードになります。

検索モード

ここで、date.timezoneと入力してエンターキーを押すと、PHPのタイムゾーン設定の箇所にカーソルがジャンプします。

timezone設定

Vimではテキストを編集する際にはインサートモードに切り替える必要があります。iキーを押してください。画面下に黄色い文字で-- INSERT --と表示されます。

INSERTモード

この状態でdate.timezoneの行頭のセミコロン;を削除し、値としてAsia/Tokyoを入力します。

[Date] 
; Defines the default timezone used by the date functions 
; http://php.net/date.timezone 
;date.timezone = 
       ↓ 
[Date] 
; Defines the default timezone used by the date functions 
; http://php.net/date.timezone 
date.timezone = Asia/Tokyo 

同様に、以下の項目を検索して設定してください。

前述した/での検索はカーソルのある場所から下方向へ向かっての検索の為、カーソルよりも上にある文字はヒットしません。

その場合はggとタイプするとカーソルをファイルの先頭に移動出来るので併用してください。

session.use_strict_mode = 1
session.cookie_secure = 0
mbstring.language = Japanese
mbstring.detect_order = UTF-8,SJIS-WIN,SJIS,EUC-JP,JIS,ASCII
mbstring.encoding_translation = 0
mbstring.substitute_character = none
post_max_size = 100M
upload_max_filesize = 50M
max_file_uploads = 50

参考:『PHP: セッションに関連する INI 設定をセキュアにする - Manual

参考:『PHP: 実行時設定 - Manual

参考:『PHP: コア php.ini ディレクティブに関する説明 - Manual

編集し終わったらESCキーを押して、INSERTモードを抜けます。

変更を反映して保存する場合は、Shiftキー+ZZ(Zを2回押す)です。

※尚、変更した修正を反映せずにファイルを閉じたい場合は:q!と順番にタイプしてエンターを押してください。

もう一度、現在時刻を表示させてみましょう。

php -r "echo date('Y-m-d H:i:s') . PHP_EOL;"

日本標準時表記

これで、タイムゾーン設定が完了しました。

Apacheの導入

Apacheのインストール

次はWEBサーバの代名詞とも言うべきアプリケーションであるApacheの導入です。

現在は、より新しいWEBサーバアプリケーションであるNginX(エンジンエックス)が台頭してきていますが、ApacheとNginXは得意分野が違っていて、NginXは静的なページを大量に捌くような用途に向いています。

ですから、PHPに限らずプログラムを使って動的なサイトを構築するような場合はApacheの方が向いており、NginXはApacheの前に置いて静的コンテンツと動的コンテンツを振り分けるロードバランサーのような使い方をするのが最も効果的です。

さて、では実際にApacheをインストールしていきますが、CentOSでのApacheのパッケージ名はhttpdです。インストールはやはりyumを使います。

sudo yum install httpd httpd-devel

httpdの情報

なお、httpddは、daemon(デーモン)のdです。daemonの意味は守護神で、UnixやLinuxに於いてバックグラウンドで常に稼働しているアプリケーションの事をデーモンと呼びます。Windowsでは似たようなアプリケーションの事をService(サービス)と呼んでいます。

英語ではdemon(悪魔)とdaemon(守護神)を分けて考えていますが、元々の語源はギリシア神話にでてくるダイモン《神々と人間の間に介在する二次的な神》のようです。ですから、demonもdaemonも、発音記号は全く同じdi:mʌn(英:díːmən)です。

インストールされるバージョンは2.4.6のようですね。問題ないのでyを入力して実行します。

httpdインストール完了

インストール状況確認です。

httpd -v

httpdインストール状況確認

インストールされたApacheのステータスを確認してみましょう。

systemctl status httpd

Apacheのステータス確認

inactive(dead)となっていて、稼働していない事が分かります。WEBブラウザからhttp://192.168.33.10/にアクセスしてみましょう。接続が拒否されます。

ブラウザでのアクセス

それでは、Apacheを起動してみます。

sudo systemctl start httpd
systemctl status httpd

Apacheの起動

状態がactive(running)に変わりました。もう一度http://192.168.33.10/にアクセスしてみると…、

Apacheのデフォルトドキュメント

Apacheが動作している事が分かります。

WEBで公開するディレクトリの設定

Apacheをインストールすると、/varの中に/var/wwwというディレクトリが作られ、更にその中に/var/www/cgi-binと/var/www/htmlが作られています。

/var/wwwディレクトリ

まず、このディレクトリ配下のファイルおよびディレクトリの所有者をvagrant、グループをapacheにします。apacheはApacheのユーザID及びグループIDです。

sudo chown -R vagrant:apache /var/www

/var/wwwディレクトリの所有権を変更

chownはファイルやフォルダの所有権の変更コマンドです。-Rオプションは、指定したディレクトリ配下にあるすべてのファイルおよびディレクトリの所有権を再帰的に変更する為のオプション、vagrant:apacheは、ユーザID:グループIDです。

これで、ホストOSからvagrantユーザーとして/var/wwwディレクトリ内にファイルをアップロード出来るようになります。

ただし、/var/wwwの所有者をvagrant:vagrantにしてしまうと、Apacheからディレクトリ内に新たなファイルを作成したり削除したりといった事が出来なくなってしまいます。

ですから、/var/wwwの所有者はvagrant:apacheとします。

最後に、グループのパーミッション(操作権限)を変更します。現在のグループのパーミッションはr-xで、読み込み及び実行のみ、つまり書き込みや削除権限がありません

Apacheのモジュールとして動作しているPHPはApacheの操作権限でファイル操作を行う為、この状態だとアップローダーのようなファイルを生成するアプリケーションが作れません。

そこで、以下のコマンドでグループ(apache)に対して、書き込み権限(w)を追加します。

sudo chmod -R g+w /var/www

chmodは、パーミッション(操作権限)を設定するコマンドです。

これで、Apacheからも/var/www内に対してファイルの書き出し、ファイルの削除等が出来るようになりました。

なお、パーミッション(操作権限)については、以下を参照してください。

参考:『chmodのパーミッション変更で「u+w」などの文字列指定をしたい - ITmedia エンタープライズ

MySQLの導入

MySQLは、世界で一番利用されているデータベースアプリケーションです。大規模な商業用途の場合は古くから利用されている堅牢なデータベースであるOracleが利用されるケースが多いのですが、中小規模からホビーユースまでを含めた場合、世界で一番利用されているWEBアプリケーションであるWordpressのデフォルトデータベースとなっているMySQLが、実は、世界で一番利用されているデータベースとなります。

歴史

このMySQLは元々はスウェーデンの企業であるMySQL AB社が所有、出資していたものをSun Microsystems社が買収、同社の管理下にありましたが、2010年にOracle社がSunを買収した事により、現在はOracle社の製品となって更なる高機能化が進められています。

Oracle社は既に自社プロダクトであるOracleを所有しておりそのOracle社にMySQLが買収された事で、『MySQLが飼い殺しにされるのではないか?』という懸念が世界中に広まりました。

そこで、元々の開発者であるMichael Widenius氏の手によって当時の安定版であったMySQL 5.5をフォーク(派生プロダクトを作る事)され、新たなデータベースである『MariaDB』がリリースされました。

この為、MySQLとMariaDBはほとんどの部分において全く同じ操作が可能です。今後、万が一Oracle社が独占的な権利を主張するようなライセンス規約の変更を行った場合、非常に多くのシステムのデータベースがMariaDBへと乗り換えられる事になるでしょう。

MariaDBライブラリの削除

とはいえ、ここでは主プロダクトであるMySQLのGPL版、Community Editionをインストールします。理由は、まだまだWEB上にはMySQLの情報の方が多く、初学者がMariaDB特有の機能でつまづくのを防ぐ為です。

CentOS 7では、前述の歴史にある理由からMariaDB関連のライブラリが入っています。以下のコマンドで、そのライブラリの存在を確認できます。

yum list installed | grep mariadb

MariaDBのライブラリ確認

インストールされている事を確認したら、このライブラリをyumで削除します。ライブラリ用に作成されているディレクトリも一緒に削除しておきます。

sudo yum remove mariadb-libs

以下のコマンドで、mariadbライブラリ用のディレクトリも削除しておきます。(※MySQLをフォークしたプロジェクトの為、ディレクトリ名等様々な場所でmysqlの表記が使われています。)

rm -rf /var/lib/mysql/

MariaDBライブラリの削除

インストールの為のリポジトリ設定

これで、晴れてMySQLをインストール出来るようになります。

まず、MySQL 8.0をインストールする為のリポジトリを調べます。

MySQL Community Downloads

MySQL :: Download MySQL Yum Repository

上記サイトの情報を元に、PHPの導入でremiリポジトリを追加した時と同様に、今度はdev.mysq.comのリポジトリを追加します。

sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

MySQLリポジトリの追加

以下のコマンドで、インストール可能なMySQLの種類が確認できます。

yum repolist all | grep mysql

インストール可能なMySQL関連パッケージリスト

yum installを実行するとenabledとなっているパッケージがインストールされます。上記の状態ではMySQL 8.0 Community Serverがインストールされる事になります。

MySQL 8.0のインストール

yumでMySQLをインストールするコマンドは以下です。

sudo yum install mysql-community-server

mysqlインストール確認

yを入力してインストールします。

インストール完了

インストールされたMySQLのバージョン確認は以下です。CentOSではMySQLはmysqldとして認識しています。

mysqld --version

MySQLのヴァージョン確認

MySQLを起動する

まず、MySQLを起動します。

sudo systemctl start mysqld

デフォルトのrootパスワードを調べる

MySQLの初回起動時に、デフォルトのrootパスワードが設定されます。以下のコマンドでこのデフォルトrootパスワードを調べる事が出来ます。

sudo grep password /var/log/mysqld.log

MySQLの初期設定

以下のコマンドを実行して初期設定を行います。

sudo mysql_secure_installation

rootパスワードが聞かれるので、先ほど調べたデフォルトのrootパスワードを入力してください。

Securing the MySQL server deployment.
 
Enter password for user root:

新しく設定したいrootユーザのパスワードを聞かれます。入力すると、入力間違いが無いか確認する為に同じパスワードの再入力を求められます。

間違いが無ければ新しいパスワードを有効にしてもよいか聞かれるのでYを入力してください。

The existing password for the user account root has expired. Please set a new password.
 
New password: 
 
Re-enter new password:
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Using existing password for root.

パスワードが一致すると入力したパスワードの暗号化が行われ、rootパスワードを変更しても良いか聞かれます。Yを入力して下さい。

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y 

次はデフォルトで登録されているanonymous user(匿名ユーザー)を削除するかどうか聞かれます。セキュリティ上のリスクになりうるので、anonymousユーザーは削除してしまいましょう。Yを入力してください。

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
 
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.

次はrootユーザーのリモートログインを禁止するかどうかを聞かれます。別からrootユーザとしてログインを許可すると不正アクセスされた場合に非常に危険なので、これは禁止します。リモートからroot権限で操作したい場合はまずSSH等を使ってホストコンピュータにログインし、ホスト内でrootユーザーとしてMySQLにログインするようにします。

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
 
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

次に、testデータベースを削除するかどうか聞かれます。有っても無くても特に困らないデータベースなので、余計なセキュリティリスクを考慮から外すため、削除してしまいましょう。

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
 
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.
 
 - Removing privileges on test database...
Success.

最後に、今設定した権限を直ちに確定するか聞かれます。Yを入力して確定させてください。

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
 
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
 
All done!

初期設定は以上です。

初期設定を確認する為、MySQLにrootユーザーでログインします。

mysql -u root -p

MySQLにログイン

ステータスコマンドで状態を見ます。

status

MySQLのステータス

MySQLからログアウトする場合は以下のコマンドです。

 \q

ApacheとMySQLを自動起動するようにする

現在の状態ですと、OSを再起動する度にApacheとMySQLのデーモンは停止してしまいます。

CentOSではsystemctlのenableを使って、OS起動時にデーモンを自動起動させる事が出来ます。

sudo systemctl enable httpd
sudo systemctl enable mysqld

デーモンの自動起動化

SELinuxの無効化

SELinuxは、Linuxに高度なセキュリティを導入するための仕組みです。

現在のCentOSはデフォルトで有効となっていますが、この機能は少々難解で初心者にはあまり適切ではありません。この機能があるおかげで助かる事は稀ですが、初学の段階ではこの機能があるせいで意図した動作にならない事が頻繁に発生します。

元々Unix、Linuxにはオーナーやパーミッションといった高度なセキュリティが導入されている為、通常はSELinuxの恩恵を受ける事は殆どありません。特に、閉鎖されたローカル環境のみ、自分しか利用しないのであれば必要無いので、現段階ではこの機能を無効にします。

設定ファイルの編集

以下のコマンドで、SELinuxの設定ファイルを開きます。

sudo vi /etc/selinux/config
/etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled

SELinuxの無効化

サーバの再起動

sudo reboot

再起動後の再確認

getenforce

Disabledと表示されれば、SELinuxは無効になっています。

スナップショットの作成

必要であれば、ここで再びスナップショットを作成しておきましょう。

まとめ

以上で、CentOS自体の更新、および、PHP、Apache、MySQLの導入の説明を終わります。

これでPHPによるWEBアプリケーションの開発環境が整った事になりますが、開発を更に便利にする為に、次のドキュメント『ホストOSとゲストOSでフォルダを共有する』でSSH接続を使った安全なファイル転送の仕組みであるSFTPを導入して更に開発効率を上げてみようと思います。

Vagrantを使ってVirtualBox上にゲストOSとしてCentOSをインストールする

公開日時:2021/05/03 16:29

はじめに

この記事では、Vagrantを使って仮想環境であるVirtualBox上にCentOSをインストールしてみます。まだVagrantとVirtualBoxの準備が整っていない方は、あらかじめ『VagrantとVirtualBoxで、システム開発のための勉強環境を構築する』を参照して環境を整えてください。

CentOSは、WEBシステム用のサーバOSとして高い評価のあるRed Hat Enterprise Linuxとの互換性を重視したクローン製品です。『poor's RHEL(貧乏人のためのRed Hat Enterprise Linux)』とも言われ、有償サポートを必要としないような中小規模の企業やサービスで頻繁に利用されています。

これからWEBシステム開発をしていきたいのであれば、CentOSについて勉強しておく事は非常に有意義でしょう。

CentOS公式サイト

公式サイト:The CentOS Project

CentOSは8まではCentOS ProjectとしてRHELのクローン製品の扱いで提供されていましたが、2020年12月8日を以って終了、以後はCentOS Streamという新たな形態へと変更されました。

CentOS Streamは位置づけとしてRHELの『開発ブランチ』となっており、CentOS Streamで行われた変更や新機能が煮詰まった段階で本家のRHELに取り込まれるという形をとる事になっています。

面白い事に、最新ヴァージョンであるCentOS 8のサポート終了は本年2021年12月31日なのに対し、1つ前のヴァージョンであるCentOS 7のサポート終了は2024年6月30日と、まだずいぶん猶予があります。

CentOS Streamは始まったばかりなのでどうなるか不確定な要素が多いですから、現在、勉強のためにCentOSを導入するのであれば、情報が多く枯れた技術として使えるCentOS 7を選ぶのがよさそうです。

CentOS 7のBoxファイルを入手する

Vagrantのサイトでは、VirtualBoxにインストールするOSのテンプレートとなるイメージファイルが沢山公開されており、これらを利用する事で、簡単にゲストOSを構築できます。

Boxファイルの検索

公式サイト:Discover Vagrant Boxes - Vagrant Cloud

検索窓に『centos』と入力して検索してみると、次のような画面になる筈です。

centosで検索

一番上にリストされたcentos/7はダウンロード数500万件と桁違いですがCentOS 7.8で構成されており、現在の最新版であるCentOS 7.9用のカーネルと異なっているため、インストールが上手く行きません。

ですから、2番目のgeneric/centos7を選択します。

クリックすると、Vagrantでのインストール方法が記された画面が表示されます。

centos7のbox

Vagrantを利用するにあたってこの画面で重要なのは赤字の箇所のみです。

VagrantでVirtualBoxに対して、BoxファイルからCentOS 7をインストールする

さて、それではVagrantを使って、実際にVirtualBox上にCentOSをインストールしてみましょう。

まず、VirtualBoxを起動します。ショートカットはこれですね。

VirtualBoxショートカット

VirtualBox画面

ゲストOSを管理するディレクトリ(フォルダ)を作成する

まず、ゲストOSをVagrantで管理するためのディレクトリを作成します。場所はアクセスが制限されるC:\Program Files等でなければ自分の好きな場所で構いません。フォルダ名も好きなようにつけてください。

Vagrantディレクトリ

このフォルダ内に、今回インストールするCentOS 7用のディレクトリ(フォルダ)を作ります。フォルダ名は何でも構いません。

CentOS 7用ディレクトリ

このフォルダ内に入ったら、ようやくVagrantでのゲストOSインストールを開始です。

BoxファイルからCentOS 7をインストールする

/Vagrant/centos7フォルダ内で、Shiftキーを押しながらマウスを右クリックしてコンテキストメニューを開き、『PowerShellウィンドウをここで開く』を選びます。(※環境によっては『コマンドプロンプトをここで開く』の場合もあります。)

コンテキストメニュー

PowerShellウィンドウが開きます。

PowerShell

ここで、vagrantのinitコマンドと先ほど調べたBoxファイルの情報を使って仮想マシン構成を記述するファイルであるVagrantfileを作成します。

vagrant init generic/centos7

コマンドが成功すると以下のようなメッセージが出て、現在のカレントディレクトリ(現在のフォルダ)内にVagrantfileという名のファイルが作られます。

イニシャライズ完了

作成されたVagrantfile

そうしたら、このファイルをテキストエディタで開いてください。

# -*- mode: ruby -*-
# vi: set ft=ruby :
 
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
  # The most common configuration options are documented and commented below.
  # For a complete reference, please see the online documentation at
  # https://docs.vagrantup.com.
 
  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://vagrantcloud.com/search.
  config.vm.box = "centos/7"
 
         :
 
  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.33.10"
 
  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
  # config.vm.network "public_network"
 
         :
 
  # Enable provisioning with a shell script. Additional provisioners such as
  # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
  # documentation for more information about their specific syntax and use.
  # config.vm.provision "shell", inline: <<-SHELL
  #   apt-get update
  #   apt-get install -y apache2
  # SHELL
end

Rubyという言語で書かれたファイルで、ほとんどがコメントアウトされた行(#で始まる行)です。

これからインストールする予定のcentos/7はひとまずLANに公開しない事にするため、以下の行のコメントを外してprivate_networkを使ってホストOS(お使いのコンピュータのOS)に対してだけ公開します。

\Vagrant\centos7\Vagrantfile
  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.33.10"
 
            ↓
 
  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  config.vm.network "private_network", ip: "192.168.33.10"

これで、ホストOSからゲストOSに対してIPアドレス:192.168.33.10でアクセスできるようになります。Vagrantファイルを保存してファイルを閉じてください。(IPアドレスはお望みであれば、適宜変更して構いません。)

そうしたら、先ほど開いていたシェルから以下のコマンドを実行します。

vagrant up

ゲストOSインストール中(1)

ゲストOSインストール中(2)

VirtualBox上で状態が『➡実行中』となり、プレビューを見ると、仮想マシン上でインストール処理が進んでいるのが分かります。

ゲストOSインストール中(3)

ゲストOSインストール中(4)

以上のようにシェルにコマンドプロンプトが戻ってきたらインストール完了です。

インストール状況確認

開いているシェルからvagrantを使ってssh接続でゲストOSにログインしてみます。

vagrant ssh

ssh接続

vagrant@localhostとしてコマンドプロンプトが表示されれば、ssh接続成功です。

インストールしたのはCentOSなので、CentOS 7でのバージョン確認コマンドを使ってみましょう。

cat /etc/redhat-release

catコマンドは「con-cat-enate(つなぐ、連結する)」が語源のようで、ファイルを連結するためのコマンドですが出力先を指定しないと標準出力に内容が表示されるため、簡単にファイル内容を確認するために頻繁に用いられます。

つまり、/etc/redhat-releaseの内容が標準出力に出力されるので、それがそのままシェルに表示されます。

ヴァージョン確認

OSのバージョンが確認できればインストールは無事成功しています。シェルで以下のコマンドを入力して、ゲストOSからログアウトしてください。

exit

ssh接続からログアウト

インストール直後のスナップショットを作成

最後に、初期状態のCentOS 7のスナップショットを作成し、いつでもこの状態に戻れるようにしましょう。

スナップショットメニュー

仮想マシンの右端にあるアイコンをクリックするとコンテキストメニューが開きます。ここから『スナップショット』をクリックします。

『作成(T)』というカメラのアイコンのボタンをクリックすると、『仮想マシンのスナップショット作成』ダイアログが開きます。ここで、自分が理解しやすいスナップショットの名前と説明を入力し、OKを押してください。

スナップショットの名前と詳細の入力

スナップショットが作成されると、ツリー構造で表現されます。

スナップショット作成完了

以上で、スナップショットの作成は終了です。

仮想マシンを停止して終了

シェルに戻って、以下のコマンドで仮想マシンを停止できます。

vagrant halt

halt

仮想マシンの状態が『電源オフ』になります。

電源Off状態

まとめ

以上がVagrantを使ってVirtualBox上に仮想マシンを構築し、スナップショットを作成するまでの手順です。 次は、『CentOS上にPHPの開発環境を作成する』で、今回作成した仮想マシン上にApache、PHP、MySQL等をインストールする手順をご紹介します。

VagrantとVirtualBoxで、システム開発のための勉強環境を構築する

公開日時:2021/05/03 12:38

はじめに

システム開発は大抵の場合、本番環境とは別に開発環境を構築し、そこで開発・テスト・検証を繰り返してソフトウェアの精度を高めてから実際に本番環境で稼働をさせます。

通常のシステム開発は複数人で行われるため、これらの開発環境についても開発に参加している全員が同じ環境であった方が余計な不具合が発生しづらくなり更に効率的な事は言うまでもありません。

ですから、こうした環境を自動で構築できるツールを使えるかどうか? というのが、システム開発のエンジニアをしていく上ではとても重要になります。

そこでこの記事では、システム開発の場で広く使われている仮想化ソフトウェア『VirtualBox』と、その仮想化ソフトウェアの操作を簡単にする為のソフトウェア『Vagrant』の導入方法と操作方法について紹介します。

※なお、現在は更に高度な仮想化技術である『Docker』というソフトウェアが使われる事が多くなっていますので、こちらについては別にシリーズを書き起こす予定です。

Vagrantの導入

Vagrant

公式サイト:Vagrant by HashiCorp

Vagrantは仮想環境の構築・管理や起動・停止といった処理を簡単な操作で行うためのソフトウェアです。ほぼ業界標準と言ってよいくらいメジャーなソフトウェアですね。

Vagrantのインストール

上記サイトにアクセスし、赤枠の『Download』ボタンをクリックすると、ダウンロード専用ページが開きます。ご自分の環境に合ったインストーラーをダウンロードしてください。

Vagrantトップページ

ダウンロードページ

インストーラー

ダウンロードされたインストーラーをダブルクリックし、インストールウィザードに従ってインストールしてください。インストーラー自体のセットアップにしばらく時間がかかります。

インストーラー起動画面

セットアップ完了

Nextを押すとエンドユーザー・ライセンスへの同意を求められます。ほぼ全てのソフトウェアはライセンス条項に同意しないとインストールさせてもらえませんから、インストーラーを起動している時点でユーザーに選択肢は与えられていません。左下の『I accept the terms in the License Agreement(ライセンス同意条項を受け入れます)』にチェックをしてNextで進んでください。

ライセンスアグリーメント

任意の場所にインストール出来ますが、大抵の場合、初期設定のままで構わないでしょう。

インストールディレクトリの指定

机周り

Installをクリックすると、後の処理は自動で行われます。

インストール中

無事インストールが終わると、以下の画面が表示されます。

インストール完了

Finishをクリックすると、ポップアップウィンドウが開きます。

You must restart your system for configuration changes made to Vagrant to take effect. Click Yes to restart now or No if you plan to manually restart later.

(Vagrantによる設定変更を反映するためにあなたのシステムを再起動してください。Yesをクリックすると直ちに再起動します。後で手動で再起動する場合はNoをクリックしてください。)

ポップアップ

どちらを選んでも構いませんが、この後一緒にVirtualBoxをインストールしてしまうつもりであれば、Noをクリックしてください。

VirtualBoxの導入

VurtualBox

公式サイト:Oracle VM VirtualBox(※スタイルシート、もうちょっとなんとかなりませんかね…?)

VirtualBoxは、使用しているコンピュータ上に仮想環境を作成し、主OS(ホストOS)とは別のOS(ゲストOS)をインストール出来るようにする為のソフトウェアです。

仮想環境内はホストからは完全に隔離されている為、例えばゲストOSがマルウェアに感染しても、そこからホストOSに被害が及ぶ事はありません。(※ゲストOSをLANに参加させていて、ネットワーク経由で感染する場合は除きます。)

また、多くの仮想化技術は『スナップショット』という、ある時点での状態を保存しておく機能が搭載されている為、様々な構成を試しながら環境構築を行うような用途で使う場合に非常に便利です。特に初学者はインストールに失敗する事が頻繁にあるので、いつでも特定の時点に戻って何度でもやり直しができる仮想化技術は学習の為の強力な支援ツールとなる筈です。

VirtualBoxは元々、ドイツのシュトゥットガルトにあったInnotek社が開発しましたが、同社がSun Microsystems社に買収され、後にSunがOracle社に買収されて現在に至ります。

現在はOracle社(世界規模第2位のソフトウェア会社)がサポート、メンテナンスを行っているので、比較的安心できるソフトウェアと言えます。

VirtualBoxのインストール

上記のサイトにアクセス、Download VirtualBoxボタンをクリックしてダウンロードページを開き、お使いの環境に合ったインストーラーをダウンロードします。

ダウンロードページ

VirtualBoxインストーラー

インストーラーをダブルクリックし、インストールウィザードに従ってください。

セットアップウィザード起動画面

インストールする構成とディレクトリの指定画面です。通常は初期状態のままで構わないでしょう。

インストールする構成とディレクトリの選択

作成したいショートカット等を選択します。

作成するショートカット

ネットワークの切断警告が出ます。

Installing the Oracle VM VirtualBox 6.1.22 Networking feature will reset your network connection and temporally disconnect you from the network.

(Oracleヴァーチャルマシン『VirtualBox 6.1.22』のネットワーク機能のインストールの際、あなたのコンピュータのネットワーク接続は再設定され、一時的にネットワークから切断されます。)

別のソフトウェアをダウンロードしていたり、ネットワークを介して何か作業をしていたりする場合はそちらを終わらせるか、VirtualBoxのインストールを後回しにしてください。

ネットワーク切断警告

インストールボタンをクリックすると、実際のインストールが始まります。

インストール確認

インストール処理中

インストールが完了して開くダイアログでチェックボックスにチェックが入った状態でFinishをクリックすると、VirtualBoxの管理画面が起動します。

インストール完了

VirtualBox管理画面

Vagrantインストールでの変更を反映させるため、OSを再起動する

Vagrantの導入でOSを再起動しなかった方は、ここで再起動してください。

Vagrantのインストール状況確認

コンピュータの再起動が終わったらコマンドプロンプトやPowerShell等を起動し、以下のコマンドを入力して実行してください。

vagrant -v

Vagrantのヴァージョン確認

上図のようにVagrantとヴァージョン情報が表示されれば、インストールは成功です。

まとめ

以上で、VagrantとVirtualBoxの導入については以上です。

続く、『VagrantにゲストOSとしてCentOSをインストールする』で、VirtualBox上にCentOSというLinuxをインストールしてみましょう。

記事リンク