興味は広く、こだわりは深く、遊び心は目一杯、がモットーの、下駄です。
本日もIT謎掛けやってみます
「php」とかけまして・・・
「スーパーで買ってきたコロッケの食べ方」と、ときます。
そのココロは・・・
洗練されたソースを、使うのが決め手です。
Nginx+php-fpm環境はスタンダード?
今となってはapacheを使う気にもなれず、nginxでwebサーバーを構築することがスタンダードになってきました。
シンプル且つ、スピード性能が高いNginxは、webサーバー管理者の非常に強い見方です。
そして、php-fpmをセットで仕込むことは、wordpressを使う人なら必須の組み合わせかと思いますが、
開発を行う会社などでは、これに対して、デプロイ効率化のために、gitアクセスできるようにしたいと考える人も増えてきているようです。
僕も、この現状環境に、同じドメインでgitアクセスできるように、サーバー構築したいと思い、ubuntuとcentosそれぞれに、gitサーバーの構築をすることに成功したので、
それぞれの手順と注意点、自分がハマったポイントなどをまとめておきたいと思います。
ubuntu設定は、以前にブログで書いたので、今回はCentOSを対象に書いておきます。
前回記事 : gitサーバーへの道
gitサーバー への道
CentOSのNginx + php-fpm + gitの構成
今回作業をしたCentOSサーバーは、バージョン7でした。
インストール手順を書いておきます。
// 必要なアプリケーションのインストール
$ yum -y install spawn-fcgi fcgi-devel fcgiwrap
// spawn-fcgiとfcgiwrapの設定
$ mkdir /var/run/fcgiwrap
$ vi /etc/sysconfig/fcgiwrap
```
FCGI_USER=nginx
FCGI_GROUP=nginx
FCGI_PROGRAM=/usr/sbin/fcgiwrap
FCGI_PID=/var/run/fcgiwrap/spawn-fcgi.pid
FCGI_SOCKET=/var/run/fcgiwrap/fcgiwrap.sock
FCGI_EXTRA_OPTIONS="-M 0700"
OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P $FCGI_PID -- $FCGI_PROGRAM"
```
$ vi /etc/init.d/swap-fcgi
```
# 23行目あたり
## exec="/usr/bin/spawn-fcgi"
## prog="spawn-fcgi"
## config="/etc/sysconfig/spawn-fcgi"
exec="/usr/bin/spawn-fcgi"
cgi="/sbin/fcgiwrap"
prog=`basename $cgi`
config="/etc/sysconfig/$prog"
pid="/var/run/fcgiwrap/spawn-fcgi.pid"
SOCKET="/var/run/fcgiwrap/fcgiwrap.socket"
```
// nginx設定
```
location ~ ^/.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|receive)-pack)$ {
access_log /var/log/nginx/git_access.log;
error_log /var/log/nginx/git_error.log;
include /etc/nginx/fastcgi_params_git;
fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
fastcgi_param GIT_PROJECT_ROOT /var/www/git;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param PATH_INFO $uri;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.socket;
}
```
// 付随する設定
$ vi /etc/nginx/fastcgi_params_git
```
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
```
// それぞれのアプリケーションを起動(再起動)
$ systemctl restart spawn-fcgi
$ systemctl restart nginx
ハマリポイントの解説
基本設定はこれで完了ですが、いくつかハマリングしてしまうポイントがあるので、自分のハマった箇所を列挙します。
1. /etc/nginx/fastcgi_paramsファイルのphp-fpmとの同居
php-fpmで、このファイルを若干変更している場合があります。
自分の環境は、以下のようになっていたので、それを、変更(デフォルトに戻す)することで、ファイルを分けて対応しました。
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
2. nginxパーミッションの設定
今回の環境で、fcgiwrapを使う場合、パーミッションは、nginxになっているのが望ましいので、
php-fpmのwww.conf設定を以下のようにしておく必要があります。
$ vi /etc/php-fpm.d/www.conf
```
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen.mode = 0777
```
設定変更した際は、php-fpmの再起動もしてください。
$ systemctl restart php-fpm
アプリケーションの名称にバージョンが入っている場合があるので、その際は適宜変更してコマンドを叩いてください。
3. git pushコマンドで403エラーが出る場合
この場合は、gitリポジトリで、以下のコマンドを実行することで、大抵は解消します。
$ git http.receivepack true
0 件のコメント:
コメントを投稿