VirtualBoxで仮想環境構築（CentOS7/Apache2.4/PHP5.6/MySQL5.7/phpMyAdmin/RLogin)

﻿VirtualBoxで仮想環境を構築します。

  今回作成する環境は
  ・CentOS7
・Apache2.4
  ・PHP5.6
  ・Mysql5.7
  ・phpMyAdmin
  ・RLogin
  です。

##１.Virtual Box上にCentOSをインストールする方法
###１．CentOSのダウンロード
Download CentOS の「DVD ISO」をクリック。
適当なURLを選んで CentOS のISOイメージをダウンロード。

###２．VirtualBoxのインストール
Downloads – Oracle VM VirtualBox から、Windows版 VirtualBox の最新版をダウンロードし、VirtualBoxをインストールする。
##３．仮想マシンの作成
VirtualBox (Oracle VM VirtualBox マネージャー) を起動し、左上の 新規 をクリックすると、「仮想マシンの作成」ダイアログが開く。
	　
・名前とオペレーティングシステム
　任意の 名前 を入力し、タイプ は Linux 、 バージョン は Red Hat (64bit) を選択して「次へ」を押す。
####・メモリーサイズ
メモリ (RAM) は最低でも512MiB必要。今回は1024MBにする。
####・ハードドライブ
仮想ハードドライブを作成する を選択して「作成」すると、「仮想ハー
ドライブの作成」ダイアログが開く。
ハードドライブのファイルタイプ は、VDI (VirtualBox Disk Image) を選択したまま「次へ」を押す。

物理ハードドライブにあるストレージ は、固定サイズ を選択して「次へ」を押す。
    
ファイルの場所とサイズ では、CentOSをインストールする仮想ドライブの容量を指定して、仮想ドライブと仮想マシンを「作成」する。(
今回は16.00GB にしておく。)

ゲストOSウィンドウをフォーカスすると、キーボードがゲストOSにキャプチャーされる。
ゲストOSウィンドウの画面内をクリックすると、マウスがゲストOSにキャプチャーされる。

※キーボードの右側のCtrlキー (ゲストOSウィンドウ右下に表示されているホストキー) を押すと、マウスとキーボードの制御がホストOS (Windows) 側に移る。

###４．CentOSのインストール
VirtualBox マネージャーにて、作成した仮想マシンが選択された状態で、左上の 起動 をクリック。
「起動ハードディスクを選択」ダイアログが表示されるので、プルダウンメニュー右の 仮想光学ディスクファイルの選択… からダウンロードしておいたISOイメージを選択して「起動」する。

CentOSのインストーラーが起動するので、そのままEnterキーを押す。
####・インストール時に使用する言語
下の検索窓に j を入力し、日本語 Japanese を選択
####・インストールの概要
「ソフトウェアの選択」を選択し、左の ベース環境 から サーバー (GUI使用) を選択して「完了」を押す。
「インストール先」を選択し、何もせずに「完了」を押す。
「ネットワークとホスト名」を選択し、「ネットワークとホスト名」設定画面の右上にあるスイッチを オン にして「完了」を押す。
####・ユーザーの設定
「rootパスワード」を選択し、任意の root パスワードを入力して「完了」
「ユーザーの作成」を選択し、任意の フルネーム・ユーザー名 と パスワード を入力し、sudo コマンドと sudoedit コマンドを有効にするため このユーザーを管理者にする にチェックを入れて「完了」を押す。

しばらく経つとCentOSのインストールが完了するので、設定画面右下の「再起動」をクリックする。

再起動後、初期セットアップ画面が表示されるので、「ライセンス情報」を選択し、ライセンス契約に同意 にチェックを入れて「完了」し、「設定の完了」をクリックする。
	     
ログイン画面に切り替わるので、先ほど作成したユーザーを選択し、「次へ」を入力。

####・入力ソース
何もせず「次へ」を押す。
####・オンラインアカウント
そのまま「次へ」を押す。
「Start using CentOS Linux」をクリックしてセットアップを完了する。

ゲストOS上部のGNOMEパネル右側にある jaマーク をクリックし、 日本語 (Kana Kanji) を選択して日本語入力ができるようにする。

###マウスの統合
####１.RPMパッケージのインストール
ゲストOS上部のGNOMEパネルから、 アプリケーション ▸ お気に入り ▸ 端末 を起動する。
	     
端末で以下のように入力する。
RPMパッケージのアップデート

``sudo yum upgrade``

RPMパッケージのインストール

``sudo yum install kernel-devel gcc``

yum コマンドを実行すると、依存性の解決などが行われたあと Is this ok [y/d/N]: と訊ねられるので、y を入力しEnterキーを押す。

また、ローカルに置かれている RPM-GPG-KEY-CentOS-7 から公開鍵を取り込んでも良いか訊ねられるので、同じく y を入力しEnterキーを押す。
	     
アップデートとインストールが完了したら、Linuxカーネルのアップデートを反映するため、OSを再起動する。

####２．Guest Additionsのインストール
ゲストOSウィンドウのファイルメニューから、 デバイス ▸ CD/DVDデバイス ▸ Guest Additions のCDイメージを挿入… を選択。

ゲストOS側で "VBOXADDITIONS_4.3.16_95972" には自動的に起動することを意図したソフトウェアが含まれています。実行してみますか? といったダイアログが表示されるので、「実行する」を選択してユーザーのパスワードで「認証」する。

マウス統合を完全に有効化するため、ゲストOS上部のGNOMEパネル右端のユーザー名をクリックし、一旦「ログアウト」して再度ログイン。

ゲストOSウィンドウのファイルメニューから、デバイス ▸ クリップボードの共有 ▸ 双方向 を選択し、同じように、 デバイス ▸ ドラッグ&ドロップ ▸ 双方向 を選択。
	    
※Guest Additions は、Linuxカーネル、または VirtualBox がアップデートされるたびにインストールし直す必要があり。

###CentOSに日本語入力を追加
アプリケーション‣システムツール‣設定‣地域と言語
入力ソースの「＋」を押し、「日本語（かな漢字）」を追加する。

日本語に切り変えたいときは、Windowsキー＋スペースキーを押す。

##２.Virtual Boxのブリッジモード変更(ネットワーク設定）
１．ホストＯＳをネットワークに接続。
２．VirtualBoxを開く。
３．VirtualBox画面でsettings(設定)を開く。
４．ネットワークタブを開き、「Attached to」の項目が「NAT」になっているところを"Bridged Adapter"に変更し、OKをクリック。
５．端末を開き、コマンド画面でrebootを打ち、再起動する。
６．ifconfigを打ち、「192.162.0.~」のアドレスが取得できているか確認。
７．ホストOSとゲストOSが同じネットワークセグメント内のアドレスになっていればOK（inetとBcastの~前の数字が同じになっていればOK）
８．ブラウザで、「http: //192.162.0.~（IPアドレス）」を開き、インターネットに接続できているか確認する。

##３.CentOSにphpをインストールする方法
####１．EPELデポジトリの追加

``#yum -y install epel-release``

####２. Remiリポジトリをインストール

``#cd /etc/yum.repos.d``
``#curl -O http:　//rpms.famillecollet.com/enterprise/remi.repo``
	
####３．PHP5.6+Apache httpdのインストール

``#yum -y --enablerepo=remi,remi-php56 install httpd php php-common``

####４．Apache httpdが再起動時に自動起動するよう設定

``#systemctl enable httpd.service``
	
####５．Apache httpdを起動する

``#systemctl start httpd.service``
	
####６．Apacheの起動確認

``systemctl -l | status httpsd``
	
####７．動作確認

``#vi /var/www/html/info.php``
	     
<?php
  phpinfo();
?>

:wqでファイルを保存し、http: //IPアドレス //info.phpにアクセスし、phpinfoの画面が表示されればOK
（表示されない場合は、ファイウォール機能でアクセスが遮断されている可能性があるので、ファイウォールの設定を見直す）

##Apacheの設定、ポート開放
####１．http(80番ポート)の穴あけ
 
``# firewall_cmd --add-service=http --parmanent``

``# firewall_cmd --reload``

####２．http(80番ポート)の穴あけ確認
 
``# firewall-cmd --list-services --permanent``
``dhcpv6-client http ssh``
	
####３．https(443番ポート)の穴あけ

``# firewall-cmd --add-service=https --permanent``
``# firewall-cmd --reload``

####４．https(443番ポート)の穴あけ確認

``# firewall-cmd --list-services --permanent``
``dhcpv6-client http https ssh``
	
####５．Apache2.4の動作確認

``# echo "OK" > # /var/www/html/index.html``
	
####６．ブラウザからhttp ://IPアドレス/index.htmlにアクセスし、OKが表示されれば完了

##CentOSにmysqlをインストールする
####１．mariadbの削除

``sudo yum remove mariadb-libs``

``sudo rm -rf /var/lib/mysql/``

####２.mysql-community-serverをインストール

``sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el-7.noarch.rpm``
	  
``sudo yum -y install mysql-community-server``
　　　
※【エラー：パッケージmysql-community-server-5.7.21-1.el6.x86_64 (mysql57-community)要求: libsasl2.so.2()(64bit)になった場合の解決策】
（mysqlのyumのリポジトリが設定されている事が前提。）

``# cd /lib64``

``# ln -s libsasl2.so.3.0.0 libsasl2.so.2``

``# yum install mysql-community-server``
	   
 (上記で失敗する場合は yum clean all を実行してから実施する。)


##php初期設定
	
１．php.iniのバックアップ

``cp /etc/php.ini /etc/php.ini.origin``
	
２．エラー表示の設定を変更	  
####・error_reportingの設定を変更(513行目あたり)
error_reporting = E_ALL | E_STRICT (開発環境においてはSTRICTを含めたすべてのレポートをさせる)

####・display_errorsの設定を変更(530行目あたり)
display_errors = On (エラーがあった際にブラウザなどにエラー内容を表示するように設定）

####・log_errorsの設定を変更(551行目あたり)
log_errors = On （エラーログを吐く設定を有効にしておく）
####・error_logの設定を変更(636行目あたり)
error_log = /var/log/php.log(phpに関連するエラーログを/var/log/php.logに吐くように設定)

####３．文字コード関連の設定
default_charset = "UTF-8"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = Off
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.detect_order = auto

####４．メモリ管理に関する設定

memory_limit = 32MB
・・・PHPの1プロセスが利用可能なメモリー容量の設定。
post_max_size = 16M 
・・・POSTのリクエストを受け付ける際の、最大のPOSTリクエストサイズを設定
	　　
upload_max_filesize = 8M 
・・・ファイルアップロードを受け付ける際の、最大のファイル受付サイズを設定

####５．セキュリティに関する設定
expose_php = Off
・・・これがOnだとレスポンスヘッダにPHPのバージョン情報などが露呈してしまう
	　　
session.hash_function = 1
・・・セッションID発行のハッシュアルゴリズムをSHA-1(160bit)へ変更,0だとMD5(128bit)。生成されたハッシュを32桁にしたい場合は、併せてsession.hash_bits_per_character = 5とする

session.entropy_file = /dev/urandom
/dev/urandomが存在するときのみ
session.entropy_length = 32

####６．その他の設定
short_open_tag = Off
・・・PHPファイルのタグを<?php ?>のみ利用可能と制限(<? ?>などを使用不可にする)

register_argc_argv = On
・・・バッチのようなコマンドラインプログラムを書く場合は必須の設定
	　　
max_execution_time = 30
・・・PHPプログラムの１つの最大実行時間の設定。これも大きなファイルアップロードや大きいバッチ処理がある場合はプログラム側のini_set()などで随時設定する
	　　　　
変更した設定を読み込み

####７．Apacheの再起動。

``# service httpd restart``

##mysql初期設定
####１．初期パスワードの確認

``grep password /var/log/mysqld.log``

表示された中の「localhost:ココ」ココに書いてあるものが初期パスワードなので、コピーしておく。
####２．初期設定

``mysql-service-installation``

####３．新しいパスワードを入力する。
####４．Do you wish to continue～～～?
と聞いてくるので、y以外のものを押して抜ける（私はなぜかYでしか抜けられなかった。）
####５．そのあとはすべて「y」を入力
####６．文字をUTF-8にする

``vim /etc/my.cnf``

ファイルの最終行に
character-set-server = utf8
default-password-lifetime=0
を追記する。

##phpMyAdminのインストール

``sudo yum --enablerepo=remi-php56 install phpMyadmin``

##phpMyadmin初期設定
####１．phpMyAdminの設定ファイル変更

``sudo vi /etc/httpd/conf.d/phpMyAdmin.conf``
	
----------------------------------------------------------
	＜ Directory /usr/share/phpMyAdmin/＞
	AddDefaultCharset UTF-8
	AllowOverride all ←ココにこの記述を追加する
	Require all granted　←ココにこの記述を追加する

	# Apache 2.4

	Require ip 127.0.0.1←ココを自分のIPアドレス最初の３桁に変更
	Require ip ::1
	＜/RequireAny＞
	＜/IfModule＞
	＜IfModule !mod_authz_core.c＞

	# Apache 2.2
	Order Deny,Allow
	Deny from All
	Allow from 127.0.0.1←ココを自分のIPアドレスの最初の３桁に変更
	Allow from ::1
	＜/IfModule＞
	＜/Directory＞
	
------------------------------------------------
:wqで保存し、再起動する。

##rLoginの設定
Server AddressにIPアドレスを入力（centOSでifconfigとすると確認できる)
portをsshに変更
ユーザー名とパスワードは、centOSと同じものを入力。

##おまけ
####１.viで開いた時のファイルの行番号の表示

``:set number``
   
・行番号を指定して指定の行まで移動
``:3``
(3行目にカーソルが移動する。）
	　
・行番号を非表示にする
``:set nonumber``

####２.mysqlのログイン・ログアウト
１．mysql -u root -p
２．パスワードを入力。
３．\qかQUIT;かEXIT;と入力しログアウト

####３．yumでインストールしようとした時、エラーが出た場合
Another app is currently holding the yum lock waiting for～～～というエラーが出た時の対処
	
yumがほかのアプリによってロックされているということなので
``rm -f /var/run/yum.pid``
　　　　　　
と入力し解決。

##参考
・https://qiita.com/100/items/80a899fbaeb1e82b3f67
・http://d.hatena.ne.jp/kikupi084/20100622/1277208685
・https://weblabo.oscasierra.net/centos7-php56-install/
・https://e-algorithm.xyz/centos7-apache2-4-install/
・https://qiita.com/ozawan/items/648bdc146041ceb2e390
・https://qiita.com/knife0125/items/0e1af52255e9879f9332
・https://qiita.com/ei1206/items/4fbdab8c1699615f72d7