Windows10＋Virtual Box＋CentOS7で環境構築(Laravel+MySQL) 

※自分用メモ

■Windows10＋Virtual Box＋CentOS7環境構築
下記はすべてrootで実行しています


	・VirtualBoxにCentOSのインストール
		※参考URL：
			GUI：http://www.enrise-corp.co.jp/2185
			CUI：http://qiita.com/100/items/80a899fbaeb1e82b3f67

		・アカウント
			root
				パス：root

			develop
				パス：develop

	・CentOSインストール後の設定

		・selinux無効化
			vi /etc/selinux/config
			SELINUX=disabled

		・ネットワーク設定
			su
			vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
				下記に変更しただけでOKだったが要調査
				ONBOOT=yes

			systemctl stop NetworkManager
			systemctl disable NetworkManager.service
			/etc/init.d/network restart

		・パッケージ最新化
			su
			yum update
			yum install kernel-devel gcc
			reboot

		・sudoユーザーを追加
			su
			visudo
				%wheel	ALL=(ALL)	ALLの行のコメントを外して保存
			usermod -G wheel develop
			exit
				developユーザーへ切り替え
			whoami
				ログインしているアカウント確認
			sudo pwd
				sudoが使用できるか確認

	・その他、インストール
		yum install -y git vim

	・リポジトリのインストール
		su
		yum install epel-release.noarch
		yum install epel-release
		rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
		vim /etc/yum.repos.d/epel.repo
		[epel]の中身をenable=1をenable=0に変更

	・phpのインストール(7.1.Xの最新)
		※参考URL：https://centosinstall.com/centos/centos7/php7

		su
		yum install --enablerepo=remi,remi-php71 php php-devel php-cli php-common php-fpm php-mbstring php-pdo php-gd php-mysqlnd php-intl php-fpm php-xml php-pear php-igbinary php-pecl-apcu php-soap php-xmlrpc
		php -v

		・php.iniの設定
			default_charset = "UTF-8"
			display_errors = On
			date.timezone = "Asia/Tokyo"
			mbstring.language = Japanese
			mbstring.internal_encoding = UTF-8
			mbstring.http_input = UTF-8
			mbstring.http_output = pass
			mbstring.encoding_translation = Off
			mbstring.detect_order = UTF-8
			mbstring.substitute_character = none

	・Apacheインストール
		su
		yum install httpd
		下記いずれかで起動
		service httpd start
		apachectl start

	・Apacheのhttpd.confの設定
		su
		/etc/httpd/conf/httpd.conf内の一番下に下記を追加
		#php
		<IfModule prefork.c>
			LoadModule php7_module modules/libphp7.so
		</IfModule>

		Laravelでは.htaccessを利用するための設定が必要
		<Directory "/var/www/html">
			Options +FollowSymLinks
			RewriteEngine On

			RewriteCond %{REQUEST_FILENAME} !-d
			RewriteCond %{REQUEST_FILENAME} !-f
			RewriteRule ^ index.php [L]

			Require all granted
			AllowOverride All
		</Directory>

	・apacheのDocumentRootを変更
		※デフォルトの"/var/www/html"から"/var/www/[project-name]/public"に変更
		DocumentRoot "/var/www/[project-name]/public"
		<Directory "/var/www/[project-name]/public">
		・・・・・・省略・・・・・・・・
		</Directory>

		設定後、再起動

	・Apacheの自動起動設定
		su
		chkconfig httpd on
		systemctl is-enabled httpd

	・composer経由でインストールするためcomposerをインストール
		su
		curl -sS https://getcomposer.org/installer | sudo php
		パスが通っている場所にリネーム
		mv composer.phar /usr/local/bin/composer

	・laravelのインストール
		su
		※-prefer-dist: リリース版、安定版をダウンロードします。
		composer create-project laravel/laravel --prefer-dist project1

		※最初に権限をフルアクセス
		chown -R apache:apache [project-name]
		chmod -R 777 [project-name]

	・デバッガーのインストール
		※参考URL：http://qiita.com/LowSE01/items/d0333fc30e433e68acfd
		su
		composer require phpunit/phpunit --prefer-dist
		composer require barryvdh/laravel-debugbar

	・メールのドライバーのインストール
		composer require guzzlehttp/guzzle

	・Redisのインストール
		※参考URL
			http://qiita.com/esu_eichi/items/e3abe72f55b53865acf5
			https://e-algorithm.xyz/redis/#jump90
			http://qiita.com/Syo_pr/items/4994f71e8c9152ceee0d
			http://qiita.com/laviee/items/906da834db20c946f9be
			https://namaikinamaiki.wordpress.com/2015/11/18/laravelmysqlredis%E3%81%AB%E3%81%A6%E3%83%A6%E3%83%BC%E3%82%B6%E8%AA%8D%E8%A8%BC%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E8%A6%8B%E3%82%8B/
			https://readouble.com/laravel/5.4/ja/redis.html

		下記でインストール
		su
		yum --enablerepo=epel -y install redis

		sudo systemctl start redis.service
		sudo systemctl enable redis.service

		通信確認
		redis-cli ping
		PONG ←成功

		firewallの許可追加
		firewall-cmd --permanent --add-port=6379/tcp

		firewall確認
		firewall-cmd --reload

		firewallの設定確認
		firewall-cmd --list-all

		LaravelのセッションストアをRedisに設定
		vi .env
		SESSION_DRIVER=redis

		vi config/session.php
		'driver' => env('SESSION_DRIVER', 'redis'),

		composer require predis/predis --prefer-dist

	・phpredisのインストール
		※下記だけだとインストールできないかも
		※igbinary.so、redis.soとigbinary.soの読み込み設定は/etc/php.d/配下に
		ファイルを作成しigbinary.so、redis.soの順番で読み込めるようなファイル名にする(先頭のファイル名でソート)
		su
		yum install php71-php-pecl-redis.x86_64
		yum install php71-php-pecl-igbinary-devel.x86_64
		yum install --enablerepo=remi-php71 php-igbinary

	・MySQL5.7のインストール
		※参考URL：http://qiita.com/yoshikyoto/items/957642f595adb873bb2b

		CentOS 7 にはmariaDBがデフォルトが入っていることがあり、
		MySQLと競合を起こすことがあるので削除したほうがいいとのこと。
		su
		yum remove mariadb-libs
		rm -rf /var/lib/mysql/

		要求: libsasl2.so.2()(64bit)と表示されるので下記をインストール
		yum localinstall ftp://195.220.108.108/linux/mageia/distrib/3/x86_64/media/core/updates/lib64sasl2-2.1.25-12.1.mga3.x86_64.rpm

		yum localinstall http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm

		※インストールできないので下記を実行
		※参考URL：https://adan.jp.net/blog/program/1235
		yum-config-manager --disable mysql56-community
		yum-config-manager --enable mysql57-community-dmr

		yum -y install mysql-community-server
		mysql --version

	・MySQLの初期化
		su
		mysqld --user=mysql --initialize

	・MySQLの自動起動
		su
		systemctl enable mysqld.service

	・MySQLの起動・終了確認
		su
		systemctl start mysqld.service
		systemctl stop mysqld.service
		systemctl restart mysqld.service

	・MySQLの初期rootパスワードについて
		初回起動時にrootの初期パスワードが自動設定される。
		ログに出力されるので確認する。
		su
		cat /var/log/mysqld.log | grep "temporary password"

		rootユーザのパスワードを再設定
		※参考URL：http://qiita.com/ksugawara61/items/d8d69b7d57a3afcef980

	・MySQLのrootパスワード変更
		su
		mysql -uroot -p
		set password for root@localhost=password('root');

	・ApacheのVirtualHost設定でエラーが出る場合
		※参考URL
			http://momoiro-tj.hateblo.jp/entry/2016/01/12/221657
			http://qiita.com/hiropopjp/items/e3ad1c82028082916a5e

		chcon -R -t httpd_sys_rw_content_t laravelのパス/storage
		chcon -R -t httpd_sys_rw_content_t laravelのパス/bootstrap/cache

	・RedisのPermission deniedでエラーが出る場合
		※参考URL
			http://yut.hatenablog.com/entry/20131206/1386285876
			http://qiita.com/snaka/items/9db959d9494ebda30a98

		sudo /usr/sbin/setsebool httpd_can_network_connect=1

		SELinuxが有効化されているとhttpdのCGI経由でのネットワークアクセスが制限され、
		結果としてWebSVNのようなスクリプトが正常に動作しないらしい。

		現在の設定を確認
		$ sudo getsebool httpd_can_network_connect
		httpd_can_network_connect --> off

		ONにする
		$ sudo setsebool httpd_can_network_connect 1

		設定を再度確認
		$ sudo getsebool httpd_can_network_connect
		httpd_can_network_connect --> on