Windows10＋Virtual Box＋CentOS7で環境構築(Laravel+MySQL) パート２

※自分用メモ

■開発環境
下記の開発環境を自分のWindows10上に構築します

Windows10 Pro 64bit
Virtual Box 5.1.24 r117012 (Qt5.6.2)
CentOS Linux release 7.3.1611 (Core)
Subversion 1.7.14

mysql  Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using  EditLine wrapper
PHP 7.1.8 (cli) (built: Aug  2 2017 12:13:05) ( NTS )
Laravel Framework 5.4.32

NetBeans 8.2


■Virtual BoxにCentoOSインストール
	※参考URL：
		GUI：http://www.enrise-corp.co.jp/2185
		CUI：http://qiita.com/100/items/80a899fbaeb1e82b3f67

	・VirtualBoxのインストール
		下記URLから自分の環境に合ったWindows用のVirtualBoxをDLしてインストール
		http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp

	・CentOSのダウンロード
		下記にアクセスしDVD ISOをクリックしてCentOSをDL
		https://www.centos.org/download/

	・VirtualBoxマネージャー上の新規タブをクリック
	・名前とオペレーティングシステム
		名前：CentOS7
		タイプ：Linux
		バージョン：Red Hat(64-bit)
	・メモリーサイズ
		1024MB
	・ハードディスク
		仮想ハードディスクを作成するにチェック
	・ハードディスクのファイルタイプ
		VDIにチェック
	・物理ハードディスクにあるストレージ
		固定サイズにチェック
	・ファイルの場所とサイズ
		20GB

	・VirtualBoxマネージャーから先ほど作成した仮想OSを選択し起動
	・起動ハードディスクを選択から先ほどDLしたCentOSイメージを選択
	・Install CentOS Linux7を選択してEnter
	・言語選択：日本語を選択して続行ボタンを押す
	・ソフトウェアの選択
		左側のベース環境のGNOME Desktopを選択してから
		右側の選択した環境のアドオンのGNOMEアプリケーションを選択して完了ボタンを押す
	・インストールの概要
			ネットワークとホスト名をクリックして下記を設定後、完了ボタンを押す
				イーサネットをオン
				ホスト名：localhost(なんでも)を入力して適用ボタンを押して完了ボタンを押す
	・インストール先
		パーテーション構成
			パーテーションを自動構成するにチェックして完了ボタンを押す
	・インストール開始
		rootパスワードの設定をしたら完了ボタンを押す
		ユーザーの作成
			ユーザー名：develop
			パスワード：develop
	・インストール後、再起動ボタンを押す
		ライセンス契約に同意する
		ログイン
		すべて日本語のデフォルトで次へ進めていく
		オンラインアカウントはスキップ

	・VirtualBoxのデバイスタブ→Guest Additions CDイメージの挿入をクリック→画面が開くので実行するボタンを押す
	・VirtualBoxのファイルタブ→閉じるをクリック→画面が開くので仮想マシンの電源オフにチェックを入れOKボタンを押す
	・VirtualBoxマネージャーの設定タブ→一般→高度を選択→下記を設定しOKボタンを押す
		クリップボードの共有：双方向
		ドラッグ&ドロップ：双方向
	・VirtualBoxを起動→ログイン
	・端末(Terminal)を起動→端末タブ→設定→ショートカット→お好みで設定

	・VirtualBoxマネージャーの設定→ネットワーク
		アダプター1→割り当て→NAT
		アダプター2→割り当て→ホストオンリーアダプター


※下記はすべてrootで実行しています

	・端末(terminal)を起動
	・suでrootになる
	・selinux無効化
		vi /etc/selinux/config
		SELINUX=disabled
	・ネットワーク設定(CentOSインストール時にネットワークの設定をしていればOK)
		vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
			下記に変更しただけでOKだったが要調査
			ONBOOT=yes

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

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

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

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

	・vi、vimの設定
		vi /root/.vimrc
			set number
			set tabstop=4
		保存して終了
		source /root/.vimrc

	・リポジトリのインストール
		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

		yum install -y --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

	・vi /etc/php.ini
		default_charset = "UTF-8"
		display_errors = On
		date.timezone = "Asia/Tokyo"
		mbstring.language = Japanesevim /e	
		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インストール
		yum install httpd
		下記いずれかで起動
		service httpd start
		apachectl start

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

		<VirtualHost *:80>
			ServerName www.dev-php01.com
			DocumentRoot /data/www/dev_test/public
			Options FollowSymlinks
			<Directory "/data/www/dev_test/public">
				Options FollowSymLinks
				AllowOverride All
				Require all granted
			</Directory>
		</VirtualHost>

		設定後、再起動

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

	・WindowsPCのhosts設定
		仮想マシンのIPアドレスとVirtualHostのServerNameを設定
		192.168.56.102	local-test1.com

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

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

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

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

	・環境設定
		cd プロジェクト名

		下記は.envがあればしなくてもいい
		cp .env.example .env

		.env 内の APP_KEY にアプリケーション固有のランダムストリングが設定
		ユーザーのセッション情報やパスワードの暗号化等をセキュアにする為に必要
		php artisan key:generate

		.env内の設定
			環境に合わせて設定
			DB_CONNECTION=mysql
			DB_HOST=127.0.0.1
			DB_PORT=3306
			DB_DATABASE=laravel_db
			DB_USERNAME=laraveluser
			DB_PASSWORD=laravel5963

		config/app.php内の設定
			'timezone' => 'Asia/Tokyo',
			'locale' => 'ja',

		config/database.php内の設定
			※第一引数に.envで設定した値が使用され、なければ第二引数が使用される

			環境に合わせて設定
			'host' => env('DB_HOST', '127.0.0.1'),
			'port' => env('DB_PORT', '3306'),
			'database' => env('DB_DATABASE', 'forge'),
			'username' => env('DB_USERNAME', 'forge'),
			'password' => env('DB_PASSWORD', ''),
			'unix_socket' => env('DB_SOCKET', ''),
			'charset' => 'utf8',
			'collation' => 'utf8_general_ci',

		権限の設定
			strageとbootstrap/cacheディレクトリにread, write 権限が必要
			chown -R ユーザー名:グループ名 storage
			chown ユーザー名:グループ名 bootstrap/cache

			例：
			chown -R apache:apache [project-name]
			chmod -R 777 [project-name]


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

		CentOS 7 にはmariaDBがデフォルトが入っていることがあり、
		MySQLと競合を起こすことがあるので削除したほうがいいとのこと。
		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の初期化
		mysqld --user=mysql --initialize

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

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

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

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

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

	・MySQLのDB作成
		rootでmysqlにログインしてDBを作成
		create database laravel_db default character set utf8;

		データベースへの全てのアクセス権限を持った、新規ユーザーlaraveluserを登録
		grant all privileges on laravel_db.* to laraveluser@localhost identified by 'laravel5963';

	・DB接続確認
		cd 作成したlaravelプロジェクトのフォルダ
		php artisan migrate

	・firewallの許可追加
		firewall-cmd --permanent --add-port=80/tcp
		firewall-cmd --permanent --add-port=22/tcp
		firewall-cmd --permanent --add-port=8000/tcp

		firewall確認
		firewall-cmd --reload

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

■動作確認
	service httpd start

	Windowsのhosts設定
		IPアドレスはifconfigコマンドでenp0s8の部分
		local-test2.comはhttpd.confで設定したVirtualHost
		192.168.56.103	local-test2.com

	ブラウザのアドレスバーにlocal-test2.comを入力しlaravelのページが表示されればOK

■SVNの設定
※参考URL
http://qiita.com/SierSetup/items/c47b861dc563919c94ac
http://linuxserver.jp/vcs/subversion/svn%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
https://www.server-world.info/query?os=CentOS_7&p=subversion

	subversionインストール
	yum install -y subversion
	svn --version --quiet

	vi /etc/sysconfig/svnserve
		※Apacheで動かす場合は下記の設定は必要ない
		修正前
		OPTIONS="-r /var/svn/"
		修正後
		OPTIONS="-r /data/svn/"

	vi /data/svn/conf/svnserve.conf
		※Apacheで動かす場合は下記の設定は必要ない
		修正前
		# anon-access = read
		修正後
		anon-access = write

	yum install -y mod_dav_svn

	vi /etc/httpd/conf.d/subversion.conf
	<Location /data/svn>
		DAV svn
		SVNPath /data/svn
	</Location>

	firewall-cmd --list-all
	firewall-cmd --permanent --add-port=3690/tcp
	firewall-cmd --reload
	firewall-cmd --list-all
	systemctl enable svnserve.service
	systemctl start svnserve.service
	systemctl status svnserve.service

	リポジトリ作成
	mkdir /data/svn/
	svnadmin create /data/svn/

	管理用ディレクトリ作成
	svn mkdir --parents file:///data/svn/project1/trunk -m 'create'
	svn mkdir --parents file:///data/svn/project1/tags -m 'create'
	svn mkdir --parents file:///data/svn/project1/branches -m 'create'

	既存のファイルのインポート
		元ファイル保存場所：/var/www/project/project1
		インポート先：/data/svn/project1/trunk
		svn import /var/www/project/project1 file:///data/svn/project1/trunk -m 'import'

	chown -R apache:apache /data/svn
	serice httpd restart

	動作確認
	サーバーIP：192.168.56.103
	http://192.168.56.103/svn/

	あとはローカルの作業ディレクトリにチェックアウト


■NetBeansの設定

	プロジェクトの作成
		→ファイル
		→新規プロジェクト
		→カテゴリのPHPを選択
		→プロジェクトの既存のソースを使用するアプリケーションを選択して次へ
		→ソース・フォルダの参照から管理したいフォルダを選択
		→プロジェクト名を入力
		→PHPのバージョンをPHP7.0に選択して次へ
		→実行方法をリモートWebサイト(FTP、SFTP)を選択
		→プロジェクトURLを入力
		→リモート接続・アップロードディレクトリ・ファイルのアップロードを設定して終了ボタンを押す
		→左側にプロジェクトが表示されたらプロジェクト名をマウスで右クリック
		→構成を設定→カスタマイズを選択
		→左側のソースを選択→ソース・フォルダをサーバー側のWebルートと合わせる(例：ローカルはtrunk、サーバー側は/data/www/プロジェクト名)
		→ファイルの保存時を保存時に設定

	SVNの設定
		→ツール→オプション→チームを選択
		→優先クライアント→SvnKit
		→接続設定の管理
			リポジトリURLの設定
			ユーザーとパスワードの設定
		→左側のプロジェクト名をマウスで右クリック→Subversionを選択
		→コミットを選択→コミットしたいフォルダ・ファイルを選択してコミットボタンを押して登録