エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する

      2019/03/02

VirtualBoxにCakePHP3を設置する。それに向かう前書き

 

CakePHP3を動かす環境を作るのは簡単!?

 
これまでの CakePHP3での開発も、お気楽に XAMPP環境を使って開発をしていたり、docker環境をもらってきて構築した環境を使って開発をしていたりしていました。
本番環境は、Webサーバとして用意されているものに CakePHP3をインストールすればいい、という環境から設定することが多かったため、OSのインストールから CakePHP3が稼働する環境を構築することがなかったわけです。
 
ですが、今回、とあるサービスの APIを利用したシステム構築をする際に、XAMPP環境では APIの利用に支障があったため、VirtualBoxに開発環境を構築することにしました。
 
 

この記事で構築できる VirtualBoxの CakePHP3の環境について

 
そんなわけで、VirtualBoxに CentOS7をインストールするところから始めて、CakePHP3が稼働するために必要な設定を行うところまでを詳細解説します。
いろんな不具合に見舞われながらもようやくゴールにたどり着きましたので、私自身の備忘録としても書き留めておく必要がある、と思ったものでもあります。
 
逆に言うと、この記事を読めば、VirtualBoxに CakePHP3が稼働する環境を構築することができます。
トラブルが発生した場合や解説も加えていますので、記事はすごく長いです!
 
でも、実際に作業する項目は多くはありませんので、トラブルがなければ 1時間くらいでインストール完了できます!
 
また、出来上がる環境は以下の通り。
 

  • Windows10環境の VirtualBox5.2.12
  • CentOS 7.3
  • Apache 2.4
  • MySQL 5.6
  • PHP 7.1
  • CakePHP 3.6
  • Composer 1.6.5
  • git 2.18.0
  • wget 1.14
  • gcc 4.8.5

 
そして、ホスト側から SSHでアクセスでき、Windows内の hostsファイルを設定して、VirtualHostにドメインでアクセスする、と言う環境を構築します。
 


 

VirtualBoxに CentOS7.3をインストールする流れ

 

VirtualBoxはインストールされている前提

 
前提として、この記事は、Windows環境に VirtualBoxがインストールされている前提で始めています。
 
VirtualBoxのインストールに関しては、各自で対応してください。
また、この記事は VirtualBox バージョン 5.2.12を使用しています。
 
VirtualBoxダウンロードページ
https://www.virtualbox.org/wiki/Downloads
 
VirtualBoxのインストールは、上記のダウンロードページからインストーラーをダウンロード、起動し、「次へ」「次へ」をクリックしていくと特に問題なくインストールすることができるでしょう。
 
 

最新版の CentOSのディスクイメージファイルを取得

 
まず始めに、CentOSのディスクイメージのファイルをダウンロードします。
 
通常の OSのインストールでは、CD-ROMや DVD-ROMからインストールを行うことが多いのですが、VirtualBoxのような仮想環境では実際の DVD-ROMなどを使わず、それをファイルにした「イメージディスク」を利用します。
 
 
下記、CentOSのオフィシャルサイトにアクセスします。
https://www.centos.org/
 
「Get CentOS Now」のボタンをクリックし、下記のダウンロードするディスクイメージの選択画面に移動します。
 
ダウンロードするディスクイメージ選択画面
https://www.centos.org/download/
 
上記の画面から「DVD ISO」をクリックし、下記のダウンロードサイトの一覧画面に遷移します。
 
CentOSダウンロードサイト一覧
http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso
 
このページは、CentOSのディスクイメージをダウンロードできるミラーサイトの一覧ページです。
どのサイトからダウンロードしても同じものがダウンロードできますので、どれをクリックしても OKです。
迷うなら、一番上のリンクをクリックすれば OKです。
 
リンクをクリックし、ディスクイメージファイル「CentOS-7-x86_64-DVD-1804.iso」をダウンロードします。
 
ちなみに、「CentOS-7-x86_64-DVD-1804.iso」は、4.2GBほどありますので、ダウンロードに数分かかります。
 
 

CentOSの ディスクイメージの種類

 
CentOSのディスクイメージには、「DVD ISO」「Everything ISO」「Minimal ISO」の 3種類あります。
 
今回は「DVD ISO」をダウンロードしてサーバを構築しますが、インストール時の「ソフトウェアの洗濯」では「最小限のインストール」でインストールしますので、「Minimal ISO」をダウンロードしても同じ構成になります。
 

  • 「DVD ISO」は、一般的な Linux環境を構築する際に使用するパッケージです。GUI環境を構築することができます。どれがいいかわからない場合は、これを選択しておくのが無難です。
  • 「Everything ISO」は、「DVD ISO」の構成に追加パッケージを含めたパッケージです。
  • 「Minimal ISO」は、最小構成のパッケージです。CUIのみのサーバ環境を構築する場合などはこちらを選択します。

 
 

VirtualBoxに新規仮想マシンを作成

 
CentOSをインストールする環境となる仮想マシンを新規で作成します。
 
1.VirtualBoxの「新規」ボタンをクリック
 
01_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
VirtualBoxのメニューの左上にある「新規」ボタンをクリックします。
 
 
2.「仮想マシンの作成」画面で情報入力
 
02_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
上記の「仮想マシンの作成」画面で各種必要な情報を入力します。
 
「名前とオペレーティングシステム」の「名前」は任意のものを入力します。
「タイプ」は「Linux」、「バージョン」は「Red Hat (64-bit)」を選択します。(ただのマークなので、何を選んでも OKですが。)
 
「メモリサイズ」は「1024」㎆とします。
メモリは最低でも 512㎆必要です。また、環境構築後に変更することも可能なためあまり悩まず設定しておきます。
 
「ハードディスク」は「仮想ハードディスクを作成する」を選択します。
 
そして「作成」ボタンをクリックします。
 
 
3.「仮想ハードディスクの作成」画面で情報入力
 
03_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
上記の「仮想ハードディスクの作成」画面で各種必要な情報を入力します。
 
「ファイルの場所」は、デフォルトのままで OK。
変えたい理由がある場合は変更してください。
 
「ファイルサイズ」もデフォルトの「8.00」GBのままで OK。
この設定は環境構築後に変更することも可能なため、あらかじめ大きな容量が必要だと分かっている場合以外はデフォルトのままでいいでしょう。
 
 
「ハードディスクのファイルタイプ」もデフォルトのままの「VDI (VirtualBox Disk Image)」のままで OK。
 
「物理ハードディスクにあるストレージ」もデフォルトのままの「可変サイズ」で OK。
この設定も環境構築後に変更することも可能なため、あまり悩まずデフォルトの「可変サイズ」でいいでしょう。
 
設定を確認して「作成」ボタンをクリックします。
 
04_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
仮想マシンの一覧に作成した「CentOS7.3」のアイコンが出現します。
 
 

新規作成した VirtualBoxの仮想マシンの設定

 
続いて、新規作成した仮想マシンの設定を行います。
 
05_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
作成した仮想マシンを選択した状態で、画面上部にある「設定」ボタンをクリックし、設定画面を呼び出します。
 
06_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
「CentOS7.3 – 設定」の画面で、左メニューの中から「ストレージ」を選択します。
表示される画面中央部の「ストレージデバイス」から「コントローラー:IDE」の下にある「空」と表示されている DVD-ROMのアイコンを選択します。
表示される画面右側の「属性:光学ドライブ」の項目の一番右にある DVD-ROMのアイコンをクリックし、「仮想光学ドライブを選択」をクリックします。
 
表示されるファイル選択のダイアログから、一番最初の項目でダウンロードしてきた CentOS7.3のディスクイメージ「CentOS-7-x86_64-DVD-1804.iso」を選択します。
 
「OK」をクリックして、設定画面を閉じます。
 
 

VirtualBoxに CentOSをインストール

 
いよいよ、CentOSをインストールします。
 
07_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
作成した仮想マシンを選択した状態で、画面上部にある「起動」ボタンをクリックし、仮想マシンを起動します。
 
08_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
しばらくすると、上記の選択画面が表示されますので、「Install CentOS 7」の方を選択して、「Enter」を押します。
(「「Test this media & Install CentOS 7」の方を選択してもちょっと時間がかかるだけなので何の問題もありません。)
 
画面が切り替わり、いろいろなファイルがインストールされ、緑色の「OK」という文字が流れていき、そのあとに下記の言語を選択する画面が表示されます。
 
09_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
画面の左側の選択肢の中から「日本語」を選択します。
画面下部の入力ボックスに「ja」と入力すると、日本語を探しやすくなります。
 
「日本語」を選択したら「続行」をクリックします。
 
 
ちなみに、VirtualBoxの仮想マシンのウインドウをクリックすると、マウスカーソルは、その仮想マシンのウインドウから出られなくなります。
仮想マシンのウインドウからマウスカーソルを取り出すには、キーボードの右側にある「Ctrl」キーを押します。左側の「Ctrl」キーを押しても意味がありません。
 
 
10_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
続いて表示される「インストールの概要」画面では、「システム」の中の「インストール先」を設定します。
 
11_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
この画面ではデフォルトのままで、特に設定する内容はありませんので「完了」をクリックして、前の画面に戻ります。
 
 
続いて、「ネットワークとホスト」をクリックします。
 
12_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
「Ethernet(enp0s3)」を選択し、画面右側にある「オン/オフ」のボタンを「オン」にします。
設定をしたら「完了」をクリックして前の画面に戻ります。
 
 
13_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
「インストールの開始」ボタンがクリックできるようになっていますので、クリックして先に進みます。
 
「ソフトウェアの選択」では「最小限のインストール」が選択されていますが、サーバ環境として CUI環境を想定していますので、「最小限のインストール」のままインストールします。
 
 
14_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
「root」権限のパスワードの設定と、ユーザの作成を行います。
 
ちなみに、画面の下部にインストールの状況を知らせるインジケーターが進んで行っていますが、勝手に処理が終わったりはしませんので、焦らずにユーザの設定をしてください。
 
 
15_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
root権限のパスワードを設定します。
パスワードが簡単すぎる場合は「完了」を 2回クリックする必要があります。
 
 
16_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
ユーザを設定します。
ユーザの作成は必須ではありませんが、作っておく方がいいでしょう。
 
今回は、開発環境のため、「admin」というアカウントを作成しました。
本番環境では「admin」というアカウントはリスクが高いため、違うアカウントを設定する方がおススメです。
 
 
17_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
root権限のパスワードの設定が終わり、必要なファイルのインストールも終了すると「設定完了」ボタンをクリックできるようになりますので、それをクリックします。
 
またしばらくファイルのインストールが続き、各種設定が終ると「再起動」ボタンが表示されますので、それをクリックします。
 
 
18_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
再起動したのち、そのまま待っていると、途中、起動するシステムの選択画面が表示されますが、デフォルトで選択されている上部の「CentOS Linux (3.10.0-862.e17.x86_64) 7 (Core)」の方を選択してして Enterを押すか、そのまま待っていると自動的にデフォルト設定の方のシステムが起動し、ログイン画面が表示されます。
 
19_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
これで無事に CentOSがインストールできました。
root権限でログインできるか、ログインを試してみるのもいいでしょう。
 


 

VirtualBoxに SSHでアクセスできるようにする流れ(DHCPサーバーを利用する場合)

 
前項で、VirtualBoxに仮想マシンを作成し、そこに CentOSをインストールしました。
 
ただ、この状態ではホスト側(Windowsパソコン側)からアクセスできませんので、システム開発を行うのには不便です。
 
そのため、ホスト側から ssh接続、http接続ができるように設定します。
 
 
ただ、章では、DHCPサーバーを利用する場合の設定方法の解説です。
DHCPサーバーを利用しない方法の設定をする場合は、次の章を確認してください。
 
 
仮想マシンが起動したままではネットワークの設定ができませんので、root権限でログインし、下記のコマンドを実行してシャットダウンします。
 

 
 
20_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
仮想マシンのウインドウの閉じるボタンをクリックして、表示される「仮想マシンを閉じる」のダイアログで「仮想マシンの電源オフ」を選択しても OKです。
 
 

VirtualBoxの「ホストネットワークマネージャー」の設定

 
VirtualBoxの仮想マシンの設定を始める前に、VirtualBox自体のネットワーク設定を行います。
 
21_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
VirtualBoxの右上にある「グローバルツール」の右端にある「▼」をクリックし、表示されるメニューから「ホストネットワークマネージャー」画面を呼び出します。
 
22_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
ネットワークの設定を新規作成しますので左上の「作成」ボタンをクリックします。
 
「作成」ボタンをクリックすると「このアプリがデバイスに変更を加えることを許可しますか?」という確認画面が表示されますので「はい」をクリックします。
 
 
私の環境では、VirtualBoxを新規でインストールした場合でも上記の通り「VirtualBox Host-Only Ethernet Adapter」がありました。
すでにある場合は、「プロパティ」ボタンをクリックし、設定内容を確認してください。
 
 
23_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
上記の画面が表示されますので、しばらく待ちます。
 
24_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
すると、上記のように「VirtualBox Host-Only Ethernet Adapter」が作成されます。
これをダブルクリック(もしくは、選択して「プロパティ」ボタンをクリック)します。
 
 
25_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
画面下部に「アダプター」「DHCPサーバー」の設定画面が表示されますので、これを設定します。
ここに設定する内容は、LAN環境によっては違う場合がありますので、ネットワーク管理者がいるような会社であればその方に設定する情報を確認するといいでしょう。
 
私の環境の場合は、「アダプターを手動で設定」を選択して、以下の設定をしました。
「IPv4アドレス」は「192.168.56.1」
「IPv4ネットマスク」は「255.255.255.0」
「IPv6アドレス」「IPv6ネットマスク長」は入力しません(入力できません)。
 
 
26_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
続けて「DHCPサーバー」では、「サーバーを有効化」にチェックを入れて、以下の設定をしました。
「サーバーアドレス」は「192.168.56.100」
「サーバーマスク」は「255.255.255.0」
「アドレス下限」は「192.168.56.101」
「アドレス上限」は「192.168.56.254」
 
入力をしたら「適用」ボタンをクリックして、入力情報を保存します。
 
 
27_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
設定が終ったら、「マシンツール」の右にある「▼」をクリックし、「詳細」を選択して詳細画面に戻ります。
 
 

仮想マシンのネットワークの設定

 
続いて、新規作成した仮想マシンのネットワーク設定を行います。
 
05_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
作成した仮想マシンを選択した状態で、画面上部にある「設定」ボタンをクリックし、設定画面を呼び出します。
 
 
28_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
設定する項目は「ネットワーク」ですので、左メニュから「ネットワーク」をクリックします。
「アダプター1」のタブは変更点はありません。
「アダプター2」のタブを開きます。
 
29_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
「アダプター2」では、「ホストオンリーアダプター」の設定をします。
 
「ネットワークアダプターを有効化」にチェックを入れ、下記の設定を行います。
「割り当て」は「ホストオンリーアダプター」。
「名前」は、前項の「ホストネットワークアダプター」で設定した「VirtualBox Host-Only Ethernet Adapter」を選択します。
 
設定をしたら「OK」ボタンをクリックし、設定画面を閉じます。
 
 

仮想環境のネットワーク接続を有効にする

 
いったん電源をオフにした仮想マシンを起動させます。
 
31_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
仮想マシンのウインドウにあるメニューから「デバイス」-「ネットワーク」を選択すると表示される「ネットワーク接続1」「ネットワーク接続2」をクリックします。
 
上記画面のように「☑」がある状態であることを確認します。
「☑」がある状態であれば、仮想マシンのハードウェアとしてネットワークは接続されている状態です。
 
32_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
上記のように「☑」が付いていない状態(ネットワークが接続されていない状態)の場合は、クリックをして「☑」が付いている状態にします。
 
 

ip rコマンドで仮想マシンに割り当てられた IPアドレスを確認

 
仮想マシンのウインドウはログインを待つ画面になっていると思いますので、root権限でログインします。
 
これ以降の設定は、基本的に root権限で設定を行います。
本来は、root権限ではログインできないようにして、sudoコマンドで設定をする方がいいのですが、今回は VirtualBoxの環境構築ということで。
 
 
ログインをしたら、下記の「ip r」コマンドを実行し、下記の様にネットワーク設定が反映されていることを確認します。
 

 
最後の行の「enp0s8」に続く IPアドレス「192.168.56.101」が、仮想マシンに設定された IPアドレスです。
この IPアドレスで SSHでの接続ができるようになります。
「TeraTerm」や「PuTTY」などで仮想環境に SSH接続を試してみてください。
(仮想マシンを起動した直後などは、SSH接続ができない場合もありますので、SSH接続は 30秒ほど待ってから接続するとよさそうです。)
 
 
今回の設定は、「ホストネットワークマネージャー」を設定する際に、「DHCPサーバー」の項目は「サーバーを有効化」にチェックを入れ、アドレスを「192.168.56.101」~「192.168.56.254」で設定しています。
 
そのため、複数の仮想マシンを設定した場合などは、仮想マシンに割り当てられる IPアドレスが変わる場合もあります。
 
そのため、以前は接続できていた IPで突然接続できなくなった、と言うような場合は、「ip r」コマンドを実行し、仮想マシンに割り当てられている IPアドレスを確認してみてください。
 
 

「ifconfig」「route」コマンドは非推奨に

 
ネットワークの設定を確認する際に「ip r」コマンドを使っています。
 
これは、CentOS7から「ifconfig」「route」コマンドが非推奨になったためです。
 
詳しくは下記のサイトに記事がありますが、「net-tools」に含まれる「ifconfig」「route」「netstat」「netstat」「arp」のコマンドは、非推奨になり、そのうち使えなくなります。
http://enakai00.hatenablog.com/entry/20140712/1405139841
 
なので、新しいコマンド「ip」コマンドなどを使った方がよさそうです。
 


 

VirtualBoxに SSHでアクセスできるようにする流れ(DHCPサーバーを利用しない場合)

 
前項では、DHCPサーバーを利用する設定方法を行っています。
DHCPサーバーを利用する方が、ネットワークの設定を自動的に行ってくれますので、設定する内容が少なくて済みます。
 
ですが、状況によっては設定されている IPが変わることもありますので、DHCPサーバーを利用せずに手動で IPアドレスを設定したい、という場合もあるでしょう。
 
その場合の設定方法についての解説です。
(「DHCPサーバー」を利用する方法で設定した場合は、この章を飛ばしてください。)
 
 
仮想マシンが起動したままではネットワークの設定ができませんので、root権限でログインし、下記のコマンドを実行してシャットダウンします。
 

 
 
20_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
仮想マシンのウインドウの閉じるボタンをクリックして、表示される「仮想マシンを閉じる」のダイアログで「仮想マシンの電源オフ」を選択しても OKです。
 
 

VirtualBoxの「ホストネットワークマネージャー」の設定

 
VirtualBoxの仮想マシンの設定を始める前に、VirtualBox自体のネットワーク設定を行います。
 
21_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
VirtualBoxの右上にある「グローバルツール」の右端にある「▼」をクリックし、表示されるメニューから「ホストネットワークマネージャー」画面を呼び出します。
 
22_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
ネットワークの設定を新規作成しますので左上の「作成」ボタンをクリックします。
 
「作成」ボタンをクリックすると「このアプリがデバイスに変更を加えることを許可しますか?」という確認画面が表示されますので「はい」をクリックします。
 
 
私の環境では、VirtualBoxを新規でインストールした場合でも上記の通り「VirtualBox Host-Only Ethernet Adapter」がありました。
すでにある場合は、「プロパティ」ボタンをクリックし、設定内容を確認してください。
 
 
23_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
上記の画面が表示されますので、しばらく待ちます。
 
24_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
すると、上記のように「VirtualBox Host-Only Ethernet Adapter」が作成されます。
これをダブルクリック(もしくは、選択して「プロパティ」ボタンをクリック)します。
 
 
25_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
画面下部に「アダプター」「DHCPサーバー」の設定画面が表示されますので、これを設定します。
ここに設定する内容は、LAN環境によっては違う場合がありますので、ネットワーク管理者がいるような会社であればその方に設定する情報を確認するといいでしょう。
 
私の環境の場合は、「アダプターを手動で設定」を選択して、以下の設定をしました。
「IPv4アドレス」は「192.168.56.1」
「IPv4ネットマスク」は「255.255.255.0」
「IPv6アドレス」「IPv6ネットマスク長」は入力しません(入力できません)。
 
33_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
続けて「DHCPサーバー」では、「サーバーを有効化」にチェックを入れません。
今回の設定では、「DHCPサーバー」を使用しないためです。
 
入力をしたら「適用」ボタンをクリックして、入力情報を保存します。
 
 
27_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
設定が終ったら、「マシンツール」の右にある「▼」をクリックし、「詳細」を選択して詳細画面に戻ります。
 
 

仮想マシンのネットワークの設定

 
続いて、新規作成した仮想マシンのネットワーク設定を行います。
 
05_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
作成した仮想マシンを選択した状態で、画面上部にある「設定」ボタンをクリックし、設定画面を呼び出します。
 
 
28_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
設定する項目は「ネットワーク」ですので、左メニュから「ネットワーク」をクリックします。
「アダプター1」のタブは変更点はありません。
「アダプター2」のタブを開きます。
 
29_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
「アダプター2」では、「ホストオンリーアダプター」の設定をします。
 
「ネットワークアダプターを有効化」にチェックを入れ、下記の設定を行います。
「割り当て」は「ホストオンリーアダプター」。
「名前」は、前項の「ホストネットワークアダプター」で設定した「VirtualBox Host-Only Ethernet Adapter」を選択します。
 
設定をしたら「OK」ボタンをクリックし、設定画面を閉じます。
 
 
30_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
この「アダプター2」の画面の「高度」の「▼」をクリックして表示される詳細情報のうち、「MACアドレス」は、この後設定する「NetworkManager」で「ホストオンリーアダプター」を判断する場合にも使用します。
確実性を求めるのであれば、この「MACアドレス」を書き留めておいてください。
 
 

仮想環境のネットワーク接続を有効にする

 
いったん電源をオフにした仮想マシンを起動させます。
 
31_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
仮想マシンのウインドウにあるメニューから「デバイス」-「ネットワーク」を選択すると表示される「ネットワーク接続1」「ネットワーク接続2」をクリックします。
 
上記画面のように「☑」がある状態であることを確認します。
「☑」がある状態であれば、仮想マシンのハードウェアとしてネットワークは接続されている状態です。
 
32_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
上記のように「☑」が付いていない状態(ネットワークが接続されていない状態)の場合は、クリックをして「☑」が付いている状態にします。
 
 

nmtuiコマンドで NetworkManagerの設定

 
仮想マシンのウインドウはログインを待つ画面になっていると思いますので、root権限でログインします。
 
これ以降の設定は、基本的に root権限で設定を行います。
本来は、root権限ではログインできないようにして、sudoコマンドで設定をする方がいいのですが、今回は VirtualBoxの環境構築ということで。
 
 
ネットワークの設定をするため、下記「nmtui」コマンドを使って NetworkManagerを立ち上げます。
 

 
コマンドを実行すると下記の画面が表示されます。
 
34_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
「Edit a Connection」を選択します。
 
この画面では、マウスは使えませんので、キーボードのカーソル、Tab、Enterを使って操作します。
 
 
35_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
「enp0s8」(ホストオンリーアダプター)を選択します。
 
「enp0s3」は「NATアダプター」です。
日本語環境では、アダプタ名が文字化けしている場合もありますが、「enp0s3」ではない方を選択すれば OKです。
 
正確に確認するには、下記の画面で表示される「Device」の項目に表示される「MACアドレス」が、先に書き留めたものと同じであることを確認します。
 
 
37_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
「enp0s8」(ホストオンリーアダプター)を上記の画面のように設定をします。
 
「IPv4 CONFIGURATION」の「Automatic」を選択すると、選択肢が表示されますので、その中から「Manual」を選択します。
 
続けて、「IPv4 CONFIGURATION」の右にある「Show」を選択すると、入力項目が表示されますので、下記の項目を入力します。
 
「Addresses」には「192.168.56.101/24」を入力します。
 
ここで入力する IPが、仮想マシンにアクセスする際の IPアドレスとなりますので、他に仮想サーバを構築している場合は「192.168.56.102」「192.168.56.103」のように適宜変更してください。
 
また、下記 2つにもチェックを入れてください。
「Never use this network for default route」
「Require IPv4 addressing for this connection」
 
 
ちなみに、「Profile name」は、単なる表記ですので、自由に変更しても問題ありません。
文字化けしている場合も「enp0s8」などに書き換えても OKです。
 
 
38_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
続けて、「IPv6 CONFIGURATION」を「Ignore(無効)」を設定します。
 
また、下記 2つにもチェックを入れてください。
「Automatically connect」
「Available to all users」
 
設定が終ったら「OK」で画面を戻り、「Back」で画面を戻り、「Quit」で「NetworkManager」を終了させます。
 
 
コマンドを入力する画面に戻ったら、下記のコマンドを実行し、設定した内容を反映させます。
 

 
 
続けて、下記の「ip r」コマンドを実行し、下記の様に設定が反映されていることが確認できれば設定完了です。
 

 
最後の行の「enp0s8」に続く IPアドレス「192.168.56.101」が、仮想マシンに設定された IPアドレスです。
この IPアドレスで SSHでの接続ができるようになります。
「TeraTerm」や「PuTTY」などで仮想環境に SSH接続を試してみてください。
(仮想マシンを起動した直後などは、SSH接続ができない場合もありますので、SSH接続は 30秒ほど待ってから接続するとよさそうです。)
 
 
もし、「ip r」コマンドを実行して設定内容が反映されていない、SSHでの接続ができない、という場合は、下記のコマンドで仮想マシンを再起動してみたり、先に実行した「systemctl restart network」コマンドを何度か実行してみたり、「デバイス」-「ネットワーク」で表示される「ネットワーク接続1、2」を切断したり接続したりしてみてください。
 

 
ここまで設定をして上手く接続できないのは、設定が間違っているからではなく、設定内容が反映されていない可能性が多くあります。
 
 

「ifconfig」「route」コマンドは非推奨に

 
ネットワークの設定を確認する際に「ip r」コマンドを使っています。
 
これは、CentOS7から「ifconfig」「route」コマンドが非推奨になったためです。
 
詳しくは下記のサイトに記事がありますが、「net-tools」に含まれる「ifconfig」「route」「netstat」「netstat」「arp」のコマンドは、非推奨になり、そのうち使えなくなります。
http://enakai00.hatenablog.com/entry/20140712/1405139841
 
なので、新しいコマンド「ip」コマンドなどを使った方がよさそうです。
 
 
参考サイト
https://qiita.com/uhooi/items/c41ccaed66e944aa859d
https://qiita.com/100/items/80a899fbaeb1e82b3f67
https://qiita.com/yulily@github/items/84e9c004c15df57b455d#fnref2
https://qiita.com/s9910553/items/b156a341178df33466a9
 


 

Apacheをインストールし、ブラウザでアクセスできるようにする流れ

 
仮想マシンの設定が終り、SSHでアクセスができるようになりましたので、今後の設定は、SSHで接続して行います。
(仮想マシンのコンソールで作業をしてもいいのですが、画面が狭く作業がしづらいと思います。)
 
また、先にも書きましたが、設定は root権限で行います。
 
 

Apacheのインストール

 
yumコマンドを利用して、Apacheをインストールします。
 

 
Apacheのインストールが終わったら、下記のコマンドでインストールされたバージョンなどの確認をします。
 

 
 

「yum install」コマンドの「-y」オプション

 
Apacheや PHPのインストールの解説サイトを見ると「yum install httpd」と「yum install -y httpd」とコマンドが書いてあり、「-y」オプションが付いていたり、付いていなかったりします。
 
この「-y」オプションは、ソフトをインストールする際に、何度か確認が入る「よろしいでしょうか?」に対して、自動的に「yes」を返すオプションです。
 
そのため、この記事のコマンドにはすべて「-y」を付けて書いています。
 
この記事で「-y」を付けている理由は、実は、インストールする前に、インストールが可能かどうか、次項の「--assumeno」オプションを付けて検証しているためです。
 
 

「yum install」コマンドの「--assumeno」オプション

 
--assumeno」オプションは、下記の様に使用します。
 

 
--assumeno」は、実際にはインストールせず、インストールが可能か、依存関係を確認するためのオプションです。
前項の「-y」オプションの長いオプションは「--assumeyes」で、「よろしいでしょうか?」に対してすべて「yes」と返答するコマンドで、「--assumeno」は「no」と返答するコマンドです。
 
そのため、依存関係を確認したのち、「インストールを実行してよろしいでしょうか?」の最初の質問で「no」と回答するため、依存関係の確認ができる、という仕組みのオプションです。
 
インストールコマンドを実行する前に、インストールが可能か、インストールされるバージョンが何か、などの確認に使います。
 
 

「httpd -v」コマンドでインストールの確認

 
インストールしたソフトのコマンドに対して「-v」もしくは「--version」オプションを付けて実行すると、インストールされているソフトのバージョンが表示されます。
 

 
これを利用して、インストールされたソフトウェアが正しくインストールされたかを確認します。
 
 
これ以降の解説では割愛しますが、ソフトのインストールを実行するたびに「-v」もしくは「--version」オプションを付けてインストールの確認をすることをオススメします。
 
正しくインストールされていない場合は、下記の様に「command not found」が表示されます。

 
 
ちなみに、「-v」と「--version」とどちらを使えばいいかは、下記の様にソフトごとに違いますので、とりあえず実行してみるといいでしょう。
「httpd」は「-v」しか使えません。
「mysql」は「--version」しか使えません。
「php」は「-v」「--version」の両方使えます。
 
 

「yum install httpd」で「Could not retrieve mirrorlist http://mirrorlist.centos.org/...」のエラーが出る場合の対処方法

 
Apacheをインストールするために「yum install httpd」コマンドを実行すると、下記の下記の様に「Could not retrieve mirrorlist http://...(サイトにアクセスできません)」というエラーメッセージが出る場合があります。
 
このエラーの原因と対応方法を解説します。
 

 
このエラーは、仮想マシンの中から、ホストマシン(Windowsパソコン)を経由して、インターネット上のサイトにアクセスできません、というエラーです。
 
CentOSをインストールする際に「ネットワークとホスト」で、「Ethernet(enp0s3)」の接続を「オン」にしておくことで回避できるエラーです。
そのため、この手順通りに行っていれば出ないはずですが、設定し忘れていた場合などはこのエラーが発生します。
 
 
このエラーが発生した場合は、下記の「ifcfg-enp0s3」ファイルを更新します。
 

 
「ifcfg-enp0s3」ファイルを開いて、一番最後の行の「ONBOOT=no」を「ONBOOT=yes」に変更して保存します。
 

 
更新したファイルの内容を反映させるため、下記のコマンドでネットワーク設定を再起動を行います。
 

 
 
設定が正しく行われたことを確認するためには、「ip r」コマンドを使用します。
 
「enp0s3」が正しく設定が行われていない場合は、下記の様に「enp0s8」の情報しか表示されません。
 

 
「enp0s3」が正しく設定されると、下記の様に「enp0s3」の情報も表示されるようになります。
 

 
これで、Apacheを始め、他のソフトのインストールができるようになります。
 
 

Apacheを起動する

 
Apacheをインストールしましたので、下記のコマンドで Apacheを起動します。
 
が、その前に、下記コマンドで Apacheが起動していないことを一度確認します。
(すでに起動している時は、改めて起動させる必要はありません。)
 

 
続いて、下記のコマンドで、Apacheを起動します。
 

 
上記のコマンド以外にも Apacheを起動、再起動するコマンドは複数存在しています。
上記のコマンド以外のコマンドについては、下記に記事を書いていますので、あわせて参考にしてください。
Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド
 
 
また、上記のコマンドを実行しても正常時は何もレスポンスはありません。
そのため、下記のコマンドで改めて起動状況を確認します。
 

 
3行目に「Active: active」と表示されていますので、無事に稼働していることが確認できました。
 
 
ちなみに、18行目に「AH00558」のワーニングが出ています。
これについては、後ほど(VirtualHostを設定する際に)対応を行います。
 
 

「Job for httpd.service failed because the control process exited with error code. See “systemctl status httpd.service” and “journalctl -xe” for details.」のエラーが出る場合の対応方法

 
いろいろな状況で様々なエラーが発生しますので、全てのエラーの対応方法を記載することはできませんが、この記事を書く際に発生した一つの現象として、Apacheがすでに起動しているため、Apacheを起動できない、と言うエラーがあります。
 
「systemctl start httpd」コマンドで Apacheを起動しようとしたときに、下記の様なエラーメッセージが表示されます。
 
上記のようにパスを指定するような記述をして Apacheを再起動した場合、下記のようなエラーメッセージが出て Apacheは起動できなくなります。

 
 
理由を調べるために「systemctl status httpd」コマンドを実行すると、「すでに httpdが起動しています。」と言うエラーメッセージが表示されることがありました。(エラーメッセージを保存していません。)
 
この場合は、下記コマンドで仮想マシンを再起動するといいでしょう。
 

 
次の項で設定する、Apacheが自動起動する設定をしていませんので、仮想マシンを再起動させると Apacheは停止しますので、二重起動になることがなくなります。
 
 

仮想マシン起動時に Apacheの自動起動を ONにする

 
現在の状態では、仮想マシンの電源を落としたり、再起動したりしたときは、Apacheは止まってしまいます。
そうならないために、下記のコマンドを実行し、仮想マシンが起動した際に Apacheも自動起動する設定を行います。
 

 
 
正しく自動起動の設定が行われたかを確認するには、下記のコマンドを実行します。「enabled」と表示されれば正しく設定されたことが確認できます。
 

 
 

ブラウザでアクセスができるように firewallコマンドでポートを開放

 
Virtualboxの Firewallの初期設定は、ホスト側からブラウザでアクセスできるようになっていません。
 
そのため、下記のコマンドを実行して 80番ポート(http)を解放するため、下記のコマンドを実行します。
続けて、設定情報をリロードし、設定情報を反映させます。
 

 
これで、ブラウザでアクセスできるようになっています。
下記の様に Apacheの確認画面が表示されれば OKです。
 
39_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
 

CentOS7では iptablesではなく firewallを使ってポートをコントロールする

 
CentOS7より前は、ポートの開閉の制御は「iptables」コマンドを利用していました。
ですが、CentOS7からは「firewall」コマンドに切り替わったようです。
 
今回構築している環境では「iptables」コマンドも使えるようですが、構成によっては「iptables」が使えない場合もあるようですので、新しい「firewall」コマンドで構築できるようになっておく方が良さそうです。
 
参考サイト
http://fnya.cocolog-nifty.com/blog/2014/07/centos-7-virtua.html
 


 

MySQL、PHPをインストールする流れ

 
Apacheのインストールが終わりましたので、MySQL、PHPのインストールを行います。
 
 

MySQLのインストール

 
yumコマンドを利用して、MySQLをインストールします。
 
まず、下記コマンドでリポジトリをインストールします。
リポジトリを取得せずに MySQLをインストールした場合は、MySQL5.5がインストールされました。
 

 
つづけて、下記コマンドで MySQLをインストールします。
ライブラリは必要に応じて変えてください。
 

 
インストールが完了したら、下記コマンドでインストールできたかを確認します。
 

 
 

MySQLを起動する

 
MySQLをインストールしましたので、MySQLを起動します。
 
MySQLを起動する前に、一度下記のコマンドで MySQLのステータスを確認します。
 

 
「Active: inactive (dead)」となっていますので、下記のコマンドで MySQLを起動します。
 

 
上記のコマンドは、正常に起動してもレスポンスはありません。
そのため、下記のコマンドで改めて MySQLのステータスを確認します。
 

 
3行目に「Active: active (running)」と表示されていますので、無事に稼働していることが確認できました。
 
 

仮想マシン起動時に MySQLの自動起動を ONにする

 
現在の状態では、仮想マシンの電源を落としたり、再起動したりしたときは、MySQLは止まってしまいます。
そうならないために、下記のコマンドを実行し、仮想マシンが起動した際に MySQLも自動起動する設定を行います。
 

 
入力したコマンドによって正しく設定されたかどうかを確認するには、下記のコマンドを実行します。「enabled」と表示されれば正しく設定されたことが確認できます。
 

 
 

PHPのインストール

 
yumコマンドを利用して、PHPをインストールします。
 
まず、下記コマンドで EPELリポジトリをインストールします。
リポジトリをインストールしないと、PHP5.4がインストールされました。
 

 
続けて、Remiリポジトリをインストールします。
 

 
 
つづけて、下記コマンドで PHPをインストールします。
 

 
 
インストールが完了したら、下記コマンドでインストールできたかを確認します。
 

 
 
インストール PHPを反映させるため、下記のコマンドで Apacheを再起動します。
 

 
 
動作確認として、デフォルトのドキュメントルート「/var/www/html/」に「phpinfi();」を記述した「index.php」ファイルを作成し、ブラウザでアクセスしてください。
 
下記の「phpinfo()」の画面が表示されれば正しくインストールができていることの確認ができます。
 
40_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
 

PHPをインストールする際の PHPのバージョン指定、および、ライブラリ指定

 
今回、PHPをインストールする際に使ったコマンドは以下の通りです。
 

 
このコマンドの中で PHPのバージョンや、一緒にインストールするライブラリなどを指定していますので、その解説をします。
 
「remi-php71」の「71」が PHPのバージョンを指定する箇所で、「71」は「PHP 7.1」になります。
「PHP 5.6」は「56」で、「PHP 7.0」は「70」を指定します。
 
また、「php-mbstring php-devel php-pdo php-mysqlnd php-json php-common php-fpm php-cli php-xml php-process php-intl」の部分がライブラリで、必要とするライブラリを指定します。
 
CakePHP3のシステム要件には「mbstring PHP 拡張」「intl PHP 拡張」「simplexml PHP 拡張」が必須と書いてあります。
 
CakePHP3 システム要件
https://book.cakephp.org/3.0/ja/installation.html#id2
 
また、MySQLを使用するには「PDO拡張モジュール」が必要です。
Gitをインストールする際に「php-devel」が必要です。
 
そのため、「php-mbstring php-devel php-pdo php-mysqlnd php-xml php-intl」が必須として指定する必要があるライブラリです。
 
その他、「php-json(JSONを扱うライブラリ)」「php-fpm(PHPの高速化 FPM(FastCGI Process Manager)に関するライブラリ)」「php-cli(PHPをコマンドラインから利用するライブラリ)」等を加えて、上記の指定になっています。
必要に応じて増やしたり減らしたりしてください。
 
 

「rpm -qa | grep php」コマンドで参照する環境のライブラリを確認

 
VirtualBoxに開発環境を作成する目的として、すでにある本番環境を参考にして開発環境を作る、と言う場合もあるかと思います。
 
その場合、本番環境にどのような PHPのライブラリがインストールされているかを確認したいと思う場合もあるでしょう。
 
そんなときは、下記のコマンドを実行すると、インストールされてたライブラリの一覧が表示されますので、表示される一覧に基づいてライブラリを指定して PHPをインストールするといいでしょう。
 

 
例えば、「php-common-7.1.19-1.el7.remi.x86_64」は「php-common」がインストールされています。「remiリポジトリ」からインストールされています。と言った内容です。
 
 

追加で PHPのライブラリをインストールする場合

 
PHPをインストールした後に必要なライブラリが分かった場合などに、後から特定のライブラリだけをインストールしたい場合があるかと思います。
 
そういう場合は、下記の様な感じで、必要なライブラリだけを指定してインストールすれば OKです。
 

 


 

CakePHP3をインストールするための流れ

 
いよいよ、セットアップのクライマックス、CakePHP3のインストールです。
 
すでに環境が整っている場合は、CakePHP3をインストールするフォルダに移動し、下記のコマンドを実行するだけでインストールすることができます。
※「composer」コマンドは、root権限ではなく、Webサイトを構築するユーザの権限で実行します。
 

 
ですが、CakePHP3をインストールするには、Composer、Gitが必要になります。
Gitをインストールするには wget、gccが必要であったり、CentOSを最小単位でインストールした場合は、zip、unzipコマンドが入っていませんので、これもインストールする必要があります。
 
 
ちなみに、上記のコマンドを実行すると、最新版の CakePHP3がインストールされます。
場合によってはバージョンを指定してインストールしたい場合もあるかと思いますが、その場合は、下記の記事を参考にしてください。
CakePHP3、CakePHP4のバージョンを指定してインストールする詳細な手順を解説
 
 

Composerをインストール

 
まず、Composerをインストールするためのインストーラー「composer-setup.php」をダウンロードするため、下記のコマンドを実行します。
ダウンロードする場所はどこでも問題ありません。後から削除、移動の対応を行いますので。
 

 
※「curl」や「wget」コマンドでダウンロードしても問題ありませんが、「wget」コマンドは別途インストールする必要があります。
 
 
続いて、ダウンロードした「composer-setup.php」を実行して、実行ファイル「composer.phar」を作成するため、下記のコマンドを実行します。
 

 
 
ls」コマンドを実行して、実行ファイル「composer.phar」が作成されていることを確認できたら、「composer.phar」は不要ですので、下記のコマンドで削除します。
(「rm」コマンドで削除しても問題ありません。)
 

 
 
実行ファイル「composer.phar」を、CentOSのどこからでも使えるようにするため、また、コマンドを扱いやすいように、拡張子を取り除くため、下記のコマンドを実行します。
 

 
※システム上のどこからでもコマンドを入力すれば実行できるようにパスが通った場所のことを、Composerでは「globally」と表現しています。
 
 

Composerをインストールする理由と解説

 
Composerオフィシャルサイト
https://getcomposer.org/
 
「Composer」は、PHP向けのアプリケーションやライブラリの依存関係を管理するシステムで、アプリケーションをインストールするときに使います。
 
PHPのフレームワークの「CakePHP3」や「laravel」などは、この Composerを使ってインストールをします。
また、フレームワーク内で使用するプラグインを導入する際にも Composerを使います。
 
 
参考サイト
https://weblabo.oscasierra.net/php-composer-centos-install/
https://qiita.com/inakadegaebal/items/d370bcb1627fce2b5cd1
 
 

CakePHP3をインストールするための準備・zip、unzipをインストール

 
zip、unzipをインストールため、下記のコマンドを実行します。
 

 
 

zip、unzipをインストールする理由と解説

 
CentOSをインストールする際、Webサーバを構築する用の構成となる「最小構成」を選択していた場合、CakePHP3をインストールする際に必要となる zip、unzipコマンドが入っていません。
 
そのため、CakePHP3をインストールするコマンド「composer create-project --prefer-dist cakephp/app myapp」を実行すると下記のエラーが発生します。
 

 
参考サイト
https://teratail.com/questions/46730
 ※上記サイトのコマンドは「install」の綴りが間違っています。
 
 

Gitをインストールするための準備・wgetをインストール

 
wgetをインストールため、下記のコマンドを実行します。
 

 
 

wgetをインストールする理由と解説

 
Gitをインストールする際に wgetコマンドを使いますが、前項の zip、unzipと同じく、「最小構成」では wget入っていないようです。
をインストールため、下記のコマンドを実行します。
 
 

Gitをインストールするための準備・gccをインストール

 
gccをインストールため、下記のコマンドを実行します。
 

 
 

gccをインストールする理由と解説

 
Gitをインストールする際、makeコマンドを使用しますが、その際「gcc」が必要になります。
そのため、あらかじめ gccをインストールしておかないと下記のエラーが発生します。
 

 
ちなみに「gcc」は、Linux、Windowsなどで動作するフリーのコンパイラです。
 
 

Gitをインストールするための準備・curl-devel、expat-devel、gettext-devel、openssl-devel、zlib-develをインストール

 
curl-devel、expat-devel、gettext-devel、openssl-devel、zlib-develをインストールため、下記のコマンドを実行します。
 

 
 

curl-devel、expat-devel、gettext-devel、openssl-devel、zlib-develをインストールする理由と解説

 
Gitをインストールする際に必要となるツールです。
Gitのオフィシャルサイトに、インストールする際に先にインストールをしてください、と書いてあります。
 
Gitオフィシャルサイト・4 Ekkomenci – Installing Git
https://git-scm.com/book/eo/v1/Ekkomenci-Installing-Git
 
 

Gitの最新版をインストールする手順

 
Gitの最新版をインストールするため、下記の手順でインストールを行います。
 
 

Gitの最新版を確認する

 
Gitオフィシャルサイト
https://git-scm.com/
 
上記サイトから、現在の最新の Gitのバージョンを確認します。
 
私がこの記事を書いていた時点での最新版は「2.18.0」でしたので、Gitの最新版を取得する URLは下記になります。
 
https://www.kernel.org/pub/software/scm/git/git-2.18.0.tar.gz
 
 

Gitをインストールする

 
まず、Gitの最新版を取得するため、下記のコマンドを実行します。
wgetコマンドで Gitの tarファイルを取得し、tarコマンドで展開します。
 

 
 
続けて、Gitをインストールため、下記のコマンドを実行します。
「git-2.18.0」フォルダに移動し、インストールを実行します。
 

 
Gitが正しくインストールされたか、確認をします。
 

 
ダウンロードした Gitの tarファイルはもう必要ありませんので、下記コマンドで削除します。
 

 
 

Gitを makeコマンドでインストールする理由と解説

 
Gitも yumコマンドを使って下記のようにインストールをすることは可能です。
 

 
ですが、yumコマンドでインストールした場合は、最新版ではないバージョンがインストールされる場合があります。
 
そのため、この記事では最新版をダウンロードしてきて、makeコマンドでインストールする方法をとっています。
 
 

Gitを makeコマンドでインストールする際に発生する可能性があるエラーと対処方法

 
私がインストールしたときは、先に解説した「gcc」が足りない、というエラー「/bin/sh: cc: command not found」が出ただけでした。
 
ですが、環境によっては多様なエラーが出るようです。
出る可能性があるエラーと、不足しているツールのインストール方法を解説します。
 
 
-bash: curl-config: command not foundのエラーが出たとき下記のコマンドを実行。

 
 
git-compat-util.h:208:25: warning: openssl/ssl.h: No such file or directory gのエラーが出たとき下記のコマンドを実行。

 
 
http-push.c:14:19: warning: expat.h: No such file or directoryのエラーが出たとき下記のコマンドを実行。

 
 
MSGFMT po/de.msg make[1]: *** [po/de.msg] Error 127のエラーが出たとき下記のコマンドを実行。

 
 
Can't locate ExtUtils/MakeMaker.pm in @INC at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] Error 2
make: *** [perl/perl.mak] Error 2
のエラーが出たとき下記のコマンドを実行。

 
参考記事
https://qiita.com/mochimochi-inu/items/914debabca56acc20a6d
 
 

CakePHP3をインストール

 
CakePHP3をインストールする章に入ってからも長かったですが、ようやく CakePHP3をインストールする下記コマンドを実行します。
 
コマンドは、CakePHP3のフォルダを作成する場所で実行しますので、CakePHP3をインストールするフォルダを作成、オーナーを変更しつつ、ユーザを変更し、CakePHP3をインストールするコマンドを実行します。
 

 
 

CakePHP3をインストールする流れの解説

 
今回の記事では、CakePHP3は「/var/www/virtualhost/myapp/」に設置します。
また、Webサイトを作成するユーザを「admin」としています。
 
そのため、「virtualhost」フォルダを作成し、フォルダのオーナーを「admin」に変更し、「Composer」コマンドを実行する前に「admin」ユーザに切り替えを行っています。
 
「composer」コマンドは、root権限ではなく、Webサイトを構築するユーザの権限で実行します。
 
 
先にも書きましたが、上記のコマンドを実行すると、最新版の CakePHP3がインストールされます。
状況によってはバージョンを指定してインストールしたい場合もあるかと思いますが、その場合は、下記の記事を参考にしてください。
CakePHP3、CakePHP4のバージョンを指定してインストールする詳細な手順を解説
 


 

VirtualHostの設定をして CakePHP3を表示する

 
前項で CakePHP3をインストールしましたが、デフォルトのドキュメントルート「/var/www/html/」ではない場所にインストールしましたので、デフォルトの設定のままではブラウザではアクセスできません。
 
そのため、ブラウザでもアクセスできるよう、VirtualHostの設定を行います。
 
 

/etc/httpd/conf/httpd.confの設定変更

 
まず最初に、Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」の設定内容を変更します。
下記の様にコメントになっている「ServerName」の値を設定します。
 

 
 

/etc/httpd/conf/httpd.confに「ServerName」を設定する理由とその解説

 
VirtualHostの設定をする際「ServerName」を設定せずに、Apacheの再起動を実行すると、下記のワーニングが発生します。
 

 
これは、「ServerName」が設定されていないための警告ですので、前項のように「ServerName」を設定します。
 
ちなみに、「ServerName」に設定する値は、下記のコマンドで確認します。
 

 
または、下記コマンドで「/etc/hosts」に記述されているものを記載します。
 

 
参考サイト
http://blog.jicoman.info/2012/12/apache_source/
https://bellett.moe.hm/index.php/2017/11/19/apache2-start-up-warning/
 
 

/etc/httpd/conf/httpd.confに「NameVirtualHost *:80」の記述は不要

 
Apache 2.4では、「/etc/httpd/conf/httpd.conf」に「NameVirtualHost *:80」の記述をして、Apacheを再起動すると下記のワーニングが発生します。
 

 
Apache 2.2までは必要でしたが、2.4からは書いてはいけないものになっています。
そのため、Apache 2.4より前の「httpd.conf」ファイルの中身をコピペしたときや、Apache 2.4より前の解説サイトの記事に書いてあるものをそのまま利用したときなどはこのワーニングが発生することがあります。
 
ちなみに、Apache2.2以前と、Apache2.4とで記述方法が違うものが結構ありますので、解説サイトを探す場合は、Apache2.4の情報であることを確認する方がよさそうです。
 
参考サイト
http://tech.withsin.net/2017/06/07/apache-namevirtualhost/
 
 

「/etc/httpd/conf.d/vhost.conf」の設定変更

 
続けて、VirtualHostの設定として、「/etc/httpd/conf.d/vhost.conf」を作成して、下記の内容を記述します。
「/etc/httpd/conf.d/vhost.conf」ファイルはありませんので、新規で作成します。
 

 
 

「/etc/httpd/conf.d/vhost.conf」の設定内容と解説

 
「/etc/httpd/conf.d/vhost.conf」に記述されている 1~4行目が初期設定の時に存在しているドキュメントルートの設定です。
これがないと、デフォルト設定のドキュメントルートにブラウザでアクセスできなくなります。
逆に、デフォルトのドキュメントルートをなくして、IPでも新しく設定する VirtualHostにアクセスしたい場合は、1~4行目の設定をしなければ OKです。
 
 
6~12行目が新しく設定する VirtualHostの設定です。
このうち、最低限設定が必要なのは、8~9行目の「DocumentRoot」「ServerName」の設定です。
見たら分かると思いますが、ドキュメントルートのパスと、アクセスするためのドメインを設定します。
 
 

「ErrorLog」「CustomLog」の設定

 
10行目、11行目の「ErrorLog」「CustomLog」はログ出力の設定です。
 
ログファイルが出力される場所は「/var/log/httpd/」フォルダです。
この中に、どういうファイル名でログファイルを出力するか、を指定する項目です。
 
VirtualHostごとに出力されるログを分かりやすくするためには、ファイル名にドメイン名を入れておく方がいいでしょう。
 
 
ちなみに、ログファイルを出力する場所を指定したくても、下記の様にパスを指定することはできません。

 
上記のようにパスを指定するような記述をして Apacheを再起動した場合、下記のようなエラーメッセージが出て Apacheは起動できなくなります。

 
 

VirtualHostの設定は「httpd.conf」にするのか?しないのか?

 
VirtualHostの設定は、かつては「httpd.conf」の中に記述していました。
ですが、Apache2.4では、「/etc/httpd/conf.d/」フォルダの中に「***.conf」として設定ファイルを設置する方法が採用されています。
そのため、この記事では「/etc/httpd/conf.d/vhost.conf」に VirtualHostの設定を記述しています。
 
ただ、「vhost.conf」に記述した内容を「httpd.conf」の中にそのまま記述しても問題はありません。
 
また、今回は「vhost.conf」ファイルに VirtualHostの設定をひとまとめに記述する方法を採用していますが、「/etc/httpd/conf.d/」フォルダの中に「.conf」という拡張子のファイルを入れておけばすべて設定ファイルとして読み込んでもらえますので、「test.example.com.conf」「develop.example.com.conf」などのように、VirtualHostごとに設定ファイルを用意しても問題ありません。
 
「/etc/httpd/conf/httpd.conf」の中には、「.conf」ファイルを読み込むための下記の記述があります。
これによって、拡張子「.conf」が付いたファイルに設定情報を記述すればいいことが分かります。

 
 
ちなみに、私が「vhost.conf」ファイルにひとまとめにした理由は、複数の VirtualHostの設定をまとめて修正する必要がでてきたとき、複数のファイルを開くことなく対応できる方が楽だろう、と判断したからです。
 
参考
https://weblabo.oscasierra.net/apache24-centos7-virtualhost/
 
 

「.htaccess」を使用できる設定を追加する

 
前項の設定をする際に一緒に設定できる項目ですが、デフォルトの設定では「.htaccess」が利用できませんので、「.htaccess」が利用できるようにする設定を「/etc/httpd/conf.d/vhost.conf」に行います。
 
前項で VirtualHostの設定を行った下あたりに下記の記述を追記します。
 

 
 

「.htaccess」を使用できる設定する理由と解説

 
CakePHP3は、「.htaccess」が使用できない環境では利用することができません。
 
「.htaccess」が利用できない場合は、CakePHP3のいつもの赤い画面ではなく、下記の画面が表示されます。
 
41_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
3行目には「URL rewriting is not properly configured on your server.(URLの書き換えが正しく構成されていない)」と書かれていまして、これが「.htaccess」が使えない、というエラーメッセージになります。
 
そして「1) Help me configure it(「.htaccess」の設定をしたい場合)」として、「.htaccess」を設定するための解説ページ「https://book.cakephp.org/3.0/en/installation.html#url-rewriting」にリンクが張ってあります。
 
「2) I don’t / can’t use URL rewriting(「.htaccess」を使用しない、使用できない場合)」として、「https://book.cakephp.org/3.0/en/development/configuration.html#general-configuration」にリンクが張ってあります。
 
 
また、CakePHP3の「.htaccess」の設定に関しては、下記に詳しい記事を書いていますので参考にしてください。
CakePHP3のインストールでURL rewriting......のエラーが!その解決方法解説
 
 

Apacheの設定ファイルの内容を反映させるため Apacheの再起動を実行

 
前項までで、VirtualHostの設定、「.htaccess」を利用可能にするための設定を行いました。
その設定内容が文法的に正しいかどうか、下記のコマンドを実行します。
 

 
上記のように「Syntax OK」が表示されると、文法的に正しいことが確認できます。
ただ、「Syntax OK」とでても、設定する値が間違っている場合は、Apacheが起動できない場合もあります。
 
 
「Syntax OK」の場合は、設定内容を Apacheに反映させるため、下記のコマンドを実行して Apacheを再起動します。
 

 
また、Apacheの稼働状況を確認するコマンドは以下になります。
 

 
 
また、Apacheを起動、再起動するコマンドは複数存在しています。
上記のコマンド以外のコマンドについては、下記に記事を書いていますので、あわせて参考にしてください。
Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド
 
 

「SELinux」でパーミッションの設定を変更

 
「SELinux」の設定を無効にするため、まず「SELinux」が稼働しているかどうかを、下記のコマンドを実行して確認します。
 

 
上記の通り「Enforcing」と出た場合は、「SELinux」が稼働しています。
 
稼働している場合は、「SELinux」の設定ファイル「/etc/selinux/config」に対して「SELinux」を停止する設定を行います。
 

 
「/etc/selinux/config」の内容は、上記のようになっています。
 
この 6行目の「SELINUX=enforcing」を「SELINUX=disabled」、もしくは、「SELINUX=permissive」に変更します。
 
 
設定を変更したら、設定内容を反映させるために、下記コマンドを実行し、仮想マシンを再起動します。
 

 
仮想マシンが再起動したのち、下記コマンドで「SELinux」の状態を確認します。
 

 
設定ファイルに記述したとおりの「disabled」もしくは「permissive」になっていれば設定完了です。
 
 

「setenforce」コマンドと稼働状況「enforcing」「permissive」「disabled」

 
「SELinux」の稼働状況を変更するコマンドとして「setenforce」があります。
下記の様に使用します。(「setenforce 0」で状態を「Permissive」に変更し、「getenforce」で稼働状況を確認しています。)
 

 
逆に「setenforce 1」とすると、「enforcing」の稼働状態になります。
 
 
ただし、「setenforce」コマンドは、一時的な稼働状態を変更するコマンドのため、仮想マシンを再起動すると、先に設定した設定ファイル「/etc/selinux/config」に記述されている状態に戻ってしまいます。
 
そのため、恒久的な対応をするには設定ファイル「/etc/selinux/config」を変更する必要があるワケです。
 
 
また、「SELinux」の稼働状態は以下の 3種類があります。
CakePHP3のパーミッションエラーを解消することが目的であれば、「permissive」「disabled」のどちらかになっていれば OKです。
 
 enforcing:SELinux機能が有効されていて、アクセス制限も有効
 permissive:SELinux機能は有効であるが、アクセス制限は行わず警告を出力
 disabled:SELinux機能は無効
 
 

「SELinux」を設定する理由と解説

 
上記の「SELinux」の停止処理を行わずに、CakePHP3にアクセスすると、下記のようなパーミッション(属性)に関するワーニングが大量に出力されます。
 

 
また、ワーニングが大量に出ている画面を下の方にスクロールしていくと、下記の様に「Filesystem」の項目には「Your tmp directory is NOT writable.」と表示されており、書き込み権限がないことが分かります。
 
42_VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
 
 
書き込み権限がないだけですので、パーミッションを 755や 777などに変更して対応する方法もありますが、それだけでは改善しない場合もあります。
 
その原因は、「SELinux」が稼働しているからですので、「SELinux」を止める必要があるのです。
 
 
「SELinux」は、不正アクセスされた際に、ファイルやフォルダなどへのアクセスを防ぐための機能です。
ですが、「SELinux」は設定が難しいことと、設定を失敗すると root権限でもアクセスできなくなることから「SELinux」を無効化しているサーバも多いようです。
 
特に、今回構築しているサーバは、ローカル環境の VirtualBox環境ですので、「SELinux」を無効にしても問題は起こらないと考えています。
 
 
参考サイト
https://advanceffort.com/cakephp3%E3%81%A7permission-denied/
https://eng-entrance.com/linux-selinux
 
 

ドメインでアクセスするために hostsファイルを更新

 
最後に、ホスト側のブラウザから仮想マシンに設定したドメインでアクセスするために、Windows内にある「hosts」ファイルを変更します。
 
「C:\Windows\System32\drivers\etc\hosts」を、メモ帳などで開きます。
このとき、「管理者として実行」から起動し、管理権限で更新できるようにします。
 
hostsファイルに下記の 1行を追加します。
 

 
 
これで、全ての設定が完了しました。
 
 

VirtualBoxに CakePHP3の環境がついに完成!

 
長い長い設定手順を終えて、ここまでやってきて、ようやく CakePHP3が稼働する VirtualBoxの環境が整いました。
 
 
ブラウザを立ち上げ、「http://myapp.example.com」と入力すると、念願の CakePHP3の画面が表示されます。
 
CakePHP3を使えるようにするのは簡単だ、という話もよく聞きますが、ゼロから環境を構築するのは予想外に大変だ、ということを改めて思い知らされた環境構築でした。
 
でも、いい勉強になりました。
 
 

「VirtualBoxに CakePHP3の環境を作る」のあとがき

 
この記事の文字数は 40,000字超。
ブログでは、5,000字を超えると長い方なんですが、今回の記事はさらにそれの 8倍!
過去に書いた一番長い記事は、「FC2からWordPressに引越。インストールなど必要な全てを解説」で、これで約 27,000文字でした。
 
これもかなり長いと思っていましたが、今回、それの 1.5倍!!
3部作くらいにした方が良かったかも、とも思いますが、1ページで書かれている方が使いやすいんじゃないか、そんなことを思って一つにまとめました。
 
また、この記事を書くために、10を超える仮想マシンを構築しました。
メインマシンの他、VirtualBoxすら入っていなかったサブマシンでも確認しながら、仮想マシンを作ったり削除したりしながら、エラーの原因を確認しながら...の作業でした。
 
 
みんなのお役に立てば!と思ってはいるものの、この記事を書かなくては、と思ったのは何よりも自分自身のため。
これだけしっかり調べたんだから、もう一度環境を構築するときはこのページを見れば全て完結する、そんな記事にしたかったんです。
 
次に構築するときは忘れている自信がありますので、忘れていてもいいように、調べた内容は全て書き込みました。
 
なので、同じ様に、VirtualBoxに CakePHP3の環境を作ろうとしている方にはすごく役に立つんだとも考えていますので、役に立ててもらえると嬉しいです!
 
 

サーバの設定に関する記事

 
今回の記事で紹介した内容は、CakePHP3を使えるようになる環境を構築する、と言う内容ですが、それ以外にも設定をする必要な箇所があります。
それについては、以下の通り、別の記事として書いていますので合わせて参考にしてください。
 
設定した環境の日時がずれている場合は下記の記事を参考に日時を設定します。
CentOS環境に ntpdをインストールして自動的に時刻を取得して合わせる設定にする
 
設定した環境に Gitで管理している環境のファイル一式を取得するための、Gitの初期設定については下記に記事を書いていますので参考にしてください。
Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説
 
 

CakePHP3の関連記事

CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールする
CakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3にWYSIWYGエディタのCKEditor4を設置、カスタマイズ方法を解説
CakePHP3にWYSIWYGエディタのCKEditor4を設置、カスタマイズ方法を解説

WYSIWYGエディタであるCKEditor4をCDNを利用して簡単にCakePHP3に導入する方法とカスタマイズする方法を解説。CakePHP3にはページごとの振り分けを行うブロック化を利用する。

CakePHP 2.x系 Viewでのコメントの記述方法など

CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。

CakePHP3でComposerでインストールできないプラグイン、外部ライブラリを vendorに入れて手動で読み込む方法
CakePHP3でComposerでインストールできないプラグイン、外部ライブラリを vendorに入れて手動で読み込む方法

CakePHP3にComposerからインストールできないプラグインやライブラリなどを利用する方法、vendorにファイルを設置し、composer.jsonを更新し、それを呼び出す方法を詳細に解説。

CakePHP3でユーザ定義の定数、変数を設定し、読み込む方法解説
CakePHP3でユーザ定義の定数、変数を設定し、読み込む方法解説

CakePHP3で定数や共通で使う変数をまとめて設定し、プログラム内で読み込む方法を、bootstrap.phpに直接記述する方法と定数ファイルを分ける方法の3つの方法で解説。

CakePHP3でファイルのアップロード処理を自作・解説付き・その1
CakePHP3でファイルのアップロード処理を自作・解説付き・その1

CakePHP3でファイルをアップロードする処理を、php.netにある「エラーを起こさない」と説明がある処理を参考に作成。サンプルソースとその解説付きで、コピペでも動くし、カスタマイズも簡単!

CakePHP3のForm Helperの使い方のまとめ

CakePHP3になりフォームヘルパーの使い方も大きく変わりましたので、使い方をまとめました。基本的な使い方からプラスアルファの便利な使い方まで紹介。

CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。

CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説
CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説

CakePHP4のユーザ管理プラグイン Usersは、ユーザ登録、メール認証、ログイン認証、ユーザ管理、権限管理、reCAPTCHAなど会員制のサイトを簡単に実現可能。その導入方法、カスタマイズ方法を解説。

CakePHPを学ぶ際にはオブジェクト指向を学ぼう

CakePHPはオブジェクト指向で書かれていますので、CakePHPを学ぶにはオブジェクト指向も学びましょう。

CakePHP 2.3 Search Pluginで検索処理 その7queryを使って 日付の範囲検索

CakePHPの検索プラグイン Search Pluginの検索処理の中で queryを使って日付の範囲検索の方法です。