仮想マシンのUbuntu ServerにLAMP環境を整える方法【16.04】

サムネイル:複数のクレーン
2019.04.28:GDモジュールのインストールについて追記しました。

前回の記事では、VirtualBoxを用いてUbuntuServerの仮想マシンを作成しました。

Ubuntu+VirtualBoxにUbuntuServerをインストールする方法【16.04】

WordPressのテスト環境のために、Webサーバとして動作するように設定しましょう。
今回は、LAMP環境を整えて、アクセスしてHTMLページを表示できるようにします。

環境・ソフトウェアなど

ホストOS:Ubuntu 16.04 LTS (64bit)
VirtualBox:5.1.14
(2017年8月10日現在、5.1.26)
ゲストOS:UbuntuServer 16.04 (64bit)

Apache2:2.4.18
MySQL:5.7.17
(2017年8月10日現在、5.7.19)
PHP:7.0.13
(2017年8月10日現在、7.0.18)
openSSH:1.0.2g

完成形を把握する

先に、完成予想図を見てみましょう(Fig1)。

仮想マシン(ゲストOS)は、VirtualBoxの提供する機能を使って外部にアクセスすることができます。
作成する仮想Webサーバは外部からは接続できないようにして、自分(ホストOS)からだけアクセスできるようにします。
WordPressのテスト環境であれば、これで充分でしょう。

設定するIPアドレスなども、こうして図にするとわかりやすいです。
困った時に活用してください。

Fig1.ホストOSとゲストOSのネットワーク図
Fig1.ホストOSとゲストOSのネットワーク図

LAMPのインストール

前回の記事では、UbuntuServerをインストールしたついでに、LAMP serverとopenSSH serverをインストールしました。

もちろん、個別にインストールすることもできます。
LAMPはLinux、Apache、MySQL、PHPの頭文字です。
その内、LinuxはOSとしてインストールしたので、残りはApacheとMySQL、PHPになります。

補足として、インストールとバージョンの確認を個別に行う方法を用意しました。

その場合、先にアップデートをチェックしておきましょう。
【アップデートするコマンド】
$ sudo apt-get update
$ sudo apt-get upgrade

もしネットワークがつながらない場合、VirtualBoxの設定が正しくないなどの可能性があります。
初期設定ではネットワークアダプタはNATになっており、インターネットにアクセスできるハズです。

インストールする順番は特にありません。
完璧主義の私も気になりましたが、調べても出てこないし、そもそもLAMPが揃ってないと意味がないので問題ないと思います。

Apacheのインストール

【インストールするコマンド】
$ sudo apt-get install apache2

【バージョンを確認するコマンド】
$httpd -v
もしくは、
$ apachectl -v

候補は2つありますが、私の環境では、片方はエラーになりました(Fig2)。
バーションが確認できれば問題ありませんが、どちらもダメだった場合はググってください。

また、バージョン2.3.23未満には脆弱性があるようです。
Ubuntuの提供するバージョンは2.4.18でした。
本番環境では注意しましょう。

【参考】
Apache httpd 2.4.25 + mod_http2 インストールメモ _ あぱーブログ

Fig2.Apacheのバージョン確認
Fig2.Apacheのバージョン確認

MySQLのインストール

rootユーザのパスワードを設定するので、あらかじめ決めておきましょう。
ここでは「rootpass」にしています。
【インストールするコマンド】
$ sudo apt-get install mysql-server

【バージョンを確認するコマンド】
$mysql --version

バージョンは5.7.19でした。(Fig3)

Fig3.MySQLのバージョン確認
Fig3.MySQLのバージョン確認

MySQLでの作業は、次の記事で行います。
ここでは、インストールだけです。

PHPのインストール

【インストールするコマンド】
$ sudo apt-get install php

【バージョンを確認するコマンド】
$ php -v

バージョンは7.0.18でした(Fig4)。

Fig4.PHPのバージョン確認
Fig4.PHPのバージョン確認

前回の記事でも書きましたが、taskselでLAMPをインストールした場合、PHPのmbstringモジュールがインストールされません。
これは、WordPressの「WP Multibyte Patch」プラグインを有効化するために必要です。

インストールされているかどうかを確認してみましょう(Fig5)。
【インストールされているか確認するコマンド】
$ dpkg -l | grep php-mbstring
インストールされていなかった場合、プロンプトは無言を返します。

【インストールするコマンド】
$ sudo apt-get install php-mbstring

追記:GDモジュールについて(2019年4月28日)

自分でサーバを用意してWordPressを動かす場合、画像処理ライブラリのGDまたはImagickがインストールされているか確認してください。
画像をアップロードした際にサイズ差分の画像が生成されるときに利用されます。
リサイズを伴うプラグインでも必要になり、私は2年越しにGDモジュールをインストールすることになりました。

【WordPress】GDモジュールの必要性とインストール方法

Apacheの再起動を忘れないように。
【Apacheを再起動するコマンド】
$ sudo service apache2 restart

Fig5.php-mbstringがインストールされているか確認
Fig5.php-mbstringがインストールされているか確認

LAMPのインストールの補足は以上です。
次は、仮想マシンにブラウザでアクセスする準備をしていきます。

ホストオンリーアダプタの追加

完成予想図で示したように、ホストOSからブラウザで仮想Webサーバにアクセスするには、ネットワークの設定が必要です。

まずは「ホストオンリーアダプタ」を追加します。
ホストオンリーアダプタは、ホストOSとゲストOSだけのネットワークを実現します。
「VirtualBoxの設定」と、「VirtualBoxに登録した仮想マシンの設定」がありますので注意してください。

VirtualBoxの設定

ホストオンリーアダプタを追加するために、「VirtualBoxの設定」を行います。
VirtualBoxのファイルメニューから、「環境設定」に入ります(Fig6)。

Fig6,VirtualBoxのファイルメニューから環境設定へ
Fig6,VirtualBoxのファイルメニューから環境設定へ

ネットワーク項目に移り、「ホストオンリーネットワーク」タブに移動します。
リストには何もありませんが、「+(プラス)」アイコンをクリックすると「vboxnet0」が作成されます(Fig7)。

Fig7.ホストオンリーアダプタを追加
Fig7.ホストオンリーアダプタを追加

工具のドライバーのようなアイコンで、作成した「vboxnet0」の設定を行います。
アダプタータブのIPv4、IPv4ネットマスクを入力します(Fig8)。
IPv4の項には「192.168.56.1」、IPv4ネットマスクには「255.255.255.0」を設定します。

Fig8.アダプターの設定にIPアドレスを入力
Fig8.アダプターの設定にIPアドレスを入力

仮想WebサーバのIPは固定したいので、DHCPの設定は行いません(Fig9)。
チェックをせず、空欄のままにします。

Fig9.DHCPサーバーは設定しない
Fig9.DHCPサーバーは設定しない

VirtualBoxに登録した仮想マシンの設定

VirtualBoxのメイン画面で、作成した仮想マシンを選択した状態で設定(歯車アイコン)をクリックします。

ネットワークの項に移り、「アダプター2」タブに移動して、割り当てに「ホストオンリーアダプタ」を指定します(Fig10)。
名前の部分には、「vboxnet0」が自動で入るハズです。
高度な設定は必要ありません。

Fig10.仮想マシンにホストオンリーアダプタを割り当てる
Fig10.仮想マシンにホストオンリーアダプタを割り当てる

これで、両者にNIC(network interface card)が追加されました。

ホストOSには「vboxnet0」が(Fig11)、ゲストOSには「enp0s8」が追加されます。
ゲストOSのNICについては後述します。

Fig11.ホストOSに追加されたvboxnet0
Fig11.ホストOSに追加されたvboxnet0

IPアドレスの固定

この時点では、まだ仮想マシンにアクセスすることはできません。
ホストOSとのネットワークに、IPアドレスを割り当てていないためです。
固定したいIPアドレスを割り当てて、ホストOSからアクセスできるようにします。

作成した仮想マシンを立ち上げて、ログインしてください。
この時点では、NICを表示しても、ホストオンリーアダプタ(enp0s8)はありません(Fig12)。
【NICを表示するコマンド】
$ ifconfig -a

Fig12.仮想マシンにIPアドレスが割り当てられていない状態
Fig12.仮想マシンにIPアドレスが割り当てられていない状態

IPアドレスを割り当てるために、特定のファイルを編集します。
場所は「/etc/network/interfaces」です。
末尾のsを忘れないように

CUIエディタのViを使って、interfacesファイルを編集します。
最低限の操作は紹介しますが、それ以上のものは各自で調べてください。
(nanoエディタなら、もう少し簡単に操作できます)

【viエディタでファイルを編集するコマンド】
$ sudo vi /etc/network/interfaces

ファイルの末尾まで、移動します。
「i」キーで入力モードに入り、入力が終わったら「Esc」キーでコマンドモードに移ります。
「:w」で上書き保存、「:q」でviエディタを終了します。

書き込む内容には、コメントを付けておくと便利かもしれません。

#Host only network_static IP address_2017xxxx
auto enp0s8
iface enp0s8 inet static
(タブ)address(タブ)192.168.56.101
(タブ)netmask (タブ)255.255.255.0

ちゃんと保存できているかどうか、「cat」コマンドで中身を確認してみましょう。
【ファイルの中身を閲覧するコマンド】
$ cat /etc/network/interfaces

編集ができていたら、ネットワークを再起動します。
【ネットワークを再起動するコマンド】
$ sudo /etc/init.d/networking restart

これでNICを表示すると、enp0s8が追加され、固定したIPアドレスが表示されています(Fig13)。

Fig13.仮想マシンにIPアドレスが割り当てられた
Fig13.仮想マシンにIPアドレスが割り当てられた

「lo」がローカルホストを指しているのは言うまでもないでしょうが、enp0s3や、enp0s8は何でしょうか。
これは、以前はeth0やeth1と表示されていました。
「eth」はイーサネットのことですね。

英単語とはかけ離れた、無意味な文字列に見えるため、当初は混乱しました。
これについては、解説しているページがあるので興味があればどうぞ。
【参考】
CentOS 7のネットワーク名「enp1s0」という文字列の謎に迫る – Qiita

IPアドレスが割り当てられれば、ブラウザでアクセスできます。
この時点で192.168.56.101にアクセスすれば、Apacheの「It Works!」が表示されるハズです。

上手くいったら、VirtualBoxのスナップショットで状態を保存しておくとよいでしょう。

SSHでの接続テスト

仮想Webサーバにあるファイルを触ったりするには、サーバにログインする必要があります。
ですが、実践の話をすると、サーバが手元にないことがほとんどです。

離れたところにあるサーバにログインできれば、必要な作業を行うことができます。
そのためには、SSHを用いてホストOSからログインすることになります。

ホストOSからログインする場合、仮想マシンは立ち上げるだけでOKです。
ログインする必要はありません。

端末(ターミナル)からSSHで接続します。
【仮想マシンにSSHでアクセスするコマンド】
$ssh (サーバでのユーザ名)@192.168.56.101

SSHには、接続する方法が2つあります。
パスワード認証方式と公開鍵認証方式の2つですが、公開鍵がわからないという方は、パスワード方式でいいと思います。
セキュリティ的には劣りますが、テスト環境なのでいいでしょう。
(ちなみに、Xserverの場合、SSHは公開鍵認証方式で行っています)

初めて接続した場合に、本当に接続するか確認されます。
YESを入力して、パスワードが通ればログイン完了です。
pwdやlsコマンドで遊んでみてください。

【参考】
インフラエンジニアじゃなくても押さえておきたいSSHの基礎知識 – Qiita

Webサーバの完成

仮想マシンにブラウザでアクセスすると、「It Works!」と表示されるでしょう。
これは、index.htmlファイルを表示しているためです。

ちょっと手を加えて、PHPの情報を表示してみます。
SSHの接続を活かして、仮想マシンに「index.php」を作成していきます。

index.phpの作成

Webサーバが表示するファイルは、「/var/www/html」ディレクトリに入っています。
(数年前はhtmlディレクトリがなかった気がします)

このhtmlディレクトリに「index.php」を作成します。
手順としては、空のファイルを作成して、編集するだけです。
まずは、htmlディレクトリに移動しましょう。
(移動しなくても操作できますが、移動したほうがコマンドが楽です)
【htmlディレクトリに移動するコマンド】
$ cd /var/www/html

ファイルの一覧を取得して、index.htmlが存在することを確認してみましょう。
【ディレクトリの中身を表示するコマンド】
$ ls -al

【空のファイルを作成するコマンド】
$ sudo touch index.php

エディタで編集して、PHPのプログラムを書き込みます。
IPアドレスを固定したときのように、viエディタで編集します。
書き込む内容は、たったの1行です。

<?php phpinfo(); ?>

index.phpの表示

書き込んだら、保存してブラウザからアクセスします。
アドレスは、「192.168.56.101/index.php」になります。

問題なければ、PHPの情報がズラリ。
加えて、追加でインストールしたphp-mbstringの名前もあります(Fig14)。

Fig14.index.phpで表示されるPHPの情報
Fig14.index.phpで表示されるPHPの情報

ちなみに、FTPで仮想マシンとやり取りをする場合、LinuxではFileZillaが有名でしょうか。
実は、UbuntuのファイルマネージャNautilus(私はCinnamonを導入しているのでnemo)でも、接続できます。
ホストOSで作ったファイルを送り込んでもいいでしょう。

これで、アクセスすればHTMLファイルを返すWebサーバにすることができました。
次回は、WordPressのインストールを進めていきます。

LAMPを導入したUbuntuServerにWordPressをインストールする方法【16.04】