雨天決行Web開発

PHP多めなWeb開発勉強ブログ

Ubuntu14.04にnginxとPHP7.0とMySQL5.7をインストールする

これまでwebサーバーはapacheを使っていたのですがnginxの方が軽量高速と聞いたのでインストール、ついでにPHPMySQLのバージョンも新しくしました。

その作業の備忘録です。

nginxをインストールする

もしapacheを起動している場合は停止しておきます。

$ sudo service apache2 stop

以下の記事の通りにインストールします。

qiita.com

※元記事にある注意書きのようにtrusyの部分はUbuntuのバージョンによって異なります。

$ curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
$ sudo sh -c "echo 'deb http://nginx.org/packages/ubuntu/ trusty nginx' >> /etc/apt/sources.list"
$ sudo sh -c "echo 'deb-src http://nginx.org/packages/ubuntu/ trusty nginx' >> /etc/apt/sources.list"
$ sudo apt-get update
$ sudo apt-get install nginx

ブラウザでlocalhostを開くとWelcome to nginx! と表示されます。

PHP7.0をインストールする

以下の記事の通リにインストールします。

www.digitalocean.com

$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install php7.0-fpm

php.iniのtimezoneの設定

/etc/php/7.0/cli/php.ini/etc/php/7.0/fpm/php.iniを編集します。

timezoneの設定は912行目。

;date.timezone =

これをコメントアウトを外してAsia/Tokyoを指定します。

date.timezone = Asia/Tokyo

php.iniのerror_reportingとdisplay_errorsの設定

開発用のサーバーなのですべての警告、エラーを表示するようにします。

php.iniの445行目。

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

これをE_ALLに変更します。

error_reporting = E_ALL

続いてdisplay_errorsの設定です。php.iniの462行目。

display_errors = Off

これをOnに変更します。

display_errors = On

これですべての警告、エラーが表示されるようになります。

MySQL5.7をインストールする

以下の記事の通リにインストールします。

qiita.com

最初に以下からMySQL APT RepositoryのURLをコピーします。

MySQL :: Download MySQL APT Repository

Downloadボタンをクリック→No thanks, just start my download.のURLをコピー

2016年2月21日時点ではhttp://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.debとなっています。

$ wget http://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.deb
$ sudo dpkg -i mysql-apt-config_0.6.0-1_all.deb

途中でウインドウが表示されるのでMySQL-5.7を選択してApplyを選択します。

$ sudo apt-get update
$ sudo apt-get install mysql-server

PHPMySQLを使用できるようにします。

$ sudo apt-get install php7.0-mysql

nginxでPHPを使うための設定

PHPファイルを用意

先にテスト用のPHPファイルとそれを置くディレクトリを作っておきます。今回は/var/www/localhostディレクトリにindex.phpを置いてみます。

$ sudo mkdir -p /var/www/localhost
$ sudo vim /var/www/localhost/index.php

index.phpガルパンはいいぞを出力するだけにします。

<?= 'ガルパンはいいぞ' ?>

nginx設定ファイルを変更

/etc/nginx/conf.d/default.confを編集します。念のためにバックアップを作っておきます。

$ cd /etc/nginx/conf.d
$ sudo cp default.conf default.conf.backup

default.confを修正します。

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    # ■ ■ ■ rootとindexを変更■ ■ ■
    location / {
        root   /var/www/localhost;
        index  index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # ■■■アンコメントして修正します■■■
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /var/www/localhost;
        fastcgi_pass   unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    # ■■■修正ここまで■■■

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

PHP設定ファイルを修正

/etc/php/7.0/fpm/pool.d/www.confを修正します。23、24行目をnginxに変更。

user = nginx
group = nginx

47、48行目もnginxに変更します。

listen.owner = nginx
listen.group = nginx

nginxとphp7.0-fpmを再起動

設定を反映させるために再起動します。

$ sudo service nginx restart
$ sudo service php7.0-fpm restart

以上ですべての設定が終わりました!

ブラウザで確認してみる

ブラウザでlocalhostを開いて、ガルパンはいいぞと表示されればOKです。

とりあえず動くようにはなりました。