🎃

【Vagrant】CakePHPのローカル開発環境を構築する

2023/05/11に公開

Vagrantにboxを追加する

vagrant box add <任意のbox名> <インストールするboxのURL>

ここから選択

カレントディレクトリでVagrantfileを初期化

vagrant init <作成したbox名>

仮想マシンにプライベートIPアドレスを設定

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

仮想マシンにメモリを増設

Vagrantfile
config.vm.provider "virtualbox" do |vb|
  vb.memory = "2048"
end

仮想マシンを作成

vagrant up

仮想マシンにSSH接続する

vagrant ssh

既存のパッケージを最新状態にする

sudo yum -y update

Gitをインストール

sudo yum install git

リポジトリをGitHubからクローン

git clone <git@github.com:ユーザ名/リポジトリ名.git> ~/app/<ディレクトリ名>

アプリをホームディレクトリ内に追加したため、実行権限を付与

chmod 701 ~
chmod o+x ~

Windowsのhostsファイルを編集

hosts
192.168.33.10       dev.root
192.168.33.10       <ホスト名1>
192.168.33.10       <ホスト名2>

Apacheをインストール

sudo yum -y install httpd

Apache設定ファイルをバックアップ

sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak

Apache設定ファイルを編集

httpd.conf
# 名前ベースのバーチャルホストを利用する
NameVirtualHost *:80

<VirtualHost *:80>
  ServerName    dev.root
  DocumentRoot  /var/www/html
</VirtualHost>

<VirtualHost *:80>
  ServerName    <ホスト名1>
  DocumentRoot  /home/vagrant/app/<ディレクトリ名1>/webroot
</VirtualHost>

<VirtualHost *:80>
  ServerName    <ホスト名2>
  DocumentRoot  /home/vagrant/app/<ディレクトリ名2>/webroot
</VirtualHost>

<Directory "/home/vagrant/app/<ディレクトリ名1>/webroot">
  Require all granted
  AllowOverride All
</Directory>

<Directory "/home/vagrant/app/<ディレクトリ名2>/webroot">
  Require all granted
  AllowOverride All
</Directory>

Apacheの自動起動を有効化し、アクティブ化

sudo systemctl enable httpd
sudo systemctl start httpd

スナップショットを作成しておく

vagrant snapshot save <スナップショット名>

EPELリポジトリを追加

sudo yum -y install epel-release

REMIリポジトリを追加

sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

PHP関連パッケージをインストール

sudo yum -y install php72-php php72-php-cli php72-php-mbstring php72-php-mysqlnd php72-php-pdo php72-php-opcache php72-php-pecl-zip php72-php-json php72-php-xml php72-php-intl php72-php-gd

composerをインストール

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

MySQLリポジトリを追加

sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

MySQLを追加

sudo yum -y install --enablerepo=mysql57-community-dmr mysql-community-server

MySQLサーバの自動起動を有効化し、アクティブ化

sudo systemctl enable mysqld
sudo systemctl start mysqld

MySQLのバージョンを確認

mysql -V # MySQLクライアント
mysqld -V # MySQLサーバ

MySQLサーバのrootのパスワードを確認

grep password /var/log/mysqld.log

MySQLサーバにログイン

mysql -u root -p

パスワードを変更

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@1234';

ベータベースを追加

CREATE DATABASE <データベース名> CHARACTER SET utf8 COLLATE utf8_general_ci;

アプリにデータベースの設定を記述

app.php
'username' => 'root',
'password' => 'Root@1234',
'database' => 'test_db',

MySQLサーバにパスワード無しでログインできるように設定

sudo vi /etc/my.cnf
my.cnf
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
skip-grant-tables # これを追加
sudo systemctl restart mysqld # 再起動

MySQLの文字コードの設定を変更

SHOW VARIABLES like 'char%';

https://zenn.dev/novastride/articles/bb387be70f3b5f

Apacheのプロセス数を減らす

httpd.conf
# プロセス数を制限する
MaxSpareServers 2
MinSpareServers  1
ServerLimit 5
MaxClients 5
MaxRequestsPerChild 1
脚注
  1. CPUに搭載された、コンピュータの仮想化をハードウェアレベルで支援するための拡張機能 ↩︎

Discussion