MacでPHP開発環境構築

#開発環境構築
<div style="text-align: right">2019.05.09</div>

<br>

##概要

- VirtualBox
- Vagrant
- CentOS6.9
- PHP version7.1
- MySQL 5.6
- Git
- phpMyAdmin

のインストール及び初期設定、テスト環境での表示確認

<br>

##VirtualBoxのインストール

<br>

公式のインストーラーからダウンロード

<https://www.virtualbox.org/wiki/Downloads>

[参考ページ](https://pc-karuma.net/mac-virtualbox-install/)

<br>

##Vagrantのインストール

<br>

公式サイトからインストーラーをダウンロードして実行します。

<https://www.vagrantup.com/downloads.html>

インストール先のマシンのOSとビット数に応じたインストーラをダウンロードします。

<br>

- **Vagrantのバージョン確認**

<br>

バージョンが表示されていればインストールに成功しています。

    $ vagrant --version
    Vagant 2.0.1

<br>

## Vagrant | synced_forderでホストOSとゲストOSの任意のフォルダを同期する

<br>

**概要**

Vagrantでは synced_folder を利用することによって、ホスト・ゲスト間でファイルの同期が可能です。

例えば、Vagrantで仮想環境を作成したが、開発に利用する IDEやエディタは普段使い慣れたホストOSのものを利用したい

などといった場合に便利です。

<br>

**構文**

    Vagrant.configure("2") do |config|
      # other config here

      config.vm.synced_folder "host_path", "guest_path", options...
    end

<br>

**有効化されるタイミング**

vagrant up もしくは vagrant reload 時に同期が有効化されます。

<br>

##CentOSは6.9(bento)をインストール
####vagrantのboxとは？
<br>
Vagrant の「box」とは仮想マシンのテンプレート（雛形）です。
UbuntuのBox、CentOSのBoxなどの雛形をWEB上から入手できます。
<br>
<br>

####vagrantのboxを追加する
<br>
`$vagrant box add bento/centos-6.9`

    1. parallels

    2. virtualbox

    3. vmware_desktop

    Enter your choice:

2を選択してEnter

<br>

- vagrantfileを生成する

`$vagrant init bento/centos-6.7`

<br>

- 仮想サーバーを起動する

`$vagrant up`

`...Provisioners marked to run always will still run.`

が表示されていれば立ち上がっています。

<br>

- 起動しない場合
<br>

vagrantfileの

    Vagrant.configure("2") do |config|
    config.vm.box = "bento/centos-6.7"

centos-6.7になっているか確認してみる。

<br>

##PHP7.1のインストール

<br>

####インストール

vagrant環境にsshログインしている状態で、

**EPELとRemiリポジトリを追加**

    $sudo yum install epel-release
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

**古いバージョンがあれば削除**

    $sudo yum remove php-*

**PHP7.1をインストール**

    $sudo yum install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-mcrypt php-gd php-xml php-intl php-pecl-xdebug php-bcmath php-mysqlnd php-zip

**インストールが終わったらバージョンを確認**

    php --version

<br>

##MySQLのインストール

<br>

####MySQL公式Yumリポジトリの情報のインストール&設定
<br>

以下のURLから、Red Hat Enterprise Linux 6用のRPMパッケージを入手します。
mysql57～.rpmしかありませんが、5.6の情報も含まれているので大丈夫です。

<https://dev.mysql.com/downloads/repo/yum/>

<br>

    shell> wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm

<br>

**続けてインストール**

    shell> yum localinstall ./mysql57-community-release-el6-9.noarch.rpm

<br>

**以下の設定ファイルを編集して、MySQL5.7を無効、MySQL5.6を有効に変更します。**

    shell> vi /etc/yum.repos.d/mysql-community.repo

<br>

**編集内容**

    [mysql56-community]
    enabled=0　⇒ enabled=1

    [mysql57-community]
    enabled=1 ⇒　enabled=0`


enabled=0 を指定してサブリポジトリを無効、enabled=1 を指定してサブリポジトリを有効にする。
複数のリリースシリーズのサブリポジトリが有効になっている場合は、Yum はもっとも新しいシリーズを使用する。

<br>

####MySQLのインストール

<br>

Yumコマンドでインストールします。

`shell> yum install mysql-community-server`


    以下のパッケージがインストールまたは置換されました。

    インストール:
      mysql-community-libs.x86_64 0:5.6.35-2.el6
      mysql-community-libs-compat.x86_64 0:5.6.35-2.el6
      mysql-community-server.x86_64 0:5.6.35-2.el6

    依存性関連をインストールしました:
      mysql-community-client.x86_64 0:5.6.35-2.el6
      mysql-community-common.x86_64 0:5.6.35-2.el6
      numactl.x86_64 0:2.0.9-2.el6
      perl.x86_64 4:5.10.1-141.el6_7.1
      perl-DBI.x86_64 0:1.609-4.el6
      perl-Module-Pluggable.x86_64 1:3.90-141.el6_7.1
      perl-Pod-Escapes.x86_64 1:1.04-141.el6_7.1
      perl-Pod-Simple.x86_64 1:3.13-141.el6_7.1
      perl-libs.x86_64 4:5.10.1-141.el6_7.1
      perl-version.x86_64 3:0.77-141.el6_7.1

    置換:
      mysql-libs.x86_64 0:5.1.73-7.el6


これにより、MySQL Server (mysql-community-server)、クライアントのパッケージ (mysql-community-client)、クライアントとサーバー用の一般的なエラーメッセージと文字セット (mysql-community-common)、および共有クライアントライブラリ (mysql-community-libs) など、サーバーを実行するために必要なコンポーネントのパッケージがインストールされます。

<br>

####MySQLの起動と停止

<br>

**MySQL Serverの起動**

 `shell> sudo service mysqld start`

<br>

**MySQL Serverのステータスをチェック**

`shell> sudo service mysqld status`

<br>

**MySQL Serverの停止**

`shell> sudo service mysqld stop`

<br>


####MySQLの初期設定

`$ mysql_secure_installation`

    Enter current password for root (enter for none): <-rootパスワードが設定されていないので、そのままEnter

    Set root password? [Y/n] Y <-rootパスワードを設定するのでY

    New password:     <- パスワードを設定
    Re-enter new password:  <- パスワードを再入力

    Remove anonymous users? [Y/n] Y <- 誰でもログインできる状態になっているのでそれをRemoveするのでY

    Disallow root login remotely? [Y/n] Y <- RootでMySQLにリモートログインできるのはセキュリティ的にNGなのでY

    Remove test database and access to it? [Y/n] Y <- testデータベースは不要なのでY

    Reload privilege tables now? [Y/n] Y <- 上記設定により権限の変更等を即時反映したいのでY

<br>

####MySQLでの「Access denied for user 'root'@'localhost' (using password: NO)」の対処法

rootユーザーの権限設定がされていなく、上記のようなエラーが発生することがある。

<br>

#####1.MySQLの停止

MySQLが稼働していたら一旦停止します。

`$ service mysqld stop`

<br>

#####2.オプション付きで起動

このオプションはMySQLの権限システムを使用しないで起動するものです。

`$ mysqld_safe --skip-grant-tables &`

<br>

#####3.MySQLコマンドプロンプトに入る

`mysql -u root`

<br>

#####4.rootへの権限設定

    mysql> truncate table user; <- ユーザーテーブルの全件削除

    mysql> flush privileges; <- 権限の反映

    mysql> grant all privileges on *.* to root@localhost identified by '' with grant option;
    <- パスワードを設定しないで権限を付与する

実行結果を確認する

    mysql> select host, user from user;
    +-----------+------+
    | host      | user |
    +-----------+------+
    | localhost | root |
    +-----------+------+
    1 row in set (0.00 sec)


#####5.MySQLの再起動

これでrootユーザーへの権限設定ができたので、MySQLを–skip-grant-tablesオプションなしで再起動(通常起動)します。

`mysql> quit;`
`$ service mysqld start`

<br>

#####6.エラー解消の確認

最後にエラーが解消されていることを確認します。

`mysql -u root`
`mysql>`

<br>

## Gitのインストール

<br>

- centOS6の場合

`$sudo yum install http://opensource.wandisco.com/centos/6/git/x86_64/wandisco-git-release-6-1.noarch.rpm`

`$sudo yum install git`

Complete!

<br>

**インストールしたgitのバージョンになってるか確認**

`$ git --version`

<br>

## phpMyAdmin

<br>

`$sudo yum --enablerepo=remi-php71 --enablerepo=remi install phpMyAdmin`

インストールしたphpMyAdminにはアクセス制限がかかっているので、あなたのIPアドレスをアクセス許可する必要があります。

`sudo vi /etc/httpd/conf.d/phpMyAdmin.conf`

すると、次のような記述があるので、「i」を押してインサートモードにして、

    <IfModule mod_authz_core.c>
    # Apache 2.4
    <RequireAny>
    Require ip 127.0.0.1
    Require ip ::1
    </RequireAny>
    </IfModule>

の部分に

    <IfModule mod_authz_core.c>
    # Apache 2.4
    <RequireAny>
    Require ip ***.***.***.***
    Require ip ::1
    </RequireAny>
    </IfModule>

「***.」の部分に自分のIPアドレスを追記する。
追記後は、escキーを押して、「:wq」で保存して終了。


最後に、Apacheを再起動します。

`$ sudo service httpd restart`

<br>