Help us understand the problem. What is going on with this article?

CentOSにnginx, php-fpm, mysqlの環境を構築する1

centosのバージョン

# cat /etc/redhat-release
CentOS release 6.5 (Final)

nginxのインストール

公式ページ:公式ページ

nginxのためのレポジトリの登録

# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.96TgxU: ヘッダ V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
準備中...                ########################################### [100%]
   1:nginx-release-centos   ########################################### [100%]

/etc/yum.repos.dにnginx.repoができていることを確認する。

インストール

# yum install nginx
# nginx -v
  nginx version: nginx/1.6.0

nginxでbasic認証を設定する

■参考
http://heartbeats.jp/hbblog/2012/02/nginx03.html

 htpasswd -cm .htpasswd username

nginx.confの設定

基本的な設定は/etc/nginx/nginx.congに記載する。
今回のサーバ設定は/etc/nginx/conf.dに個別におく。
デフォルトでドキュメントルートなどは設定してあるので、
ポートのみ変更してアクセスしてみる。
/usr/share/nginx/html配下のindex.html(nginxのwelcomeページ)
が表示されればOK。

つぎー。

php、 php-fpm, mysqlのインストール

これだけインストール済みだった

#yum list installed | grep php

php-cli.x86_64          5.3.3-27.el6_5  @updates
php-common.x86_64       5.3.3-27.el6_5  @updates
php-domxml-php4-php5.noarch
php-jsonlint.noarch     1.1.2-1.el6     @epel
php-mcrypt.x86_64       5.3.3-3.el6     @epel
php-pdo.x86_64          5.3.3-27.el6_5  @updates
php-pear.noarch         1:1.9.4-4.el6   @base
php-xml.x86_64          5.3.3-27.el6_5  @updates

念のため一旦全部削除

yum remove 'php-*'

消えた。怖い。

remi リポジトリ追加

rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
vim /etc/yum.repos.d/remi.repo

remiの設定を新規で追加する

/etc/yum.repos.d/remi.repo
[remi]
name=Les RPM de remi pour Enterprise Linux 5 - $basearch
baseurl=http://rpms.famillecollet.com/el5.$basearch/
http://iut-info.univ-reims.fr/remirpms/el5.$basearch/
enabled=0
priority=1

インストールする(いつかソースからしてみたい)

yum --enablerepo=remi install mysql mysql-server  php php-fpm php-devel php-cli php-xml php-mysql php-mbstring php-gd

続いてphp-fpmの設定

php-fpmの設定

/etc/php-fpm.d/www.confが設定ファイルになっている。

起動ユーザをnginxにする

user = nginx
group = nginx

待ち受けポートを変更

listen = 127.0.0.1:9050

netstat -taponで確認

tcp        0      0 127.0.0.1:9050              0.0.0.0:*                   LISTEN      1402/php-fpm        off (0.00/0/0)

おお、いけてる。
ドキュメントルート配下にindex.phpを置いて

index.php
<?php
phpinfo();

http://XXXX/index.phpにアクセスしてみる。
エラー。
nginxのコンフィグを確認する。
pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
というコメント配下のコメントアウトを外してみる。

    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9050;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
    }

エラ-。なぜに。
ログを見る。

nginx/error.log
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

参考URL:http://tonby.sakura.ne.jp/?p=953
参考URL:http://nginx.org/ja/docs/http/request_processing.html

rootとfastcgi_paramの設定が悪かったみたい。

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;となっていたが、
/scriptsフォルダなんてないw

ドキュメントルート配下の.phpをみてほしいので、
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
に変更。再度アクセス。エラー。なんでじゃい。

今度はドキュメントルートの設定が悪いみたい。

location / {}にてrootを設定していたので、
location ~ \.php$ {}にて、$document_rootを参照できると思っていたが違った。
試しにログに$document_rootを吐くようにしてみたら、/etc/nginx/htmlと吐かれていた。
これは意図しないドキュメントルート。

各ロケーションで参照するための$document_rootはserver{}直下でする必要があるみたい。
よって、以下のように変更。

nginx.confg
server {
   root   /usr/share/nginx/html;

   location ~ \.php$ {
        #root           $document_root;
        fastcgi_pass   127.0.0.1:9050;
        fastcgi_index  index.php;
        #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

やっとphpInfoがみれたw
今日はここまで。次は、mysqlを設定をしてみる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした