2017年12月9日土曜日

Linux mintの導入・インストール

Linux mintの導入・インストール

1、Linux mintを配布しているページへ行く。ここ
2、Linux mintのISOイメージをダウンロード。(1時間〜2時間くらいかかります)
3、ダウンロードしたISOイメージを適当なところに保存。
4、DVD-Rを用意する。多分100均のやつじゃだめ。ヨドバシカメラとかで4GBくらい入るやつを買ったほうがいい。
5、ImgBurnをダウンロード。これを使って、用意したDVD-RにISOイメージを書き込む。
6、書き込みが成功するとよくわからない明るい音楽が流れる。このLinuxのISO書き込み済みDVD-Rは「ライブDVD」と呼ばれます。
7、電源コードがつながっていること、LANケーブルがつながっていることを確認。書き込み済みのDVD-R(ライブDVD)をセットしたまま再起動、windowsのロゴが出る前にF2を連打してBIOS画面を出す(PCメーカーによって連打するキーは異なるようですが、だいたいF2です。ちなみに私が使用していたのは東芝dynabookですがF2でした)
8、BIOS画面に「Boot」だか「起動」っていうのがあるはず。その画面をだす。ここでCD/DVDドライブの優先度を一番上にする。F5/F6で変えられるようです。

9、再起動する。するとDVDのなかのLinux mintが立ち上がります。PCをLinux化したい場合、立ち上げたLinux mintのデスクトップにインストール用のファイルがあるので、それをダブルクリック、そのままLinux mintをインストールしてください。

2017年10月20日金曜日

PHPのインストール

最初にすること

とりあえず現時点でインストール可能なPHPのパッケージのバージョンを確認します。
$ sudo yum list php*

まあおそらくはクッソ古いPHPしかないと思います。以下のコマンドでepelとIUSのリポジトリを利用可能にし、最新のPHPをインストールできるようにします。
CentOS7
$ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install https://centos7.iuscommunity.org/ius-release.rpm

CentOS6以前
$ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
$ sudo yum install https://centos6.iuscommunity.org/ius-release.rpm

最新版(執筆時点ではphp7.2)が利用可能になりました。とりあえずインストールします。
$ sudo yum -y install php72u php72u-mysqlnd php72u-gd php72u-mbstring php72u-opcache php72u-xml php72u-pecl-xdebug php72u-pdo php72u-devel php72u-json

phpのインストールが終わったらアパッチの再起動をします。
(CentOS7)
$ sudo systemctl restart httpd
(CentOS6以前)
$ sudo service httpd restart

するとphp7.2があなたのサーバーの動いている状態になります。 これを確かめるために適当なテキストファイルを共有フォルダの中に作成し、これをinfo.phpという名前に変えます。拡張子も変えてください。変わらない場合はWindows側で拡張子を表示させる設定を先にしてください。


そしたらinfo.phpの中にこう書きます。そして保存して終了します。
<?php
phpinfo();
?>

こんな感じ。

そしたら仮想サーバーにブラウザからアクセスします。vagrantを使っていてprivate networkの設定になっている場合はhttp://192.168.33.10/info.phpにアクセスすればいいはずです。
以下のように表示されれば成功です。phpは正常に動いています。



ついでにxdebugの設定もしておきましょう。
phpの設定ファイルを開きます。
$ sudo vi /etc/php.ini

その設定ファイルに以下をコピペします。青い部分と赤い部分は環境によって違う可能性があるのでよく確認してからにしてください。
[XDebug]
zend_extension=/usr/lib64/php/modules/xdebug.so
html_errors=on
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host="192.168.33.10"
xdebug.remote_port=9000
xdebug.remote_mode=req
xdebug.idekey="netbeans-xdebug"
xdebug.remote_connect_back = On
vi (あるいはvim) の操作法
「a」を押すと編集モードになります。エスケープキー(esc)を押すと編集モードを終了、コマンドモードに戻ります。「?aaa」と入力すると「aaa」という文字列でそのファイルの中を検索し、最初のヒット内容に移動します。「#」をクリックで次のヒット内容に移動します。
何もせずにファイルを閉じるにはコマンドモードで「:q!」を入力します。編集内容を保存してファイルを閉じるには「:wq」を入力します。

赤いxdebug.remote_host="192.168.33.10"があなたの仮想マシンのIPアドレスです。つまりゲストのほうのIPです。Vagrantfileに書かれているIPを書いてください。
青いzend_extension=/usr/lib64/php/modules/xdebug.soにはxdebug.soの場所を書きます。
まずlocateを使えるようにします。CentOS6以前は多分デフォルトで入ってます。
$ sudo install mlocate
$ sudo updatedb
そしてxdebug.soの場所を調べます。
$ sudo locate xdebug.so
もし場所が違うようなら正しく修正してください。

できたらアパッチの再起動をします。
$ sudo systemctl restart httpd

XdebugとNetbeansの設定


さっき作ったinfo.phpを見ると現在なんのパッケージが入っているのか、どういう設定なのかがわかります(ただし見れるのは当然PHP関連のみ)。


これを見るために・・・・

これを作りましたね。


info.phpが動いているのを確認したらIDEであるNetbeansをインストールしましょう。
https://netbeans.org/features/php/

私はNetbeans version 8.2をインストールしました。

インストールが終わったらNetbeansを「管理者として起動」で起動します。
そしたら
File --> New Project
をクリックします。


PHP --> PHP Application with existing sources を選びNextをクリック。

そしたらこんな画面になります。「Browse」からプロジェクトフォルダを選びます。今回は共有フォルダであるMyCentOsフォルダを指定します。つぎにPHPのバージョンを選びます。今回は「7.2」が選択肢になかったので「7.0」にしました。デフォルトエンコーディングには「UTF-8」を選びます。できたらNextをクリック。

「Project URL」にはあなたのプロジェクトのURLを書きます。つまり、さっきのvagrantの仮想サーバーのアドレスhttp://192.168.33.10/ですね。Index Fileにはプロジェクトのindexファイルのパスを書きます。今回はinfo.phpなのでinfo.phpのパスを書きます。そしたら「Finnish」を押します。


そしたら違う画面になるので、プロジェクト名の上で右クリックします。
するとメニューが出るので「Properties」を押します。



そしたら左のメニューから「Run Configuration」を選択し、右のメニューから「Advanced」をクリックします。


するとこのような画面になるので「Sever Path」をダブルクリックします。さらに仮想サーバー内のプロジェクトパスを書きます。今回は共有フォルダ直下に入れているだけなので/vagrantです。「Project Path」にはホスト側のプロジェクトパスを書きます。「...」をクリックしてプロジェクトパスを指定しましょう。今回は共有フォルダ直下に入れているだけなので「C:\MyVM\MyCentOs」です。

全部できたら「OK」を押しましょう。


するとxdebugが動くはずです。行番号をクリックするとブレイクポイント(処理が一時停止する場所)を追加できます。ブレイクポイントを作ったら上のメニューからデバック用の処理開始ボタンを押します。



すると処理がブレイクポイントの場所で止まるはずです。止まったら、その時点の変数の中身などいろいろな情報がわかります。開発には欠かせないものです。このようなプログラムの実行をステップ実行といいます。F7を押すと次の行にうつります。
もし色々すべてうまく行ったなら、右下に「netbeans-xdebug: running」が表示されるはずです。されていない場合は何かがうまく行っていないです。



補足


ファイルの1行目で処理を停止したい場合、 「Stop at First line」にチェックを入れます。





するとファイルの1行目で処理が止まるようになります。慣れてくるとファイルが変わるたびに処理が止まるのがうざく感じるので私はオフにしてます。

もしxdebugがちゃんと動かないなら仮想サーバーのエラーログを確認します。
# less /var/log/httpd/error_log

現在の通信状況を確認する場合はこのコマンドです。
# netstat -an

xdebugはポート80番で動きます。なのでxdebugがちゃんと動いている場合、こんなふうな通信があるはずです。
tcp6       0      0 192.168.33.10:80       192.168.33.2:49901      ESTABLISHED

Netbeansのポートは9000番です。
tcp        0      0 192.168.33.10:52024    192.168.33.2:9000       ESTABLISHED

Netbeansのポート番号は以下から変更可能です。

stackoverflowより引用の図。
Citation from stackoverflow (an answer from Linus Kleen) https://stackoverflow.com/questions/8049776/xdebug-for-remote-server-not-connecting

もし通信がなぜか失敗しているならウイルスソフトかファイアウォールがxdebugとNetbeansの通信をブロックしている可能性が高いです。その場合はファイアウォールやウイルスソフトのブロック履歴を確認してください。

CakePHP3

CakePHP3を使っている場合はRun Configurationを以下のように変えます。「cake」はcakephpアプリの名前ですがもし違う名前を使っているならうまく調整してください。とにかくwebroot内をproject urlとして設定できればOKです。


リンク:
1. vagrantとvirtual box
2. アパッチのインストール
3. MySQLのインストール
4. PHPのインストール
5. CakePHP3のインストール
6. MigrationとBake

MySQLのインストール

今度はMySQLをインストールします。これがないとデータベースが使えません。

とりあえずCentOSにもともと入っているmariaDBを消します。

$ sudo yum remove mariadb-libs
$ sudo rm -rf /var/lib/mysql/

それからMySQLをインストールします。
このサイトからまずMySQLをダウンロードします。
https://dev.mysql.com/downloads/repo/yum/

ダウンロードといってもCentOSでのダウンロードなのでwgetを使います。wgetはなんのことはありません、単になにかをダウンロードしたいときに使うコマンドです。CentOSはGUIではないので「ブラウザを開きクリックでダウンロード」はできないのです。なので代わりにwgetをつかってダウンロードします。

とりあえずCentOS (Linux) version 7用のMySQLを探してwgetでダウンロードします。
ちなみにCentOSはRedHatLinuxのパクリ(というと言葉は悪いですが)OSなのでRedHatLinuxで動くものはたいていCentOSでも動きます。

CentOS version6用のは一個下にありますね。

以下のコマンドを実行してください。するとダウンロードが始まります。終わったらrpm -ivhでインストールします。
CentOS 7 $ wget https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm $ sudo rpm -ivh mysql57-community-release-el7-10.noarch.rpm $ sudo yum install mysql-server CentOS 6以前 $ wget https://dev.mysql.com/get/mysql57-community-release-el6-10.noarch.rpm $ sudo rpm -ivh mysql57-community-release-el6-10.noarch.rpm $ sudo yum install mysql-server
するとMySQLがインストールされます。以下のコマンドでMySQLをスタートします。
CentOS7の場合
 $ sudo systemctl start mysqldCentOS6以前の場合
 $ sudo service mysqld start
MySQLのステータスを見るときは以下のコマンドを使います。
CentOS7の場合
 $ sudo systemctl status mysqld
CentOS6以前の場合
 $ sudo service mysqld status
なお、もしなにか間違ってパッケージをインストールしちゃった場合は次のようにrpmからアンインストールします。yumでアンインストールできる場合はyum removeを使います。以下はmysqlをアンインストールする例です。
まずmysqlで検索して正確な名前を調べます。
$ sudo rpm -qa | grep -i mysql
次にその名前を指定してアンインストールコマンドを入力します。
$ sudo rpm -e <正確な名前>

MySQLが仮想マシン起動時に自動的に立ち上がるようにします。
以下のコマンドを実行してください。
CentOS7の場合
 $ sudo systemctl enable mysqld
CentOS6以前の場合
 $ sudo chkconfig mysqld on


とりあえずMySQLのインストールはできましたが、MySQLは初回起動時に設定をする必要があります。次のコマンドを使用して一時パスワードを発行します。

$ sudo grep 'temporary password' /var/log/mysqld.log

赤線部が一時パスワード
それから次のコマンドを使用します。
$ sudo mysql_secure_installation

そしたらパスワードを求められると思うのでさっきの一時パスワードを入力します。そのほかは全部「y」でいいと思いますが、rootにパスワード設定しないとかお好みで設定しても構いません。

rootにパスワードを設定する場合、半角英数字8文字でかつ特殊文字(@など)1字以上、大文字1字以上、小文字1字以上混ぜなきゃいけないパスワードの設定を求められます。これは面倒くさいので4文字かつ変な制約なしにパスワードを設定できるように変えます。

以下のコマンドでMySQLにログインします。

$ mysql -u root -p


ここで以下のSQLを実行することでパスワード設定時のルールが見れます。

mysql> SHOW VARIABLES LIKE 'validate_password%';

これによると現在は「8文字以上、大文字1文字以上、小文字1文字以上、特殊文字@など1文字以上」というルールになっています。

最低4文字以上、他の制約はなしというルールに変えます。

mysql> SET GLOBAL validate_password_length=4;
mysql> SET GLOBAL validate_password_policy=LOW;

さっきと同じSQLを実行するとルールが変わってることがわかります。

新しいrootのパスワードを設定します。とりあえずrootのパスワードは「root」にしておきます。以下のSQLでパスワード変更を行います。

mysql> set password for root@localhost=password('root');


以上でMySQLの設定は終わりです。
MySQLを抜ける場合は以下のコマンドです。

mysql> quit



リンク:
1. vagrantとvirtual box
2. アパッチのインストール
3. MySQLのインストール
4. PHPのインストール
5. CakePHP3のインストール
6. MigrationとBake

アパッチのインストール

1. Apacheのインストール

前回はvagrantとvirtual boxをダウンロード、インストールしました。今回はさらにApacheをインストールして仮想マシンをサーバー化します。とりあえずinfoコマンドをteraterm上で実行してインストール可能なApacheを確認します。

$ yum info httpd


上のようにいろいろな情報が表示されると思います。Nameの部分にhttpdと書いてありますが、これがApacheの名前です。問題なさそうなのでとりあえずApacheをインストールします。

$ sudo yum -y install httpd

するとインストールが始まります。
インストールが始まります。終わるまでしばらくかかるかもしれません。

2. Apache (httpd) をスタートする

Apache(httpd)をスタートするためには以下のコマンドを実行します。パスワードは「vagrant」。
CentOS 7の場合:
$ sudo systemctl start httpd.service
CentOS 6以前:
$ sudo service httpd start

なんかエラーが出て実行できない場合はパスが通っていないのだと思います。なので以下のコマンドを実行します。
CentOS  7の場合:
$ sudo /sbin/systemctl start httpd.service
CentOS 6以前:
$ sudo /sbin/service httpd start


Apacheのステータスを確認するには以下のコマンド。
CentOS 7の場合:
$ sudo systemctl status httpd.service
CentOS 6以前の場合:
$ sudo service httpd status

Apacheを止めるには以下のコマンド。
CentOS  7の場合:
$ systemctl stop httpd.service
CentOS 6以前の場合:
$ service httpd stop

Apacheの再起動には以下のコマンド。
CentOS 7の場合:
$ sudo systemctl restart httpd.service
CentOS 6以前の場合:
$ sudo service httpd restart

3. Apacheが自動的に始まるようにする

仮想マシンがスタートしたら自動的にApacheがスタートするようにするため以下のコマンドを実行します。
CentOS7の場合:
$ sudo systemctl enable httpd.service
CentOS6以前の場合:
$ sudo chkconfig httpd on


4. Apacheが動いていることの確認

Vagrantfileで指定した次のURLにアクセスします。(事前にApacheをスタートしておいてください。)

http://192.168.33.10/

もし仮想マシンとApacheがちゃんと動いていれば次の画面が表示されます。




5. シンボリックリンク

ホストPC内の共有フォルダーにあるものは仮想マシンの/vagrantで共有されます。中に入ってるものがそのまま/var/www/htmlにコピーされれば更新が即座に反映されブラウザからアクセスして更新が確認できたりするので便利です。なのでこれを実現するためにシンボリックリンクを張ります。

$ sudo rm -rf /var/www/html
$ sudo ln -fs /vagrant /var/www/html

これでシンボリックリンクが張れたはず。以下のコマンドを実行して、共有フォルダ内のファイルが表示されれば成功です。

$ ls /var/www/html



この共有フォルダにhello.htmlとかphpファイルとかpythonのファイルをいれることでhttp://192.168.33.10/hello.htmlのようにブラウザからアクセスできるようになります。


リンク:
1. vagrantとvirtual box
2. アパッチのインストール
3. MySQLのインストール
4. PHPのインストール
5. CakePHP3のインストール
6. MigrationとBake


vagrantとvirtual box

vagrantで仮想環境を作って開発環境を整える方法を書きたいと思います。

1. とりあえずvagrantとvirtual boxをダウンロードする

2つとも無料です。

Virtual Box - https://www.virtualbox.org/wiki/Downloads
Vagrant - https://www.vagrantup.com/

ダウンロード、インストールまでしてみてください。

2. 確認

インストールが終わったら以下のコマンドをコマンドプロンプト上で実行します。
(コマンドプロンプトってあの黒いウィンドウです。なんだそれって人はcmdでPC内を検索すると見つかります。)

vagrant -v

ちなみに書籍では以下のようにコマンドが書かれることがありますが

$ vagrant -v

この「$」はスーパーユーザーでない一般ユーザーとしてログインしていることを示しています。ゆえに「$」は入力しなくて構いません。ちなみにスーパーユーザーを示すのは「#」です。こっちは管理者とかが使うものです。

vagrantがきちんとインストールされている場合は下のようにバージョン情報が出ます。


3. 仮想マシン用のフォルダを作る

とりあえずC直下に「MyVM」というフォルダを作ります。


ここに「MyCentOs」というフォルダをさらに作ります。

この「MyCentOs」内に仮想マシンを入れます。コマンドプロンプト上でも同じディレクトリに移動する必要があるので、以下のコマンドを入れます。

$ cd C:\MyVM\MyCentOs

するとコマンドプロンプト上のディレクトリも変わるはずです。

4. Boxをinitする

とりあえずbento/centos-7.3というboxを使ってcentos バージョン7.3の仮想マシンを作ってみます。Bento Boxはこちらで確認できます。Boxというのは仮想マシンを作るための情報が詰まっているいわば種みたいなものです。ここから仮想マシンを作るのです。

以下のコマンドを入力してください。

$ vagrant init bento/centos-7.3

すると以下のようなメッセージがでます。

するとさっきのディレクトリに「Vagrantfile」というファイルができます。

これをメモ帳で開きます。



それでVagrantfileを次のように変えます。


#がいっぱいならんでますが、これは#の右側をコメントアウト(プログラム実行時に無視される)するものです。下の「ici」って書いてあるところの#を消してprivate networkの部分をコメントインします。

(ちなみにiciっていうのはフランス語でここって意味です)

(ちなみにメモ帳よりは「Sublime Text」のほうがずっと使いやすいです)

5. Vagrant up

上記のようにコメントインできたらそれをいったん保存して閉じてください。その後にコマンドプロンプト上でvagrant upと入力、実行します。

vagrant up

それで以下のような感じになったら成功。仮想マシン(Cent OS 7.3)が立ち上がります。こいつは仮想マシン(Cent OS 7.3)なので内部でいくら無茶なプログラム走らせようがめちゃくちゃな設定をしようが、最悪ぶっ壊したとしても代わりの仮想マシンをいくらでも同じように作れます。なので練習や開発に最適なのです。

仮想マシンを止めるときは次のコマンドを使ってください。

vagrant halt

仮想マシンを再起動するときは次のコマンドを使ってください。

vagrant reload


6. SSH接続をする

Windowsを使っている場合、vagrantでSSH接続をするにはTeratermが必要です。
ダウンロードしてインストールしてください。
Teraterm: https://ttssh2.osdn.jp/index.html.en

MacやLinuxを使っている場合はOpen SSHが入っていると思うのでコマンドプロンプト上で

$ vagrant ssh

でssh接続ができると思います。

Teratermを使う場合はこんな風に設定します。



ユーザー名とパスワードは両方とも「vagrant」です。


こんな風になったら接続成功です。

なお、できないという人はおそらくWindowsかアンチウイルスソフトのファイアウォールに接続がブロックされてます。どうしてもできない場合は接続がブロックされていないか、ネットワークのセキュリティを確認してください。

7. Update

SSH接続できたらとりあえずアップデートします。以下のコマンドを使ってください。

$ sudo yum update
$ sudo yum upgrade



なお、vagrantのGuestAdditionsとホストのバージョンが合っていないとフォルダがちゃんとリアルタイムで同期しなくなります。なのでGuestAdditionsとホストのバージョンを自動的に調整してくれる便利なvbguestをインストールします。

コマンドプロンプト上で以下のコマンドを使います。

vagrant plugin install vagrant-vbguest

そしたらコマンドプロンプト上でこういうコマンドが使えるようになります。以下のコマンドはGuestAdditionsとホストのバージョンが合っているかを確認するコマンドです。

vagrant vbguest --status

アップデート(GuestAdditionsとホストのバージョンを合わせたい場合)は以下のコマンドを使います。

vagrant vbguest

Mounting failed with the error: No such deviceとかいうエラーがでて共有フォルダーが使えない場合

おまけ centos/7

Boxの初期化にbento/centos-7.3を使いました。
$ vagrant init bento/centos-7.3
こいつの代わりにcentos/7を使ってBoxを初期化することもできます。
$ vagrant init centos/7
centos/7はより安定した動作が期待できます。 ただし、もしこれを使う場合はprivate_keyを使ったログインをする必要があります。private_keyの場所はここです。

C:\vagrant\centos\.vagrant\machines\default\virtualbox


centos/7を使う場合、さらにこの1文をVagrantfileに追加してください。
config.vm.synced_folder ".", "/vagrant", type: "virtualbox"

centos/7の場合、SELinuxのせいでPHPファイルの実行ができない場合があるので以下のコマンドでSELinuxを一時的に無効にします。
$ sudo yum install policycoreutils-python
$ sudo semanage permissive -a httpd_t

リンク:
1. vagrantとvirtual box
2. アパッチのインストール
3. MySQLのインストール
4. PHPのインストール
5. CakePHP3のインストール
6. MigrationとBake


2017年10月19日木曜日

CakePHP3のインストール

最初にすること


私はVagrant+virtual box環境にCakephp3をインストールしました。
なのでここではその前提で話を進めていきます。

必要なPHPのパッケージをインストール


まず必要なパッケージをインストールします。
$ sudo yum -y install php-intl php-mbstring php-xml

IUSレポジトリを使っている場合は以下のように書かないとインストールできません。その場合は以下のようにバージョンを指定してインストールします。
$ sudo yum -y install php71u-intl php71u-mbstring php71u-xml


必要なパッケージがインストールできたらApacheの再起動をします。
CentOS 7でのコマンド
$ sudo systemctl restart httpd.service
CentOS 6でのコマンド
$ sudo service httpd restart 
できたら共有フォルダに行きます。
$ cd /vagrant

composerのインストール


composerをインストールします。インストールしたcomposerをさらにどこからでもコマンドとして使えるようにbinの中に入れます。
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

以下のコマンドを実行して画像のようなComposerが表示されれば成功です。
$ composer

「composer」コマンドを実行してこれが表示されればインストール成功です。

無事インストールできたら一応composerのバージョンを最新にします。
$ composer self-update

CakePHP3のインストール


cakephp3のインストールは次のようにcomposer経由でします。
$ composer create-project --prefer-dist cakephp/app cake
赤字の「cake」はcakephp3アプリで使用する名前です。自由に決められます。好きな名前を入力してください。今回は無難に「cake」という名前にします。

もしcomposerのインストールに失敗するなら以下のように管理者権限でインストールしましょう。管理者権限でcomposerのインストールは本来はあまり良くないです。
$ su
# composer create-project --prefer-dist cakephp/app cake

cakephp3のインストールが終わるとこういうふうに質問されます。
Created `config/app.php` file
Set Folder Permissions ? (Default to Y) [Y,n]?
これはフォルダのパーミッションをいい感じに書き換えてもいい?という質問です。特にフォルダのパーミッションにこだわりがなければyを入力・エンターで自動でパーミッションの設定をします。

まずはビルトインサーバーを使用してcakephp3がちゃんと動いている確認します。
以下のコマンドで共有フォルダからcakeのフォルダに移動します。
$ cd /vagrant/cake

以下のコマンドでサーバーを動かします。-Hオプションはホストの指定をするオプションです。vagrant内で動かしホスト側のブラウザからアクセスしたい場合は0.0.0.0を指定します。。
$ bin/cake server -H 0.0.0.0

するとサーバーが動きます。
Welcome to CakePHP v3.4.9 Console
---------------------------------------------------------------
App : src
Path: /vagrant/cake/src/
DocumentRoot: /vagrant/cake/webroot
---------------------------------------------------------------
built-in server is running in http://0.0.0.0:8765/
You can exit with `CTRL-C`

Ctrl + cでビルトインサーバーを終了します。

もしvagrantのプライベートネットワークを使っている場合、ipは192.168.33.10なはずです。その場合、http://192.168.33.10:8765/とポート指定したURLを使ってホストのブラウザからcakephp3のindexにアクセスします。

私の場合はパブリックネットワークを使っているので、URLはこんな感じです。→ http://192.168.11.100:8765/
(vagrantを使っていない場合、普通にhttp://localhost:8765/からアクセスできるはず)

すべて問題なくできている場合、以下のように表示されます。



うまく表示できました。

今度はApacheの設定を変えます。以下のコマンドでApacheの設定ファイルを編集します。
$ sudo vi /etc/httpd/conf/httpd.conf

vi (あるいはvim) の操作法
「a」を押すと編集モードになります。エスケープキー(esc)を押すと編集モードを終了、コマンドモードに戻ります。「?aaa」と入力すると「aaa」という文字列でそのファイルの中を検索し、最初のヒット内容に移動します。「n」を押すことで次のヒット内容に移動します。
何もせずにファイルを閉じるにはコマンドモードで「:q!」を入力します。編集内容を保存してファイルを閉じるには「:wq」を入力します。

さてApacheの設定ファイルを開き、.htaccess overrideが許可されていることを確認します。さらにAllowOverrideがAllになっていることを確認します。Requireはデフォルトでall grantedだったのでそのままにしました。

<Directory "/var/www/html" />
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

気をつけてほしいのは同じような設定が書かれた設定が複数あることです。必ず編集しようとしている設定のディレクトリが「<Directory "/var/www/html" />」であることを確認したうえで編集してください。


できたら :wq を入力してファイルを保存して閉じます。

Apacheの再起動をします。
CentOS7の場合
$ sudo systemctl restart httpd.service
CentOS6以前の場合
$ sudo service httpd restart

今度はポート番号なしでcakephp3のURLにアクセスします。
プライベートネットワーク → http://192.168.33.10/cake/
パブリックネットワーク → http://(自分で設定したIP)/cake/

以下のようにうまく表示されれば成功です。
うまく行きました

--- 表示できたけどエラーが出てる場合 ---
Vagrantでcakephp3を使用している場合キャッシュに書き込めないとかいうエラーがでることがあります。その場合はフォルダのownerをapacheに変えます。
$ sudo chown -R apache:apache /vagrant/cake
Vagrantのバージョンが古いのかよくわかりませんが共有フォルダ内のownerが変更できないことがあります。その場合は一旦仮想マシンを終了、Vagrantfileに以下をそのまま書き加えます。環境に応じて書き換えたりする必要はありません。
config.vm.synced_folder "./", "/vagrant", owner: 'vagrant', group: 'apache', mount_options: ['dmode=777', 'fmode=777']
それで仮想マシンをもういちど起動します。
なおファルダ・ファイルの権限はls -lコマンドで確認できます。

それでも治らない場合はSE Linuxが悪さをしている可能性があります。
以下のようにSE Linuxをオフにします。
$ sudo getenforce
Enforcing
$ sudo setenforce 0
$ sudo getenforce
Permissive
それで仮想マシンを再起動します。
-----------------------------------------------------

cakephp3のindexの表示までうまくいったら、今度はcakephp3用のデータベースの設定をします。mysqlのユーザー名をroot、パスワードもrootとすると以下のコマンドでtestという名前のデータベースを作成します。
$ mysql -u root -proot
mysql> CREATE DATABASE test;
mysql> exit

今度はcakephp3のapp.phpを書き換えます。
$ sudo vi /vagrant/cake/config/app.php

Datasourcesのusername, password, databaseの値を書き換えます。
「?Datasources」で検索するとすぐ見つかると思います。
'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        /**
         * CakePHP will use the default DB port based on the driver selected
         * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
         * the following line and set the port accordingly
         */
        //'port' => 'nonstandard_port_number',
        'username' => 'root',
        'password' => 'root',
        'database' => 'test',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,

できたら再度cakephp3のindexにアクセスします。
以前はデータベースの部分にエラーがありました。

設定後はエラーが消えているはずです。

これでcakephp3のインストール終了!


リンク:
1. vagrantとvirtual box
2. アパッチのインストール
3. MySQLのインストール
4. PHPのインストール
5. CakePHP3のインストール
6. MigrationとBake