Windows+Vagrant+CentOS7.2にPHP7+Nginx+MariaDBを構築する

Windows+Vagrant+CentOS7.2にPHP7+Nginx+MariaDBをインストールする方法を紹介します。

VagrantやCentOSの設定は以前紹介した記事を元に行っています。

Windows+VagrantでCentOS7.2の仮想環境を構築する

2017.12.15

ローカルのソースと、仮想環境のソースを共有化する

PHPやNginxの設定より前に、ローカル環境(Windows)の指定のフォルダと仮想環境の指定のフォルダの内容が共有化されるように設定します。
これによって、ローカルで編集したファイルが自動的に仮想環境上でも更新されることになります

普通に共有化すると、速度がいまいちなので今回はvagrant-winnfsdプラグインをインストールして共有化を行います。

vagrant-winnfsdをインストール

Windows Powershellを立ち上げて、下記のコマンドを入力しましょう。

vagrant plugin install vagrant-winnfsd

Vagrantfileを編集する

続いてVagrantfileファイルを編集します。

今回はC:\vagrant\htmlフォルダの内容をVagrantの/var/wwwと共有するように設定します。

# C:\vagrant\htmlフォルダの内容をVagrantの/var/wwwと共有
config.vm.synced_folder "C:/vagrant/html", "/var/www", create:true,type:"nfs"
# 念のためにデフォルトの設定を切る
config.vm.synced_folder ".", "/vagrant", disabled: true

Vagrantをリロード

vagrantをリロードします。(一回vagrantを停止して、再び起動する方法でもOKです)

vagrant reload

C:\vagrant\htmlに適当なファイルを配置して、vagrantの/var/wwwにファイルが自動で追加されてたら共有化完了です。

Nginxをインストール

NginxはYumで簡単にインストールできます。

インストール後、起動と自動起動の設定コマンドを実行します。

# Nginxインストール
sudo yum --enablerepo=epel install nginx
# Nginx起動
sudo systemctl start nginx
# Nginx自動起動設定
sudo systemctl enable nginx

実行したら、http://192.168.1.11/をブラウザで開きます。
下の画面が出たら完了です。

PHP7.1をインストール・設定

そのうちチャレンジしたいPHPフレームワークが7.0以上対応のため、今回はPHP7.1をインストールします。

インストール

Teratermで下記のコマンドを実行すれば、インストールは完了します。

sudo yum install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-intl php-fpm php-mysql

PHP-FPMを設定

今回はApacheではなくNginxを使うので、php-fpmのインストールと設定が必要になります。
php-fpmのインストールはPHPのインストールと同時に行っています。

書きコマンドで/etc/php-fpm.d/www.confを開きます。

sudo vi /etc/php-fpm.d/www.conf

userとgroupの記述の部分をnginxに変更します。

user = nginx
group = nginx

/etc/php-fpm.d/www.confを変更したら、自動起動の設定と起動のコマンドを実行します。

# 自動起動
sudo systemctl enable php-fpm
# 起動
sudo systemctl start php-fpm

セッション保存先のパーミッションを変更

セッションの保存先のディレクトリのパーミッションを変更しないとエラーが起きたので、以下のコマンドを実行。
※人によってはしなくてもいいかも。

# 保存先へ移動
cd /var/lib/php
# パーミッションを変更
sudo chown root:nginx session

Nginxの設定を変更

続いて、Nginxの設定を行います。
/etc/nginx/conf.dにdefault.confを作成して、下記のように記述します。

server {
    # ルートディレクトリを/var/www/htmlに設定
    root /var/www/html;
    index  index.php index.html index.htm;
    listen 80;
    server_name 192.168.1.11;
    # proxy from nginx to php-fpm
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
    }
}

編集したら、下記のコマンドで設定を反映します。

sudo nginx -s reload

phpinfoが表示されるか確認

/var/www/htmlにinfo.phpを作成し、phpinfo()を記述します。

<?php
//phpinfo表示
phpinfo();

ブラウザでhttp://192.168.1.11/info.phpにアクセスして、phpinfoが表示されたらOKです。

MariaDBインストール

今回はMySQLではなくMariaDBをインストールします。
MariaDBはMySQLと互換性があるので、実際に使う分にはMySQLと変わらず使えます。

インストール

YumコマンドでMariaDBをインストールします。

sudo yum install mariadb mariadb-server

設定ファイルを編集

まずはmy-small.cnfをコピーして、server.cnfを作り編集します。

# my-small.cnfファイルをコピーして、server.cnfを作る
sudo cp -p /usr/share/mysql/my-small.cnf /etc/my.cnf.d/server.cnf
# server.cnfを編集
sudo vi /etc/my.cnf.d/server.cnf

デフォルトの文字コードをutf-8にします。

[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8

起動と初期設定

MariaDBを起動し、MariaDBの初期設定を行います。

# MariaDBを起動
sudo systemctl start mariadb
# 初期設定コマンド実行
sudo /usr/bin/mysql_secure_installation

下記のような質問が出てくるので、画面に従って設定をしてください。
パスワードの設定以外はYを選択してかまいません。

# 何も入力しないでエンター
Enter current password for root (enter for none):

# Yを入力
Set root password?[Y/n] Y

# 設定したいパスワードを入力
New password:
# 入力したパスワードを再入力
Re-enter new password:

timezoneの設定

今度はデフォルトのタイムゾーンを設定します。
/usr/bin/mysql_tzinfo_to_sql /usr/share/zoneinfoの内容をSQL化して、MariaDBに流し込みます。

# timezoneのSQL化
/usr/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo > ~/timezone.sql
# MariaDBにデータを流し込む
mysql -u root -p -Dmysql < ~/timezone.sql

/etc/my.cnf.d/server.cnfを編集します。

sudo vi /etc/my.cnf.d/server.cnf

default-time-zone= Asia/Tokyoを追記します。

[mysqld]
default-time-zone= Asia/Tokyo

MariaDBを再起動して完了です。

sudo systemctl restart mariadb

phpMyAdminを設置して確認

phpMyAdminをダウンロードして、/var/www/htmlに配置します。
http://192.168.1.11/phpMyAdminにアクセスして設定したrootのパスワードでログインできるか確認しましょう。

関連記事

Windows+VagrantでCentOS7.2の仮想環境を構築する

2017.12.15

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください