centos7+nginx+php-fpm+php7な新しい感じの環境を構築

author potpro(ぼとぷろ)
2016/11/30

centos7+nginx+php-fpm+php7な新しい感じの環境を構築

記事の書き方をhtmlからMarkdownにしました。これで今までより捗るはず。真面目に今回はプログを滞りなく技術的なことを書いていきたい。何度目の正直だ。

ということで、いきなりですが技術系おなじみのadvent calendarもどきをやります。
目標としては12/1から12/25です。25記事ということです。

・・・無理そう。
なので、多分飽きたらやめるかもしれませんし辞めないかもしれません。
基本的に書くことはIT系の雑多です。
多分Wordpressとかサーバー構築系のWeb系から、アプリとかjavascriptまで。

あと、計画なんてありません。基本即興です。この一年で生かしたことをひねり出して書く。そんな感じです。
もはや技術関係ないものも出てくるかもしれませんし、まあとりあえず10記事続けばいいな…
目的としてMarkdownを覚えるということもある。 ということでここから開始。

potproject.net Advent Calendar 20161日目の記事です。


11/28くらいにこのブログは別のサーバに移管しました。
使っているところとしては お名前.com VPSメモリ2GBプランです。

ここが12カ月一括なら税別1100円で、CPUも早いとか聞くのでコスパはかなりいいかなと。

せっかく借りたんだから環境も新しいほうがいい!さらに早い方がいい!
ということでApacheから脱却してこのタイトル通りの環境となります。
現在このサイトもこれで動いています。

最初の環境としては、centos7の最小設定をインストール、ネットワークに接続したところから開始。
基本的にroot権限前提です。

epelとremiリポジトリのインストール

まず、php7を入れる為にはepelリポジトリ及びremiリポジトリが必要です。 remiはともかく、epelリポジトリに関しては多分開発するうえでかなり使用すると思うので入れてて損はないです。

yum install epel-release

これでepelリポジトリが入ります。基本的にこれを使うためには、--enablerepo=epelを使用します。

remiリポジトリはyumコマンドではなく、このサイトからrpmをダウンロードします。
コマンドは載せますが、リンク切れや古くなったりとかもあり得るので、公式サイトから探して落としてきた方が無難です。
wgetも何か最小環境だと入ってなかったのでyum install wgetとかで入れましょう。
最小構成だとgitなんかも入ってなかったりするよね。 この辺は近年だと必須レベルだよなあ。

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm

PHP7のインストール

php7をインストールしたい時には、remi-php70を使用します。
巻末がそのままバージョンなのでremi-php56でv5.6、remi-php71でv7.1なんかもインストールできます。
7.1ももうじき正式リリースされそうです。正式リリースになったら7.1でインストールするのもいいかも。 一応本番として動かすので7.1ではなく7.0を使ってました。チキンです。

yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd php-xml php-fpm php-mysql

インストールできたら、php -vで確認しよう。こんな感じに表示されていれば正常です。 後ろにいっぱい書いてあるのはパッケージです。php-fpmなど、ほぼ必須で使うだろといった感じのパッケージは入れておきます。

php -v
PHP 7.0.13 (cli) (built: Nov  8 2016 20:16:29) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

php-fpm設定

** /etc/php-fpm.d/www.conf ** がyumでインストールした時のデフォルト設定ファイルです。
こんな感じに設定。ownerやgroupはユーザにより変わります。
今回はnginxというユーザーを作成しています。

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

nginxのインストール

nginxはepelリポジトリに最新版がありましたのでインストール。

yum install --enablerepo=epel nginx

nginx設定

このあたりは本当に多彩過ぎて辛い。
本番はこれにSSL設定までしてるからすげえ長くなった。
Apacheより多くね?って感じです。
いろいろ試行錯誤していい感じの設定を探しましょう。
** nginx -t ** で設定が正しいか確認できます。これで不慮のサーバダウンを防ぎましょう。

** /etc/nginx/conf.d/nginx.conf **

server{
  port   80;
  servername _;
  root   /var/www/html;
  index  index.html index.htm;

  location ~ \.php$ {
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include         fastcgi_params;
  }
}

php-fpm と nginx起動

service nginx start
service php-fpm start
//普通はこっちらしいよ
//systemctl start nginx
//systemctl start php-fpm

後は外部から確認して大体これで表示できねえ!なんでだ!ってなった時には大体SELinuxかfirewalldだと思います。その辺は長くなるのでここまで。
とりあえず動いてるかだけでも確認したいんならcurl http://localhost/ とか打ってなんかいろいろ出たらとりあえずサーバーは稼働している、と自分は良く調べます。

これで *** 502 Bad Gateway *** とか出る場合は、大体php-fpmとの連携がうまくいっていません。
権限とかphp-fpmが動いているか確認しましょう。

これが終わっても大体次はmysqlの構築設定の壁が立ちはだかる。先は長い。


次回に続けるときはwordpress+nginxかssl設定の話やります。はい。

2日目→ potproject.net Advent Calendar 2016 2日目