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の「新規」ボタンをクリック
VirtualBoxのメニューの左上にある「新規」ボタンをクリックします。
2.「仮想マシンの作成」画面で情報入力
上記の「仮想マシンの作成」画面で各種必要な情報を入力します。
「名前とオペレーティングシステム」の「名前」は任意のものを入力します。
「タイプ」は「Linux」、「バージョン」は「Red Hat (64-bit)」を選択します。(ただのマークなので、何を選んでも OKですが。)
「メモリサイズ」は「1024」㎆とします。
メモリは最低でも 512㎆必要です。また、環境構築後に変更することも可能なためあまり悩まず設定しておきます。
「ハードディスク」は「仮想ハードディスクを作成する」を選択します。
そして「作成」ボタンをクリックします。
3.「仮想ハードディスクの作成」画面で情報入力
上記の「仮想ハードディスクの作成」画面で各種必要な情報を入力します。
「ファイルの場所」は、デフォルトのままで OK。
変えたい理由がある場合は変更してください。
「ファイルサイズ」もデフォルトの「8.00」GBのままで OK。
この設定は環境構築後に変更することも可能なため、あらかじめ大きな容量が必要だと分かっている場合以外はデフォルトのままでいいでしょう。
「ハードディスクのファイルタイプ」もデフォルトのままの「VDI (VirtualBox Disk Image)」のままで OK。
「物理ハードディスクにあるストレージ」もデフォルトのままの「可変サイズ」で OK。
この設定も環境構築後に変更することも可能なため、あまり悩まずデフォルトの「可変サイズ」でいいでしょう。
設定を確認して「作成」ボタンをクリックします。
仮想マシンの一覧に作成した「CentOS7.3」のアイコンが出現します。
新規作成した VirtualBoxの仮想マシンの設定
続いて、新規作成した仮想マシンの設定を行います。
作成した仮想マシンを選択した状態で、画面上部にある「設定」ボタンをクリックし、設定画面を呼び出します。
「CentOS7.3 – 設定」の画面で、左メニューの中から「ストレージ」を選択します。
表示される画面中央部の「ストレージデバイス」から「コントローラー:IDE」の下にある「空」と表示されている DVD-ROMのアイコンを選択します。
表示される画面右側の「属性:光学ドライブ」の項目の一番右にある DVD-ROMのアイコンをクリックし、「仮想光学ドライブを選択」をクリックします。
表示されるファイル選択のダイアログから、一番最初の項目でダウンロードしてきた CentOS7.3のディスクイメージ「CentOS-7-x86_64-DVD-1804.iso」を選択します。
「OK」をクリックして、設定画面を閉じます。
VirtualBoxに CentOSをインストール
いよいよ、CentOSをインストールします。
作成した仮想マシンを選択した状態で、画面上部にある「起動」ボタンをクリックし、仮想マシンを起動します。
しばらくすると、上記の選択画面が表示されますので、「Install CentOS 7」の方を選択して、「Enter」を押します。
(「「Test this media & Install CentOS 7」の方を選択してもちょっと時間がかかるだけなので何の問題もありません。)
画面が切り替わり、いろいろなファイルがインストールされ、緑色の「OK」という文字が流れていき、そのあとに下記の言語を選択する画面が表示されます。
画面の左側の選択肢の中から「日本語」を選択します。
画面下部の入力ボックスに「ja」と入力すると、日本語を探しやすくなります。
「日本語」を選択したら「続行」をクリックします。
ちなみに、VirtualBoxの仮想マシンのウインドウをクリックすると、マウスカーソルは、その仮想マシンのウインドウから出られなくなります。
仮想マシンのウインドウからマウスカーソルを取り出すには、キーボードの右側にある「Ctrl」キーを押します。左側の「Ctrl」キーを押しても意味がありません。
続いて表示される「インストールの概要」画面では、「システム」の中の「インストール先」を設定します。
この画面ではデフォルトのままで、特に設定する内容はありませんので「完了」をクリックして、前の画面に戻ります。
続いて、「ネットワークとホスト」をクリックします。
「Ethernet(enp0s3)」を選択し、画面右側にある「オン/オフ」のボタンを「オン」にします。
設定をしたら「完了」をクリックして前の画面に戻ります。
「インストールの開始」ボタンがクリックできるようになっていますので、クリックして先に進みます。
「ソフトウェアの選択」では「最小限のインストール」が選択されていますが、サーバ環境として CUI環境を想定していますので、「最小限のインストール」のままインストールします。
「root」権限のパスワードの設定と、ユーザの作成を行います。
ちなみに、画面の下部にインストールの状況を知らせるインジケーターが進んで行っていますが、勝手に処理が終わったりはしませんので、焦らずにユーザの設定をしてください。
root権限のパスワードを設定します。
パスワードが簡単すぎる場合は「完了」を 2回クリックする必要があります。
ユーザを設定します。
ユーザの作成は必須ではありませんが、作っておく方がいいでしょう。
今回は、開発環境のため、「admin」というアカウントを作成しました。
本番環境では「admin」というアカウントはリスクが高いため、違うアカウントを設定する方がおススメです。
root権限のパスワードの設定が終わり、必要なファイルのインストールも終了すると「設定完了」ボタンをクリックできるようになりますので、それをクリックします。
またしばらくファイルのインストールが続き、各種設定が終ると「再起動」ボタンが表示されますので、それをクリックします。
再起動したのち、そのまま待っていると、途中、起動するシステムの選択画面が表示されますが、デフォルトで選択されている上部の「CentOS Linux (3.10.0-862.e17.x86_64) 7 (Core)」の方を選択してして Enterを押すか、そのまま待っていると自動的にデフォルト設定の方のシステムが起動し、ログイン画面が表示されます。
これで無事に CentOSがインストールできました。
root権限でログインできるか、ログインを試してみるのもいいでしょう。
VirtualBoxに SSHでアクセスできるようにする流れ(DHCPサーバーを利用する場合)
前項で、VirtualBoxに仮想マシンを作成し、そこに CentOSをインストールしました。
ただ、この状態ではホスト側(Windowsパソコン側)からアクセスできませんので、システム開発を行うのには不便です。
そのため、ホスト側から ssh接続、http接続ができるように設定します。
ただ、章では、DHCPサーバーを利用する場合の設定方法の解説です。
DHCPサーバーを利用しない方法の設定をする場合は、次の章を確認してください。
仮想マシンが起動したままではネットワークの設定ができませんので、root権限でログインし、下記のコマンドを実行してシャットダウンします。
1 |
# shutdown -h now |
仮想マシンのウインドウの閉じるボタンをクリックして、表示される「仮想マシンを閉じる」のダイアログで「仮想マシンの電源オフ」を選択しても OKです。
VirtualBoxの「ホストネットワークマネージャー」の設定
VirtualBoxの仮想マシンの設定を始める前に、VirtualBox自体のネットワーク設定を行います。
VirtualBoxの右上にある「グローバルツール」の右端にある「▼」をクリックし、表示されるメニューから「ホストネットワークマネージャー」画面を呼び出します。
ネットワークの設定を新規作成しますので左上の「作成」ボタンをクリックします。
「作成」ボタンをクリックすると「このアプリがデバイスに変更を加えることを許可しますか?」という確認画面が表示されますので「はい」をクリックします。
私の環境では、VirtualBoxを新規でインストールした場合でも上記の通り「VirtualBox Host-Only Ethernet Adapter」がありました。
すでにある場合は、「プロパティ」ボタンをクリックし、設定内容を確認してください。
上記の画面が表示されますので、しばらく待ちます。
すると、上記のように「VirtualBox Host-Only Ethernet Adapter」が作成されます。
これをダブルクリック(もしくは、選択して「プロパティ」ボタンをクリック)します。
画面下部に「アダプター」「DHCPサーバー」の設定画面が表示されますので、これを設定します。
ここに設定する内容は、LAN環境によっては違う場合がありますので、ネットワーク管理者がいるような会社であればその方に設定する情報を確認するといいでしょう。
私の環境の場合は、「アダプターを手動で設定」を選択して、以下の設定をしました。
「IPv4アドレス」は「192.168.56.1」
「IPv4ネットマスク」は「255.255.255.0」
「IPv6アドレス」「IPv6ネットマスク長」は入力しません(入力できません)。
続けて「DHCPサーバー」では、「サーバーを有効化」にチェックを入れて、以下の設定をしました。
「サーバーアドレス」は「192.168.56.100」
「サーバーマスク」は「255.255.255.0」
「アドレス下限」は「192.168.56.101」
「アドレス上限」は「192.168.56.254」
入力をしたら「適用」ボタンをクリックして、入力情報を保存します。
設定が終ったら、「マシンツール」の右にある「▼」をクリックし、「詳細」を選択して詳細画面に戻ります。
仮想マシンのネットワークの設定
続いて、新規作成した仮想マシンのネットワーク設定を行います。
作成した仮想マシンを選択した状態で、画面上部にある「設定」ボタンをクリックし、設定画面を呼び出します。
設定する項目は「ネットワーク」ですので、左メニュから「ネットワーク」をクリックします。
「アダプター1」のタブは変更点はありません。
「アダプター2」のタブを開きます。
「アダプター2」では、「ホストオンリーアダプター」の設定をします。
「ネットワークアダプターを有効化」にチェックを入れ、下記の設定を行います。
「割り当て」は「ホストオンリーアダプター」。
「名前」は、前項の「ホストネットワークアダプター」で設定した「VirtualBox Host-Only Ethernet Adapter」を選択します。
設定をしたら「OK」ボタンをクリックし、設定画面を閉じます。
仮想環境のネットワーク接続を有効にする
いったん電源をオフにした仮想マシンを起動させます。
仮想マシンのウインドウにあるメニューから「デバイス」-「ネットワーク」を選択すると表示される「ネットワーク接続1」「ネットワーク接続2」をクリックします。
上記画面のように「☑」がある状態であることを確認します。
「☑」がある状態であれば、仮想マシンのハードウェアとしてネットワークは接続されている状態です。
上記のように「☑」が付いていない状態(ネットワークが接続されていない状態)の場合は、クリックをして「☑」が付いている状態にします。
ip rコマンドで仮想マシンに割り当てられた IPアドレスを確認
仮想マシンのウインドウはログインを待つ画面になっていると思いますので、root権限でログインします。
これ以降の設定は、基本的に root権限で設定を行います。
本来は、root権限ではログインできないようにして、sudoコマンドで設定をする方がいいのですが、今回は VirtualBoxの環境構築ということで。
ログインをしたら、下記の「ip r」コマンドを実行し、下記の様にネットワーク設定が反映されていることを確認します。
1 2 3 4 |
# ip r default via 10.0.2.2 dev enp0s3 proto dhcp metric 101 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 101 192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.101 metric 100 |
最後の行の「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権限でログインし、下記のコマンドを実行してシャットダウンします。
1 |
# shutdown -h now |
仮想マシンのウインドウの閉じるボタンをクリックして、表示される「仮想マシンを閉じる」のダイアログで「仮想マシンの電源オフ」を選択しても OKです。
VirtualBoxの「ホストネットワークマネージャー」の設定
VirtualBoxの仮想マシンの設定を始める前に、VirtualBox自体のネットワーク設定を行います。
VirtualBoxの右上にある「グローバルツール」の右端にある「▼」をクリックし、表示されるメニューから「ホストネットワークマネージャー」画面を呼び出します。
ネットワークの設定を新規作成しますので左上の「作成」ボタンをクリックします。
「作成」ボタンをクリックすると「このアプリがデバイスに変更を加えることを許可しますか?」という確認画面が表示されますので「はい」をクリックします。
私の環境では、VirtualBoxを新規でインストールした場合でも上記の通り「VirtualBox Host-Only Ethernet Adapter」がありました。
すでにある場合は、「プロパティ」ボタンをクリックし、設定内容を確認してください。
上記の画面が表示されますので、しばらく待ちます。
すると、上記のように「VirtualBox Host-Only Ethernet Adapter」が作成されます。
これをダブルクリック(もしくは、選択して「プロパティ」ボタンをクリック)します。
画面下部に「アダプター」「DHCPサーバー」の設定画面が表示されますので、これを設定します。
ここに設定する内容は、LAN環境によっては違う場合がありますので、ネットワーク管理者がいるような会社であればその方に設定する情報を確認するといいでしょう。
私の環境の場合は、「アダプターを手動で設定」を選択して、以下の設定をしました。
「IPv4アドレス」は「192.168.56.1」
「IPv4ネットマスク」は「255.255.255.0」
「IPv6アドレス」「IPv6ネットマスク長」は入力しません(入力できません)。
続けて「DHCPサーバー」では、「サーバーを有効化」にチェックを入れません。
今回の設定では、「DHCPサーバー」を使用しないためです。
入力をしたら「適用」ボタンをクリックして、入力情報を保存します。
設定が終ったら、「マシンツール」の右にある「▼」をクリックし、「詳細」を選択して詳細画面に戻ります。
仮想マシンのネットワークの設定
続いて、新規作成した仮想マシンのネットワーク設定を行います。
作成した仮想マシンを選択した状態で、画面上部にある「設定」ボタンをクリックし、設定画面を呼び出します。
設定する項目は「ネットワーク」ですので、左メニュから「ネットワーク」をクリックします。
「アダプター1」のタブは変更点はありません。
「アダプター2」のタブを開きます。
「アダプター2」では、「ホストオンリーアダプター」の設定をします。
「ネットワークアダプターを有効化」にチェックを入れ、下記の設定を行います。
「割り当て」は「ホストオンリーアダプター」。
「名前」は、前項の「ホストネットワークアダプター」で設定した「VirtualBox Host-Only Ethernet Adapter」を選択します。
設定をしたら「OK」ボタンをクリックし、設定画面を閉じます。
この「アダプター2」の画面の「高度」の「▼」をクリックして表示される詳細情報のうち、「MACアドレス」は、この後設定する「NetworkManager」で「ホストオンリーアダプター」を判断する場合にも使用します。
確実性を求めるのであれば、この「MACアドレス」を書き留めておいてください。
仮想環境のネットワーク接続を有効にする
いったん電源をオフにした仮想マシンを起動させます。
仮想マシンのウインドウにあるメニューから「デバイス」-「ネットワーク」を選択すると表示される「ネットワーク接続1」「ネットワーク接続2」をクリックします。
上記画面のように「☑」がある状態であることを確認します。
「☑」がある状態であれば、仮想マシンのハードウェアとしてネットワークは接続されている状態です。
上記のように「☑」が付いていない状態(ネットワークが接続されていない状態)の場合は、クリックをして「☑」が付いている状態にします。
nmtuiコマンドで NetworkManagerの設定
仮想マシンのウインドウはログインを待つ画面になっていると思いますので、root権限でログインします。
これ以降の設定は、基本的に root権限で設定を行います。
本来は、root権限ではログインできないようにして、sudoコマンドで設定をする方がいいのですが、今回は VirtualBoxの環境構築ということで。
ネットワークの設定をするため、下記「nmtui」コマンドを使って NetworkManagerを立ち上げます。
1 |
# nmtui |
コマンドを実行すると下記の画面が表示されます。
「Edit a Connection」を選択します。
この画面では、マウスは使えませんので、キーボードのカーソル、Tab、Enterを使って操作します。
「enp0s8」(ホストオンリーアダプター)を選択します。
「enp0s3」は「NATアダプター」です。
日本語環境では、アダプタ名が文字化けしている場合もありますが、「enp0s3」ではない方を選択すれば OKです。
正確に確認するには、下記の画面で表示される「Device」の項目に表示される「MACアドレス」が、先に書き留めたものと同じであることを確認します。
「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です。
続けて、「IPv6 CONFIGURATION」を「Ignore(無効)」を設定します。
また、下記 2つにもチェックを入れてください。
「Automatically connect」
「Available to all users」
設定が終ったら「OK」で画面を戻り、「Back」で画面を戻り、「Quit」で「NetworkManager」を終了させます。
コマンドを入力する画面に戻ったら、下記のコマンドを実行し、設定した内容を反映させます。
1 |
# systemctl restart network |
続けて、下記の「ip r」コマンドを実行し、下記の様に設定が反映されていることが確認できれば設定完了です。
1 2 3 4 |
# ip r default via 10.0.2.2 dev enp0s3 proto dhcp metric 101 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 101 192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.101 metric 100 |
最後の行の「enp0s8」に続く IPアドレス「192.168.56.101」が、仮想マシンに設定された IPアドレスです。
この IPアドレスで SSHでの接続ができるようになります。
「TeraTerm」や「PuTTY」などで仮想環境に SSH接続を試してみてください。
(仮想マシンを起動した直後などは、SSH接続ができない場合もありますので、SSH接続は 30秒ほど待ってから接続するとよさそうです。)
もし、「ip r」コマンドを実行して設定内容が反映されていない、SSHでの接続ができない、という場合は、下記のコマンドで仮想マシンを再起動してみたり、先に実行した「systemctl restart network」コマンドを何度か実行してみたり、「デバイス」-「ネットワーク」で表示される「ネットワーク接続1、2」を切断したり接続したりしてみてください。
1 |
# reboot |
ここまで設定をして上手く接続できないのは、設定が間違っているからではなく、設定内容が反映されていない可能性が多くあります。
「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をインストールします。
1 |
# yum install -y httpd |
Apacheのインストールが終わったら、下記のコマンドでインストールされたバージョンなどの確認をします。
1 2 3 |
# httpd -v Server version: Apache/2.4.6 (CentOS) Server built: Jun 27 2018 13:48:59 |
「yum install」コマンドの「-y」オプション
Apacheや PHPのインストールの解説サイトを見ると「yum install httpd」と「yum install -y httpd」とコマンドが書いてあり、「-y」オプションが付いていたり、付いていなかったりします。
この「-y」オプションは、ソフトをインストールする際に、何度か確認が入る「よろしいでしょうか?」に対して、自動的に「yes」を返すオプションです。
そのため、この記事のコマンドにはすべて「-y」を付けて書いています。
この記事で「-y」を付けている理由は、実は、インストールする前に、インストールが可能かどうか、次項の「--assumeno
」オプションを付けて検証しているためです。
「yum install」コマンドの「--assumeno
」オプション
「--assumeno
」オプションは、下記の様に使用します。
1 |
# yum install httpd --assumeno |
「--assumeno
」は、実際にはインストールせず、インストールが可能か、依存関係を確認するためのオプションです。
前項の「-y」オプションの長いオプションは「--assumeyes
」で、「よろしいでしょうか?」に対してすべて「yes」と返答するコマンドで、「--assumeno
」は「no」と返答するコマンドです。
そのため、依存関係を確認したのち、「インストールを実行してよろしいでしょうか?」の最初の質問で「no」と回答するため、依存関係の確認ができる、という仕組みのオプションです。
インストールコマンドを実行する前に、インストールが可能か、インストールされるバージョンが何か、などの確認に使います。
「httpd -v」コマンドでインストールの確認
インストールしたソフトのコマンドに対して「-v」もしくは「--version
」オプションを付けて実行すると、インストールされているソフトのバージョンが表示されます。
1 2 3 |
# httpd -v Server version: Apache/2.4.6 (CentOS) Server built: Jun 27 2018 13:48:59 |
これを利用して、インストールされたソフトウェアが正しくインストールされたかを確認します。
これ以降の解説では割愛しますが、ソフトのインストールを実行するたびに「-v」もしくは「--version
」オプションを付けてインストールの確認をすることをオススメします。
正しくインストールされていない場合は、下記の様に「command not found」が表示されます。
1 2 |
# httpd -v -bash: httpd: 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://...(サイトにアクセスできません)」というエラーメッセージが出る場合があります。
このエラーの原因と対応方法を解説します。
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 |
# yum install httpd 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 不明なエラー" One of the configured repositories failed (不明), and yum doesn't have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this: 1. Contact the upstream for the repository and get them to fix the problem. 2. Reconfigure the baseurl/etc. for the repository, to point to a working upstream. This is most often useful if you are using a newer distribution release than is supported by the repository (and the packages for the previous distribution release still work). 3. Run the command with the repository temporarily disabled yum --disablerepo=<repoid> ... 4. Disable the repository permanently, so yum won't use it by default. Yum will then just ignore the repository until you permanently enable it again or use --enablerepo for temporary usage: yum-config-manager --disable <repoid> or subscription-manager repos --disable=<repoid> 5. Configure the failing repository to be skipped, if it is unavailable. Note that yum will try to contact the repo. when it runs most commands, so will have to try and fail each time (and thus. yum will be be much slower). If it is a very temporary problem though, this is often a nice compromise: yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true Cannot find a valid baseurl for repo: base/7/x86_64 |
このエラーは、仮想マシンの中から、ホストマシン(Windowsパソコン)を経由して、インターネット上のサイトにアクセスできません、というエラーです。
CentOSをインストールする際に「ネットワークとホスト」で、「Ethernet(enp0s3)」の接続を「オン」にしておくことで回避できるエラーです。
そのため、この手順通りに行っていれば出ないはずですが、設定し忘れていた場合などはこのエラーが発生します。
このエラーが発生した場合は、下記の「ifcfg-enp0s3」ファイルを更新します。
1 |
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 |
「ifcfg-enp0s3」ファイルを開いて、一番最後の行の「>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp0s3 UUID=0b449521-a980-4f02-8186-7fb37739c9c6 DEVICE=enp0s3 ONBOOT=yes |
更新したファイルの内容を反映させるため、下記のコマンドでネットワーク設定を再起動を行います。
1 |
# systemctl restart network |
設定が正しく行われたことを確認するためには、「ip r」コマンドを使用します。
「enp0s3」が正しく設定が行われていない場合は、下記の様に「enp0s8」の情報しか表示されません。
1 2 |
# ip r 192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.101 metric 100 |
「enp0s3」が正しく設定されると、下記の様に「enp0s3」の情報も表示されるようになります。
1 2 3 4 |
# ip r default via 10.0.2.2 dev enp0s3 proto dhcp metric 101 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 101 192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.101 metric 100 |
これで、Apacheを始め、他のソフトのインストールができるようになります。
Apacheを起動する
Apacheをインストールしましたので、下記のコマンドで Apacheを起動します。
が、その前に、下記コマンドで Apacheが起動していないことを一度確認します。
(すでに起動している時は、改めて起動させる必要はありません。)
1 2 3 4 5 6 |
# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: man:httpd(8) man:apachectl(8) |
続いて、下記のコマンドで、Apacheを起動します。
1 |
# systemctl start httpd |
上記のコマンド以外にも Apacheを起動、再起動するコマンドは複数存在しています。
上記のコマンド以外のコマンドについては、下記に記事を書いていますので、あわせて参考にしてください。
Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド
また、上記のコマンドを実行しても正常時は何もレスポンスはありません。
そのため、下記のコマンドで改めて起動状況を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since 日 2018-07-15 10:16:21 JST; 57s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 2142 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service tq2142 /usr/sbin/httpd -DFOREGROUND tq2143 /usr/sbin/httpd -DFOREGROUND tq2144 /usr/sbin/httpd -DFOREGROUND tq2145 /usr/sbin/httpd -DFOREGROUND tq2146 /usr/sbin/httpd -DFOREGROUND mq2147 /usr/sbin/httpd -DFOREGROUND 7月 15 10:16:21 localhost.localdomain systemd[1]: Starting The Apache HTTP Server... 7月 15 10:16:21 localhost.localdomain httpd[2142]: AH00558: httpd: Could not reliably determine the server's fu...sage 7月 15 10:16:21 localhost.localdomain systemd[1]: Started The Apache HTTP Server. Hint: Some lines were ellipsized, use -l to show in full. |
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は起動できなくなります。
1 2 |
# systemctl start httpd Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details. |
理由を調べるために「systemctl status httpd」コマンドを実行すると、「すでに httpdが起動しています。」と言うエラーメッセージが表示されることがありました。(エラーメッセージを保存していません。)
この場合は、下記コマンドで仮想マシンを再起動するといいでしょう。
1 |
# reboot |
次の項で設定する、Apacheが自動起動する設定をしていませんので、仮想マシンを再起動させると Apacheは停止しますので、二重起動になることがなくなります。
仮想マシン起動時に Apacheの自動起動を ONにする
現在の状態では、仮想マシンの電源を落としたり、再起動したりしたときは、Apacheは止まってしまいます。
そうならないために、下記のコマンドを実行し、仮想マシンが起動した際に Apacheも自動起動する設定を行います。
1 2 |
# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. |
正しく自動起動の設定が行われたかを確認するには、下記のコマンドを実行します。「enabled」と表示されれば正しく設定されたことが確認できます。
1 2 |
# systemctl is-enabled httpd enabled |
ブラウザでアクセスができるように firewallコマンドでポートを開放
Virtualboxの Firewallの初期設定は、ホスト側からブラウザでアクセスできるようになっていません。
そのため、下記のコマンドを実行して 80番ポート(http)を解放するため、下記のコマンドを実行します。
続けて、設定情報をリロードし、設定情報を反映させます。
1 2 3 4 |
# firewall-cmd --zone=public --add-port=80/tcp --permanent success # firewall-cmd --reload success |
これで、ブラウザでアクセスできるようになっています。
下記の様に Apacheの確認画面が表示されれば OKです。
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がインストールされました。
1 |
#yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm |
つづけて、下記コマンドで MySQLをインストールします。
ライブラリは必要に応じて変えてください。
1 |
# yum -y install mysql mysql-devel mysql-server mysql-utilities |
インストールが完了したら、下記コマンドでインストールできたかを確認します。
1 2 |
# mysql --version mysql Ver 14.14 Distrib 5.6.40, for Linux (x86_64) using EditLine wrapper |
MySQLを起動する
MySQLをインストールしましたので、MySQLを起動します。
MySQLを起動する前に、一度下記のコマンドで MySQLのステータスを確認します。
1 2 3 4 |
# systemctl status mysqld ● mysqld.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: inactive (dead) |
「Active: inactive (dead)」となっていますので、下記のコマンドで MySQLを起動します。
1 |
# systemctl start mysqld |
上記のコマンドは、正常に起動してもレスポンスはありません。
そのため、下記のコマンドで改めて MySQLのステータスを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 |
# systemctl status mysqld ● mysqld.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since 日 2018-07-15 10:19:02 JST; 35s ago Process: 1504 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS) Process: 1444 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 1503 (mysqld_safe) CGroup: /system.slice/mysqld.service tq1503 /bin/sh /usr/bin/mysqld_safe --basedir=/usr mq1669 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock (以下略) |
3行目に「Active: active (running)」と表示されていますので、無事に稼働していることが確認できました。
仮想マシン起動時に MySQLの自動起動を ONにする
現在の状態では、仮想マシンの電源を落としたり、再起動したりしたときは、MySQLは止まってしまいます。
そうならないために、下記のコマンドを実行し、仮想マシンが起動した際に MySQLも自動起動する設定を行います。
1 |
# systemctl enable mysqld |
入力したコマンドによって正しく設定されたかどうかを確認するには、下記のコマンドを実行します。「enabled」と表示されれば正しく設定されたことが確認できます。
1 2 |
# systemctl is-enabled mysqld enabled |
PHPのインストール
yumコマンドを利用して、PHPをインストールします。
まず、下記コマンドで EPELリポジトリをインストールします。
リポジトリをインストールしないと、PHP5.4がインストールされました。
1 |
# yum -y install epel-release |
続けて、Remiリポジトリをインストールします。
1 |
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm |
つづけて、下記コマンドで PHPをインストールします。
1 |
# yum -y install --enablerepo=remi,remi-php71 php php-mbstring php-devel php-pdo php-mysqlnd php-json php-common php-fpm php-cli php-xml php-process php-intl |
インストールが完了したら、下記コマンドでインストールできたかを確認します。
1 2 3 4 |
# php --version PHP 7.1.19 (cli) (built: Jun 21 2018 07:18:00) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies |
インストール PHPを反映させるため、下記のコマンドで Apacheを再起動します。
1 |
# systemctl restart httpd |
動作確認として、デフォルトのドキュメントルート「/var/www/html/」に「phpinfi();」を記述した「index.php」ファイルを作成し、ブラウザでアクセスしてください。
下記の「phpinfo()」の画面が表示されれば正しくインストールができていることの確認ができます。
PHPをインストールする際の PHPのバージョン指定、および、ライブラリ指定
今回、PHPをインストールする際に使ったコマンドは以下の通りです。
1 |
# yum -y install --enablerepo=remi,remi-php71 php php-mbstring php-devel php-pdo php-mysqlnd php-json php-common php-fpm php-cli php-xml php-process php-intl |
このコマンドの中で 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をインストールするといいでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# rpm -qa | grep php php-common-7.1.19-1.el7.remi.x86_64 php-cli-7.1.19-1.el7.remi.x86_64 php-xml-7.1.19-1.el7.remi.x86_64 php-mysqlnd-7.1.19-1.el7.remi.x86_64 php-mbstring-7.1.19-1.el7.remi.x86_64 php-process-7.1.19-1.el7.remi.x86_64 php-json-7.1.19-1.el7.remi.x86_64 php-pdo-7.1.19-1.el7.remi.x86_64 php-intl-7.1.19-1.el7.remi.x86_64 php-devel-7.1.19-1.el7.remi.x86_64 php-7.1.19-1.el7.remi.x86_64 php-fpm-7.1.19-1.el7.remi.x86_64 |
例えば、「php-common-7.1.19-1.el7.remi.x86_64」は「php-common」がインストールされています。「remiリポジトリ」からインストールされています。と言った内容です。
追加で PHPのライブラリをインストールする場合
PHPをインストールした後に必要なライブラリが分かった場合などに、後から特定のライブラリだけをインストールしたい場合があるかと思います。
そういう場合は、下記の様な感じで、必要なライブラリだけを指定してインストールすれば OKです。
1 |
# yum install --enablerepo=remi,remi-php71 php php-intl |
CakePHP3をインストールするための流れ
いよいよ、セットアップのクライマックス、CakePHP3のインストールです。
すでに環境が整っている場合は、CakePHP3をインストールするフォルダに移動し、下記のコマンドを実行するだけでインストールすることができます。
※「composer」コマンドは、root権限ではなく、Webサイトを構築するユーザの権限で実行します。
1 |
$ composer create-project --prefer-dist cakephp/app myapp |
ですが、CakePHP3をインストールするには、Composer、Gitが必要になります。
Gitをインストールするには wget、gccが必要であったり、CentOSを最小単位でインストールした場合は、zip、unzipコマンドが入っていませんので、これもインストールする必要があります。
ちなみに、上記のコマンドを実行すると、最新版の CakePHP3がインストールされます。
場合によってはバージョンを指定してインストールしたい場合もあるかと思いますが、その場合は、下記の記事を参考にしてください。
CakePHP3、CakePHP4、CakePHP5のバージョンを指定してインストールする詳細な手順を解説
Composerをインストール
まず、Composerをインストールするためのインストーラー「composer-setup.php」をダウンロードするため、下記のコマンドを実行します。
ダウンロードする場所はどこでも問題ありません。後から削除、移動の対応を行いますので。
1 |
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" |
※「curl
」や「wget
」コマンドでダウンロードしても問題ありませんが、「wget
」コマンドは別途インストールする必要があります。
続いて、ダウンロードした「composer-setup.php」を実行して、実行ファイル「composer.phar」を作成するため、下記のコマンドを実行します。
1 |
# php composer-setup.php |
「ls
」コマンドを実行して、実行ファイル「composer.phar」が作成されていることを確認できたら、「composer.phar」は不要ですので、下記のコマンドで削除します。
(「rm
」コマンドで削除しても問題ありません。)
1 |
# php -r "unlink('composer-setup.php');" |
実行ファイル「composer.phar」を、CentOSのどこからでも使えるようにするため、また、コマンドを扱いやすいように、拡張子を取り除くため、下記のコマンドを実行します。
1 |
# mv composer.phar /usr/local/bin/composer |
※システム上のどこからでもコマンドを入力すれば実行できるようにパスが通った場所のことを、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をインストールため、下記のコマンドを実行します。
1 |
# yum install -y zip unzip |
zip、unzipをインストールする理由と解説
CentOSをインストールする際、Webサーバを構築する用の構成となる「最小構成」を選択していた場合、CakePHP3をインストールする際に必要となる zip、unzipコマンドが入っていません。
そのため、CakePHP3をインストールするコマンド「composer create-project --prefer-dist cakephp/app myapp
」を実行すると下記のエラーが発生します。
1 2 |
Failed to download symfony/polyfill-mbstring from dist: The zip extension and unzip command are both missing, skipping. Your command-line PHP is using multiple ini files. Run `php --ini` to show them. |
参考サイト
https://teratail.com/questions/46730
※上記サイトのコマンドは「install」の綴りが間違っています。
Gitをインストールするための準備・wgetをインストール
wgetをインストールため、下記のコマンドを実行します。
1 |
# yum install -y wget |
wgetをインストールする理由と解説
Gitをインストールする際に wgetコマンドを使いますが、前項の zip、unzipと同じく、「最小構成」では wget入っていないようです。
をインストールため、下記のコマンドを実行します。
Gitをインストールするための準備・gccをインストール
gccをインストールため、下記のコマンドを実行します。
1 |
# yum install -y gcc |
gccをインストールする理由と解説
Gitをインストールする際、makeコマンドを使用しますが、その際「gcc」が必要になります。
そのため、あらかじめ gccをインストールしておかないと下記のエラーが発生します。
1 |
-bash: cc: command not found |
ちなみに「gcc」は、Linux、Windowsなどで動作するフリーのコンパイラです。
Gitをインストールするための準備・curl-devel、expat-devel、gettext-devel、openssl-devel、zlib-develをインストール
curl-devel、expat-devel、gettext-devel、openssl-devel、zlib-develをインストールため、下記のコマンドを実行します。
1 |
# yum -y install 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コマンドで展開します。
1 2 3 |
# cd /usr/local/src/ # wget https://www.kernel.org/pub/software/scm/git/git-2.18.0.tar.gz # tar xzvf git-2.18.0.tar.gz |
続けて、Gitをインストールため、下記のコマンドを実行します。
「git-2.18.0」フォルダに移動し、インストールを実行します。
1 2 3 4 |
# cd git-2.18.0 # make prefix=/usr/local all # make prefix=/usr/local install # source /etc/profile |
Gitが正しくインストールされたか、確認をします。
1 2 |
# git --version git version 2.18.0 |
ダウンロードした Gitの tarファイルはもう必要ありませんので、下記コマンドで削除します。
1 2 |
# cd ../ # rm -rf git-2.18.0.tar.gz |
Gitを makeコマンドでインストールする理由と解説
Gitも yumコマンドを使って下記のようにインストールをすることは可能です。
1 |
# yum install -y git |
ですが、yumコマンドでインストールした場合は、最新版ではないバージョンがインストールされる場合があります。
そのため、この記事では最新版をダウンロードしてきて、makeコマンドでインストールする方法をとっています。
Gitを makeコマンドでインストールする際に発生する可能性があるエラーと対処方法
私がインストールしたときは、先に解説した「gcc」が足りない、というエラー「/bin/sh: cc: command not found
」が出ただけでした。
ですが、環境によっては多様なエラーが出るようです。
出る可能性があるエラーと、不足しているツールのインストール方法を解説します。
-bash: curl-config: command not found
のエラーが出たとき下記のコマンドを実行。
1 |
# yum install -y curl-devel |
git-compat-util.h:208:25: warning: openssl/ssl.h: No such file or directory g
のエラーが出たとき下記のコマンドを実行。
1 |
# yum install -y openssl-devel |
http-push.c:14:19: warning: expat.h: No such file or directory
のエラーが出たとき下記のコマンドを実行。
1 |
# yum install -y expat-devel |
MSGFMT po/de.msg make[1]: *** [po/de.msg] Error 127
のエラーが出たとき下記のコマンドを実行。
1 |
# yum install -y gettext |
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
1 |
# yum install -y gettext |
参考記事
https://qiita.com/mochimochi-inu/items/914debabca56acc20a6d
CakePHP3をインストール
CakePHP3をインストールする章に入ってからも長かったですが、ようやく CakePHP3をインストールする下記コマンドを実行します。
コマンドは、CakePHP3のフォルダを作成する場所で実行しますので、CakePHP3をインストールするフォルダを作成、オーナーを変更しつつ、ユーザを変更し、CakePHP3をインストールするコマンドを実行します。
1 2 3 4 5 6 |
# cd /var/www # mkdir virtualhost # chown admin:admin virtualhost # cd virtualhost # su admin $ composer create-project --prefer-dist cakephp/app myapp |
CakePHP3をインストールする流れの解説
今回の記事では、CakePHP3は「/var/www/virtualhost/myapp/」に設置します。
また、Webサイトを作成するユーザを「admin」としています。
そのため、「virtualhost」フォルダを作成し、フォルダのオーナーを「admin」に変更し、「Composer」コマンドを実行する前に「admin」ユーザに切り替えを行っています。
「composer」コマンドは、root権限ではなく、Webサイトを構築するユーザの権限で実行します。
先にも書きましたが、上記のコマンドを実行すると、最新版の CakePHP3がインストールされます。
状況によってはバージョンを指定してインストールしたい場合もあるかと思いますが、その場合は、下記の記事を参考にしてください。
CakePHP3、CakePHP4、CakePHP5のバージョンを指定してインストールする詳細な手順を解説
VirtualHostの設定をして CakePHP3を表示する
前項で CakePHP3をインストールしましたが、デフォルトのドキュメントルート「/var/www/html/」ではない場所にインストールしましたので、デフォルトの設定のままではブラウザではアクセスできません。
そのため、ブラウザでもアクセスできるよう、VirtualHostの設定を行います。
/etc/httpd/conf/httpd.confの設定変更
まず最初に、Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」の設定内容を変更します。
下記の様にコメントになっている「ServerName」の値を設定します。
1 2 3 4 5 6 7 8 |
# ServerName gives the name and port that the server uses to identify itself. # This can often be determined automatically, but we recommend you specify # it explicitly to prevent problems during startup. # # If your host doesn't have a registered DNS name, enter its IP address here. # #ServerName www.example.com:80 ServerName localhost:80 |
/etc/httpd/conf/httpd.confに「ServerName」を設定する理由とその解説
VirtualHostの設定をする際「ServerName」を設定せずに、Apacheの再起動を実行すると、下記のワーニングが発生します。
1 |
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName’ directive globally to suppress this message |
これは、「ServerName」が設定されていないための警告ですので、前項のように「ServerName」を設定します。
ちなみに、「ServerName」に設定する値は、下記のコマンドで確認します。
1 2 |
# hostname --fqdn localhost |
または、下記コマンドで「/etc/hosts」に記述されているものを記載します。
1 |
# vi /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を再起動すると下記のワーニングが発生します。
1 |
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf/httpd.conf:357 |
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」ファイルはありませんので、新規で作成します。
1 2 3 4 5 6 7 8 9 10 11 12 |
<VirtualHost *:80> DocumentRoot /var/www/html ServerName 192.168.56.100 </VirtualHost> <VirtualHost *:80> ServerAdmin test@example.com DocumentRoot /var/www/virtualhost/myapp ServerName myapp.example.com ErrorLog logs/myapp.example.com-error_log CustomLog logs/myapp.example.com-access_log combined </VirtualHost> |
「/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ごとに出力されるログを分かりやすくするためには、ファイル名にドメイン名を入れておく方がいいでしょう。
ちなみに、ログファイルを出力する場所を指定したくても、下記の様にパスを指定することはできません。
1 2 |
ErrorLog /var/www/myapp/logs/myapp.example.com-error_log CustomLog /var/www/myapp/logs/myapp.example.com-access_log combined |
上記のようにパスを指定するような記述をして Apacheを再起動した場合、下記のようなエラーメッセージが出て Apacheは起動できなくなります。
1 2 |
# systemctl restart httpd Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details. |
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」が付いたファイルに設定情報を記述すればいいことが分かります。
1 2 |
Include conf.modules.d/*.conf IncludeOptional conf.d/*.conf |
ちなみに、私が「vhost.conf」ファイルにひとまとめにした理由は、複数の VirtualHostの設定をまとめて修正する必要がでてきたとき、複数のファイルを開くことなく対応できる方が楽だろう、と判断したからです。
参考
https://weblabo.oscasierra.net/apache24-centos7-virtualhost/
「.htaccess」を使用できる設定を追加する
前項の設定をする際に一緒に設定できる項目ですが、デフォルトの設定では「.htaccess」が利用できませんので、「.htaccess」が利用できるようにする設定を「/etc/httpd/conf.d/vhost.conf」に行います。
前項で VirtualHostの設定を行った下あたりに下記の記述を追記します。
1 2 3 4 5 |
<Directory "/var/www/virtualhost/myapp"> AllowOverride All Order allow,deny Allow from all </Directory> |
「.htaccess」を使用できる設定する理由と解説
CakePHP3は、「.htaccess」が使用できない環境では利用することができません。
「.htaccess」が利用できない場合は、CakePHP3のいつもの赤い画面ではなく、下記の画面が表示されます。
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」を利用可能にするための設定を行いました。
その設定内容が文法的に正しいかどうか、下記のコマンドを実行します。
1 2 |
# service httpd configtest Syntax OK |
上記のように「Syntax OK」が表示されると、文法的に正しいことが確認できます。
ただ、「Syntax OK」とでても、設定する値が間違っている場合は、Apacheが起動できない場合もあります。
「Syntax OK」の場合は、設定内容を Apacheに反映させるため、下記のコマンドを実行して Apacheを再起動します。
1 |
# systemctl restart httpd |
また、Apacheの稼働状況を確認するコマンドは以下になります。
1 |
# systemctl status httpd |
また、Apacheを起動、再起動するコマンドは複数存在しています。
上記のコマンド以外のコマンドについては、下記に記事を書いていますので、あわせて参考にしてください。
Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド
「SELinux」でパーミッションの設定を変更
「SELinux」の設定を無効にするため、まず「SELinux」が稼働しているかどうかを、下記のコマンドを実行して確認します。
1 2 |
# getenforce Enforcing |
上記の通り「Enforcing」と出た場合は、「SELinux」が稼働しています。
稼働している場合は、「SELinux」の設定ファイル「/etc/selinux/config」に対して「SELinux」を停止する設定を行います。
1 2 3 4 5 6 7 8 9 10 11 |
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted |
「/etc/selinux/config」の内容は、上記のようになっています。
この 6行目の「SELINUX=enforcing」を「SELINUX=disabled」、もしくは、「SELINUX=permissive」に変更します。
設定を変更したら、設定内容を反映させるために、下記コマンドを実行し、仮想マシンを再起動します。
1 |
# reboot |
仮想マシンが再起動したのち、下記コマンドで「SELinux」の状態を確認します。
1 2 |
# getenforce disabled |
設定ファイルに記述したとおりの「disabled」もしくは「permissive」になっていれば設定完了です。
「setenforce」コマンドと稼働状況「enforcing」「permissive」「disabled」
「SELinux」の稼働状況を変更するコマンドとして「setenforce」があります。
下記の様に使用します。(「setenforce 0」で状態を「Permissive」に変更し、「getenforce」で稼働状況を確認しています。)
1 2 3 |
# setenforce 0 # getenforce Permissive |
逆に「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にアクセスすると、下記のようなパーミッション(属性)に関するワーニングが大量に出力されます。
1 2 |
Warning (2): file_put_contents(/var/www/virtualhost/myapp/logs/error.log): failed to open stream: Permission denied [CORE/src/Log/Engine/FileLog.php, line 133] Warning: file_put_contents(/var/www/virtualhost/myapp/logs/error.log) [function.file-put-contents]: failed to open stream: Permission denied in /var/www/virtualhost/myapp/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 133 |
また、ワーニングが大量に出ている画面を下の方にスクロールしていくと、下記の様に「Filesystem」の項目には「Your tmp directory is NOT writable.」と表示されており、書き込み権限がないことが分かります。
書き込み権限がないだけですので、パーミッションを 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行を追加します。
1 |
192.168.56.101 myapp.example.com |
これで、全ての設定が完了しました。
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」に関する記事一覧
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
CakePHP4の定数定義ファイルを環境変数によって本番と開発を振り分ける方法解説
CakePHP4で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定しそれを読み込み判別する。
-
CakePHP 2.3 連携先のテーブルの項目で条件抽出する場合
アソシエーション(連携)している先のテーブルの項目で条件抽出する際の考え方と注意点をサンプルソースを用いて説明しています。
-
CakePHP3のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
CakeDC謹製Usersプラグインの紹介。ユーザ新規登録の流れを紹介しつつテンプレートファイルがどこにあるか、設定情報ファイルがどこにあるか、を説明しつつカスタマイズの方法を解説します。
-
CakePHP3のCakeDC/Usersでログインユーザの所有レコードのみ更新、削除する権限管理の設定方法
CakePHP3のユーザ管理、ログイン認証プラグイン「CakeDC/Users」の権限管理を行う方法やアクセスできるコントローラー、アクションを設定、所有権を持つレコードのみ更新できる設定方法を解説。
-
CakePHP4から外部のデータベースにアクセスする方法解説
CakePHP4のシステムから他のシステムのデータベースにアクセスをし、SQL文を実行する方法を解説。try-catchでエラーを取得する方法も解説。
-
CakePHP4の規約外のカラムをキーにアソシエーション(テーブル連結)する方法
CakePHPで規定外のカラム名のキーを指定してアソシエーション(テーブル連結)をする方法を解説。アソシエーション名によってはミスが発生しやすい点もあるので注意も必要。
-
CakePHP 2.3 コマンドラインからPHPのシェル実行の方法解説
CakePHP 2.3でコマンドラインから CakePHPで記述した処理を実行する方法を解説します。
-
CakePHP 2.3で PDFを作成する方法を調査「mpdf」「TCPDF」「FPDF」
CakePHPで PDFを編集、出力するには「mpdf」「TCPDF」「FPDF」といったプラグインがあり、使い勝手を比較検討しました。TCPDFが一番良さそうでした。
-
CakePHP3で保存前にバリデーション結果を取得する2つの方法
CakePHP3でデータベースに値を保存する前にバリデーションを行い、その結果によって処理を振り分ける方法について解説。「$topic->errors()」と「$topic->hasErrors()」の2つの方法がある。
-
CakePHP3のアソシエーション機能を使い関連レコードをまとめて削除
CakePHP3でレコードを削除する際に関連するレコードをまとめて削除する機能の解説。フレームワークのメリットを存分に発揮し、コマンドを1行追加するだけで実装可能。