ゆう’s blog

のんびり色々、アプリ、Web開発やら日常やら。

MacにVagrant+VirtualBox+CentOS7を用いたCakePHP3環境構築

MacVagrant+VirtualBox+CentOS7を用いたCakePHP3の環境構築をするためのメモです。

VirtualBoxをインストール

Vagrantには別途仮想化ソフトウェアが必要です。
そのためまずは、VirtualBoxをインストールします。
VirtualBox以外にもVMwareHyper-Vなどが使えるらしいです。
インストール方法はこちらを参照

Oracle VM VirtualBox

Vagrantをインストール

公式サイトのDownloadsからVagrantdmgを取得し、インストールします。
インストール方法はこちらを参照

Vagrant by HashiCorp

CentOS7を立ち上げる

Vagrantbox.esよりダウンロードします。
※今回はCentOS 7.2 x64 (Minimal, Puppet 4.2.3, Guest Additions 4.3.30)を選択

vagrant box add CentOS7 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box

centos7というディレクトリを作って、そこに環境をつくっていきます。
任意のディレクトリに移動してからディレクトリを作成します。
以降、基本的にこのディレクトリで操作を行います。

mkdir centos7

cd centos7/

init で初期設定を行います。
コマンドライン引数には上記で追加したCentOS7 というboxを指定します。

vagrant init CentOS7

Vagrantfileを編集します。
以下の行を見つけ、コメントアウトをはずします。
PC(ホスト側)と、仮想マシン(ゲスト側)との間でのみ、通信が行えるようになります。

config.vm.network "private_network", ip: "192.168.33.10"

仮想マシンを起動し、接続します。

#起動
vagrant up

#接続
vagrant ssh

各種インストール

Apache

sudo yum update

# apacheのインストール
sudo yum install -y httpd httpd-devel

# 起動
sudo systemctl start httpd.service

# 自動起動設定
sudo systemctl enable httpd.service

# ポート開放
sudo systemctl start firewalld
sudo firewall-cmd --permanent --zone=public --add-service=http 
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

yum update でエラーが発生した場合は、以下を実行

sudo -i
curl -L https://yum.puppetlabs.com/RPM-GPG-KEY-puppet -o /tmp/RPM-GPG-KEY-puppet
gpg --with-fingerprint "/tmp/RPM-GPG-KEY-puppet"
cp /tmp/RPM-GPG-KEY-puppet /etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs-PC1
yum update

.htaccessを有効にするために、設定ファイルを修正

sudo vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
    ~
    # AllowOverrideをAllにする
    AllowOverride All
    ~
</Directory>

また、同設定ファイルのEnableSendfileをoffに設定

EnableSendfile off

Vagrantfileに以下の行を追加

config.vm.synced_folder "./", "/vagrant", owner: 'vagrant', group: 'apache', mount_options: ['dmode=777', 'fmode=666']

vagrant再起動

vagrant reload

シンボリックリンクを貼る

プロジェクトファイルはホスト端末に配置し、好きなエディタしたい。
そのために、ドキュメントルートから共有ディレクトリへシンボリックリンクを貼る。

cd /vagrant
mkdir html

cd /var/www
sudo rm -rf html
sudo ln -s /vagrant/html ./html

PHP

デフォルトのリポジトリからのインストールの場合、php5.4がインストールされてしまいCakePHP3が動作しないのでremiリポジトリからphpをインストールする必要がある。

# epelリポジトリのインストール
sudo yum install -y epel-release

# remiリポジトリのインストール
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# 確認
ls -l /etc/yum.repos.d/

# PHPのインストール
sudo yum install -y --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-gd php-intl php-mysqlnd

# 確認
php -v

MySQL

#sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
# 最新はこっち 
# http://dev.mysql.com/downloads/repo/yum/ で確認
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

sudo yum install -y mysql-community-server

# 起動
sudo systemctl start mysqld.service

# 自動起動
sudo systemctl enable mysqld.service

初期パスワードは開発環境で使うには複雑な物が設定されているので、以下の手順で「root」に変更。

# 初期パスワードを確認
sudo cat /var/log/mysqld.log | grep 'temporary password'
> 2018-05-01T08:24:37.946827Z 1 [Note] A temporary password is generated for root@localhost: hogehoge
# hogehogeがパスワード

# 先程確認したパスワードでログイン
mysql -u root -p

mysql> SET GLOBAL validate_password_length=4; 
mysql> SET GLOBAL validate_password_policy=LOW;
mysql> set password for root@localhost=password('password');

#バージョン8はこっち
myslq> SET GLOBAL validate_password.length=4; 
mysql> SET GLOBAL validate_password.policy=LOW;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

phpmyadminをインストール

sudo yum install -y --enablerepo=remi,remi-php72 phpMyAdmin

ホストOSからアクセス出来るように、設定ファイルを編集

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

<IfModule mod_authz_core.c>
  # Apache 2.4
  # Require local # この行をコメントアウト
  Require all granted # この行を追加
</IfModule>

apache再起動

sudo systemctl restart httpd

mysql8の場合、/etc/my.cnf に以下を追記

sudo vi /etc/my.cnf

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8

mysqlを再起動して、ユーザー作成

#再起動
systemctl restart mysqld.service

#接続
mysql -u root -p

# ユーザー作成
create user user1@localhost identified with mysql_native_password by 'user1_Password';

<||

* CakePHPのインストール
** Composerのインストール

>||
curl -sS https://getcomposer.org/installer | php

# パスが通っている場所に移動
sudo mv composer.phar /usr/local/bin/composer

CakePHPプロジェクトの作成

cd /vagrant/html

# myappは任意のフォルダ名
composer create-project --prefer-dist cakephp/app myapp

MySQLの設定

config/app.phpのDatasourcesの項目にMySQLの設定を記述

 ~

    'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Mysql',
            'persistent' => false,
            'host' => 'localhost',
            'username' => 'root', # 編集
            'password' => 'root', # 編集

            ~

        ],

    ~

参考

http://www.sd-milieu.net/blog/476


以上です。