CentOS7(x86_64)+nginx+PHP7+php-fpm+MySQL5.7環境構築手順

前提：CentOS-7-x86_64がインストール済みであること。rootでログインしていること。

●SELinuxを無効化する

    vi /etc/selinux/config

下記のように編集する

    ##SELINUX=enforcing
    SELINUX=disabled

再起動する

    sudo shutdown -r now


●EPELリポジトリ

    yum update -y
    yum install epel-release -y
    yum -y update epel-release

●Remiリポジトリ

    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    yum -y update remi-release

●nginxインストール

    rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    yum -y update nginx-release-centos
    yum -y --enablerepo=nginx install nginx

●ファイアウォール解除

    firewall-cmd --permanent --zone=public --add-service=http
    firewall-cmd --permanent --zone=public --add-service=https
    firewall-cmd --reload

●nginx起動

    systemctl start nginx.service
    systemctl enable nginx.service

この時点で、ブラウザにてhttpでサーバのIPアドレスにアクセスすれば、
nginxのページ
「Welcome to nginx!」
が表示される。

●/etc/nginx/conf.d の設定

    cd /etc/nginx/conf.d
    cp -p default.conf default.conf.org
    vi default.conf

default.conf に、次のように記述する。

    server {
      listen 80;
      server_name localhost;
      root /usr/share/nginx/html/;
      index index.php index.html index.htm;

      location / {
        try_files $uri $uri/ /index.php?$query_string;
      }

      location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
      }
    }

●PHP7のインストール

    yum -y --enablerepo=remi-php70,epel install php-fpm php-gd php-gmp php-mbstring php-mcrypt php-opcache php-pdo php-pear-MDB2-Driver-mysqli php-pecl-memcached php-pecl-msgpack php-xml php-devel php-gd

●php-fpmの設定

    cd /etc/php-fpm.d/
    cp -p www.conf www.conf.org
    vi www.conf

下記のように編集する。

    user = nginx
    group = nginx
    listen = /var/run/php-fpm.sock
    listen.owner = nginx
    listen.group = nginx

●php-fpmの起動

    systemctl start php-fpm
    systemctl enable php-fpm
    systemctl restart nginx.service


●PHPスクリプトの動作確認

    cd /usr/share/nginx/html
    vi index.php
    <?php echo 'hoge'; ?>


ブラウザにてhttpでサーバのIPアドレスにアクセスして、hogeと画面に表示されたらOK。

●MySQL5.7のインストール

    rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
    yum install -y mysql-community-server
    mysqld --version


●MySQL5.7の起動

    systemctl enable mysqld.service
    systemctl start mysqld.service

●MySQL5.7の設定

    vi /etc/my.cnf

skip-grant-tables を追加する。

    [mysqld]
    skip-grant-tables

mysqldを再起動する。

    systemctl restart mysqld.service

●MySQL5.7のrootのパスワードを設定する
パスワードは、最低1つの数値文字を含み、1つの小文字および大文字を含み、1つの特殊文字(英数字以外)を含む必要がある。

    mysql -u root
    use mysql
    UPDATE user SET authentication_string=password('任意のパスワード') WHERE user='root';
    flush privileges;
    exit

設定を戻す。

    vi /etc/my.cnf
    skip-grant-tables を削除する。
    systemctl restart mysqld.service

パスワード付きで入れることを確認する。

    mysql -u root -p
    ALTER USER 'root'@'localhost' IDENTIFIED BY '任意のパスワード';


●PHP7とMySQL5.7の接続を確認する

    <?php
    try {
      $pdo = new PDO('mysql:host=localhost;dbname=mysql;charset=utf8','root','MySQLのパスワード',
      array(PDO::ATTR_EMULATE_PREPARES => false));
      $result = $pdo->query('show tables');
      while($row = $result->fetch(PDO::FETCH_ASSOC)) {
        print_r($row);
      }
    } catch (PDOException $e) {
      exit('データベース接続失敗。'.$e->getMessage());
    }
    ?>

●gitのインストール

    yum install git -y

●Laravel5のインストール
http://qiita.com/kenichiro-yamato/items/1f8e2c80c8067fc51f56

●laravelアプリケーション作成の下準備

    yum install php-pear --disablerepo=* --enablerepo=remi,remi-php70
    yum -y install cc gcc
    yum -y install zlib-devel
    pecl install zip

    vi /etc/php.ini

つぎのように追記する。


    [PHP]
    extension=zip.so

nginx再起動

    systemctl restart nginx.service

●laravelアプリケーション作成

    cd /usr/share/nginx/html/
    /root/.config/composer/vendor/bin/laravel new hoge

・nginxのドキュメントルールをlaravelのpublicに合わせる。
・再起動する systemctl restart nginx.service
・laravelのパーミッションを開ける。 chmod -R 777 storage
・ブラウザにてhttpでサーバのIPアドレスにアクセスして、Laravelのトップが表示されたらOK。