Help us understand the problem. What is going on with this article?

VagrantにてPHP開発環境を構築した時のメモ

概要

新規開発を行うことになって、開発環境を作ってメンバーに共有する必要がありました。
その際に実施した内容のメモをQiitaに書いておこうと思います。

環境概要

  • Windows10
  • VirtualBox 6.1.12
  • Vagrant 2.2.9
  • PHP 7.4.8
  • MySQL 8.0.21

VirtualBox

https://www.virtualbox.org/wiki/Downloads
最新版をダウンロード、インストールを実施。

Vagrant

https://www.vagrantup.com/
最新版をダウンロード、インストールを実施。

Vagrantの設定

cmdを管理者権限で実行。

フォルダ移動。
cd 'vagrantfileを作りたいパス'

Boxを追加。
vagrant box add CentOS7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

Vagrantfileを作成。
vagrant init CentOS7

作成されたVagrantfileをエディタで開いて以下を設定。(設定内容詳細は割愛)

Vagrant.configure("2") do |config|
config.vm.box = "CentOS7"

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

config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end

config.vm.synced_folder ".", "/vagrant", mount_options:['dmode=777','fmode=777']
end

vagrantの起動。
vagrant up

vagrantへssh接続。
vagrant ssh

httpd

インストール
sudo yum -y install httpd

httpd起動
sudo systemctl start httpd.service

httpd自動起動をオン
sudo systemctl enable httpd.service

ファイアウォール停止
sudo systemctl stop firewalld

ファイアウォール自動起動を停止
sudo systemctl disable firewalld

status確認
sudo systemctl status httpd.service

htmlディレクトリを一旦削除
sudo rm -rf /var/www/html

vagrantフォルダをシンボリックリンクとしてhtml再作成
sudo ln -fs /vagrant /var/www/html

PHP

未インストールか確認(何も表示されなければOK)
rpm -qa | grep php

PHPインストール

sudo yum install epel-release
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum install -y --enablerepo=remi-php74 php which
sudo yum --enablerepo=remi-php74 update
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

必要な諸々インストール(上記で一緒に実施してしまっても良いですが)

sudo yum install --enablerepo=remi,remi-php74 php-pecl-zip
sudo yum install unzip -y
sudo yum install --enablerepo=remi,remi-php74 php-devel php-mbstring php-pdo php-gd php-xml php-mysqlnd

MySQL

インストール

sudo yum localinstall http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum install -y mysql-community-server

起動
sudo systemctl start mysqld

ステータス確認
systemctl status mysqld

自動起動の設定
sudo systemctl enable mysqld

rootユーザの初期パスワード確認

sudo cat /var/log/mysqld.log | grep root
→2020-08-04T01:50:30.638511Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ********

MySQLログイン
mysql -u root -p

パスワードを変更
set password for root@localhost = '任意のパスワード';

ブラウザからの確認

確認用phpファイル作成

sudo vi /var/www/html/index.php

以下をコピペ

<?php
phpinfo();

以下へアクセスしてphpinfoが表示されればOK
http://192.168.33.10/

VagrantのBoxのpackage化

cmdでVagrantfileがあるフォルダにて

vagrant package

メンバーへの共有

上記で作成されたpackage.boxを受け取る。(容量大きいと思うので、社内サーバを中継する場合など注意)

cmdにてBOXの追加
vagrant box add CentOS7 'package.boxのパス'

Vagrantfileを作成
vagrant init CentOS7

作成されたVagrantfileを編集、設定は先述のものと同様。
以上でBoxの共有完了。

その他必要に応じて

hosts変更

C:\Windows\System32\drivers\etc\hostsに追記する

example.local 192.168.33.10

ロケールの変更

参考:v1801.01 の CentOS 7 Vagrant box に日本語ロケールを追加する方法
https://qiita.com/ryo-sato/items/00dea41bf665626c9b43

SSLを設定する

参考:VagrantにopensslでSSLを利用できるように設定する。
https://kiraba.jp/post-rgi6si8y/

vagrant起動時にhttpdが起動しないことがある

Vagrantfileに以下を追記

config.vm.provision :shell, run: "always", :inline => <<-EOT
    sudo service httpd restart
EOT

MySQLの外部接続許可ユーザー追加

MySQL接続後、

create user 'root'@'%' identified  by '任意のパスワード';
grant all on *.* to 'root'@'%' with grant option;
flush privileges;

確認

select user,host from mysql.user;
shioharu_
曲を作ってます
http://shioharu.minibird.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away