開発環境構築手順書 php7.1
想定する環境
* ローカル開発環境は Windows
* 本番サーバは Amazon Linux であるが、ひとまず Vagrant VMサーバは Centos 7系 とする
ミドルウェア構成
* httpd 2.4
* php 7.1
* mysql 5.7
前提としてインストールする開発アプリケーション
インストール
* Virtualbox
** https://www.virtualbox.org/wiki/Downloads
* Vagrant
** https://www.vagrantup.com/downloads.html
*** コマンドプロンプトにて
$ vagrant -v
Vagrant 1.9.3
* Git for Windows(コマンドプロンプトでgitコマンドを使えるようになる)
** https://git-for-windows.github.io/
Windows上のコマンドプロンプトから操作
* Vagrant で起動させる Vagrant box(今回はCentos7.2を選択)
** http://www.vagrantbox.es/ にたくさんアップされているので、今回は
*** https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box をダウンロード
Vagrant VMインストール
* ここからしばらく Git Bash を使って作業する
** [スタート]->[すべてのプログラム]->[Git]->[Git Bash]
# 任意の場所にディレクトリを作成する
$ mkdir vagrants
$ cd vagrants
$ mkdir xxxxx
$ cd xxxxx
** *注意*
*** 「任意の場所」->Windows上の任意の場所
# BOX追加
$ vagrant box add --insecure centos72 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box
# 初期化
$ vagrant init centos72
# ローカルでの自動ホスト名書き換えのためのプラグインをインストール
$ vagrant plugin install vagrant-hostsupdater
# 設定ファイルを適宜修正
$ cd /【任意のパス】/vagrants/xxxxx
$ vi Vagrantfile
# teraterm等からVMにアクセスしたいのでネットワーク項目のコメントアウトを外す
(※IPアドレスは各自適当に読み替えて下さい)
# config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "private_network", ip: "192.168.33.10"
# ローカルでのホスト名を追記(これを書いておくと勝手にvagrant-hostsupdaterがC:\windows\system32\drivers\etc\hostsファイルを書き換えてくれる)
config.vm.hostname = "xxxxx.dev"
config.hostsupdater.aliases = ["xxxxx-phpmyadmin.dev","xxxxx-phpredisadmin.dev"]
# VM起動
$ vagrant up
** 起動しない場合
### [コントロール パネル]->[ネットワークとインターネット]->[ネットワーク接続]->[VirtualBox Host-Only Network]
### [VirtualBox Host-Only Network]ダブルクリック->[詳細]->[IPv4アドレス]
### [IPv4アドレス]が「192.168.33.xx」以外の場合、「vi Vagrantfile」で該当箇所を変更
死活確認
$ vagrant status
$ vagrant halt
# Teratermなどで vagrant VM にログインできることを確認
HOST: xxxxx.dev
ID: vagrant
PW: vagrant
** BOX追加
$ vagrant box add --insecure 持ってきたbox名_YYYYmmdd_HHii /【boxを配布したパス】/持ってきたbox名.box
*** 持ってきたbox名_YYYYmmdd_HHii
**** 変更したほうが無難
** 下記を削除または、リネーム
$ cd /【任意のパス】/vagrants/xxxxx
*** Vagrantfile
# 初期化
$ vagrant init 持ってきたbox名_YYYYmmdd_HHii
# 「ローカルでの自動ホスト名書き換えのためのプラグインをインストール」以降は同様の操作で起動できる(はず)
# おまけ
** VMそのものはこの辺にいる
C:\Users\【username】\.vagrant.d\boxes\
CentOS 初期設定
ココからLinux内での作業
* 時刻設定
$ date
Fri 13 Jan 05:39:45 GMT 2017
$ sudo timedatectl set-timezone Asia/Tokyo
$ date
Fri 13 Jan 14:39:54 JST 2017
* 開発に必要なものをインストール(他、各自必要なものを適宜)
$ sudo yum remove puppet* # ←yum update 中にこいつのせいでコケるのでアンインストールしてしまう
$ sudo yum update
$ sudo yum install git subversion libyaml-devel
* "locateコマンドのインストール":http://centos.bungu-do.jp/archives/64
$ sudo yum install mlocate
$ locate main.cf
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
$ sudo updatedb
* ファイル内文字列高速検索コマンド
$ sudo yum groupinstall "Development Tools"
$ cd ~/
$ git clone https://github.com/tkengo/highway.git
$ cd highway
$ ./tools/build.sh
hwコマンドを/usr/bin/に配置
$ sudo mv hw /usr/bin/
場所確認
$ which hw
/usr/bin/hw
php7.1 および httpd のインストール
* remiリポジトリの追加
remiリポジトリの公開鍵を取り込む
$ sudo rpm --import https://rpms.remirepo.net/RPM-GPG-KEY-remi
yum-config-manager コマンドのインストールと remiリポジトリの追加
$ sudo yum install yum-utils https://rpms.remirepo.net/enterprise/remi-release-7.rpm
remi-php56 リポジトリを有効化
$ sudo yum-config-manager --enable remi-php56
* php をインストール(必要そうなライブラリも)
$ sudo yum install --enablerepo=remi,remi-php56 php php-mysql php-intl php-mbstring php-xml php-pear php-pecl-yaml phpMyAdmin redis
* httpdを再起動する
$ service httpd status
$ sudo service httpd start
* バージョン確認
$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 14 2016 18:04:44
$ php -v
* ブラウザで Vagrant VM にアクセスしてみる
** http://xxxxx.dev
*** ⇒ Apacheのデフォルト画面が表示されること
* httpdの自動起動を設定
$ sudo systemctl enable httpd.service
mysql のインストール
# CentOS に mysqlと競合するmariadb関連のライブラリが既に入っているのでアンインストール
$ sudo yum remove mariadb*
mysqlディレクトリの存在確認
$ sudo ls -la /var/lib/mysql/
もしあれば
$ sudo rm -rf /var/lib/mysql/
# yumコマンドでインストール(5.7は5.6より3倍速い)
## リポジトリを追加
$ sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
## インストール
$ sudo yum install mysql-community-server
* バージョン確認
$ mysqld --version
* ステータス確認
$ systemctl status mysqld.service
* 起動
$ sudo systemctl start mysqld.service
* 停止する場合
$ sudo systemctl stop mysqld.service
* 自動起動設定
$ sudo systemctl enable mysqld.service
** 再度teratermでログインしhttpdとmysqldが起動していることを確認する。
* rootユーザでログインできるか確認。初期パスワードはインストールログから拾います。
** "MySQL5.7.6以降での初期パスワード確認方法":http://www.hack-log.net/entry/2015/10/26/100000
mysql起動後にログを確認
$ cat /var/log/mysqld.log | grep 'password is generated'
2015-10-25T08:42:09.501502Z 1 [Note] A temporary password is generated for root@localhost: ************
* rootユーザでログイン
$ mysql -uroot -p
Enter password: ************
* MySQLmysql 5.7のセキュリティ設定
$ mysql_secure_installation
Enter password for user root:
New password: rootの新パスワード 657$hD489Fjk6 # ←本番DBでは作り直して下さい。
Re-enter new password:
・匿名ユーザーアカウントを削除 Y
・ローカルホスト以外からアクセス可能な root アカウントを削除 Y
・test データベースの削除 Y
・即反映するか Y
* ログイン確認
$ mysql -uroot -p
Enter password: 新パスワード
⇒ログインできること
* ログインしたらデータベース作成する。utf8で。
mysql> CREATE DATABASE xxxxxdb DEFAULT CHARACTER SET utf8;
ユーザー作成します。mysql5.7だとパスワード複雑化する必要あり
mysql> CREATE USER xxxxxdbuser IDENTIFIED BY 'xxxxxDbPass1!'; # 英数記号入り
作成したxxxxxdbuserにxxxxxdbに対しての全権限付与
mysql> GRANT all ON xxxxxdb.* TO xxxxxdbuser;
mysql> exit
* データをリストアする
$ zcat /home/vagrant/xxxxxdb__20170407.sql.gz | mysql -uroot -p xxxxxdb --default-character-set=binary
Enter password:
* 追加でもう1テーブルのスキーマを投入
$ cat /home/vagrant/xxxxxdb__s_random__20170407.sql | mysql -uroot -p xxxxxdb
Enter password:
* 再度ログインテスト
$ mysql -uroot -p xxxxxdb
Enter password:
* yum
$ sudo yum -y install git
* version
$ git --version
xxxxx が動作するまで
vhosts.confを用意
* コマンド
$ sudo vi /etc/httpd/conf.d/vhosts.conf
* 内容
** フロントエンド
# xxxxx.dev
ServerName xxxxx.dev
DocumentRoot /var/www/xxxxx.dev/running/htdocs/
CustomLog "| /usr/sbin/rotatelogs /var/log/httpd/xxxxx.dev/access_log.%Y%m%d 86400 540" combined_DvIOX
ErrorLog "| /usr/sbin/rotatelogs /var/log/httpd/xxxxx.dev/error_log.%Y%m%d 86400 540"
** phpMyAdmin
# xxxxx-phpmyadmin.dev
ServerName xxxxx-phpmyadmin.dev
DocumentRoot /usr/share/phpMyAdmin/
CustomLog "| /usr/sbin/rotatelogs /var/log/httpd/xxxxx-phpmyadmin.dev/access_log.%Y%m%d 86400 540" combined_DvIOX
ErrorLog "| /usr/sbin/rotatelogs /var/log/httpd/xxxxx-phpmyadmin.dev/error_log.%Y%m%d 86400 540"
** phpRedisAdmin
# xxxxx-phpredisadmin.dev
ServerName xxxxx-phpredisadmin.dev
DocumentRoot /var/www/phpRedisAdmin/
CustomLog "| /usr/sbin/rotatelogs /var/log/httpd/xxxxx-phpredisadmin.dev/access_log.%Y%m%d 86400 540" combined_DvIOX
ErrorLog "| /usr/sbin/rotatelogs /var/log/httpd/xxxxx-phpredisadmin.dev/error_log.%Y%m%d 86400 540"
httpd.confを用意(vagrantローカルのみ)
* httpd.conf再起動
$ sudo vi /etc/httpd/conf/httpd.conf
#User apache
#Group apache
User vagrant
Group vagrant
* confを書き換えたらhttpd再起動
$ sudo systemctl restart httpd.service
* /var/lib/php/session/ のオーナ権限を修正
$ sudo chgrp vagrant /var/lib/php/session/
$ sudo chown vagrant:vagrant /var/lib/php/session/*
Redisの起動およびphpRedisAdminの導入
* 上記手順中にyum installで既にインストール済みなので
$ cd ~
$ git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git
$ cd phpRedisAdmin
$ git clone https://github.com/nrk/predis.git vendor
$ cp includes/config.sample.inc.php includes/config.inc.php
$ cd ~
$ sudo chown -R apache: ~/phpRedisAdmin
$ sudo mv ~/phpRedisAdmin /var/www
ステータス確認
$ systemctl status redis.service
起動
$ sudo systemctl start redis.service
停止の場合
$ sudo systemctl stop redis.service
自動起動設定
$ sudo systemctl enable redis.service
バージョン確認
$ redis-server -v
Redis server v=3.2.8 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=dd923e72e9efa6d8
バージョン確認
$ redis-cli -v
redis-cli 3.2.8
* ブラウザで確認する場合
** http://xxxxx-phpredisadmin.dev/