m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

php5.5+php-fpm+nginxで設定

nginx

去年辺りから出始めてきていたWebサーバ

なんかよくわからないけどApacheより軽量のWebサーバ最近はこちらのほうが主流になりつつあるのでいろいろと手を付けてみる

特徴

.htaccessが動かない→その代わりreweite用の設定を使用できるらしい
apacheよりちょっと速く安定動作するよう
・リバースプロキシサーバやロードバランサとしても使用可能
・スケールアウトしやすい

nginx設定

リポジトリ登録
# nginxをインストール
wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm
リポジトリファイル内容
vim /etc/yum.repos.d/nginx.repo
----
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
----
インストール
yum install -y nginx
設定ファイルを確認
vim /etc/nginx/nginx.conf
----

user  nginx;
worker_processes  2;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip設定;
    gzip on;
    gzip_types  text/plain
                text/xml
                text/css
                text/javascript
                image/x-icon
                application/xml
                application/rss+xml
                application/json
                application/x-javascript;
    gzip_disable "MSIE [1-6]\.";
    gzip_disable "Mozilla/4";

    # トークン他
    server_tokens off;
    ignore_invalid_headers on;

    # 設定ファイル読み込み
    include /etc/nginx/conf.d/*.conf;
}
----
自動起動、起動
service nginx start
chkconfig nginx on

phpenvでphp5.5をソースインストール

phpenvとphp-buildをインストール
cd
curl https://raw.github.com/CHH/phpenv/master/bin/phpenv-install.sh | sh
echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
which phpenv
mkdir -p ~/.phpenv/plugins
cd ~/.phpenv/plugins
git clone git://github.com/CHH/php-build.git
chmod 755 php-build/bin/rbenv-install
phpenv install
--------------------------------------
usage: phpenv install VERSION

Available versions:
 5.2.17
 5.3.10
 5.3.11
 
 
 いろいろ
 
 
 5.5.5
 5.5snapshot
 master
--------------------------------------
yumで関連モジュールをインストール
yum --enablerepo=epel install re2c libmcrypt libmcrypt-devel
yum install libxml2-devel bison bison-devel openssl-devel curl-devel libjpeg-devel libpng-devel libmcrypt-devel readline-devel libtidy-devel libxslt-devel httpd-devel enchant-devel libXpm libXpm-devel freetype-devel t1lib t1lib-devel gmp-devel libc-client-devel libicu-devel oniguruma-devel net-snmp net-snmp-devel  bzip2-devel
コンパイル用の設定ファイルを編集
vim /root/.phpenv/plugins/php-build/share/php-build/definitions/5.5.5
----
configure_option "--with-apxs2=/usr/sbin/apxs --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-fileinfo --enable-hash --enable-json --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-iconv --enable-ftp --with-gettext --enable-mbstring --with-onig=/usr --with-pcre-regex --with-mysql=mysqlnd --with-mysql-sock=/tmp/mysql.sock --enable-phar --enable-shmop --enable-sockets --enable-simplexml --enable-dom --with-libxml-dir=/usr --enable-tokenizer --with-zlib --with-kerberos=/usr --with-openssl=/usr --enable-soap --enable-zip --with-mhash=yes --without-mm --with-enchant=/usr --with-zlib-dir=/usr --with-gd --enable-gd-native-ttf --with-gmp=/usr --with-jpeg-dir=/usr --with-xpm-dir=/usr/X11R6 --with-png-dir=/usr --with-freetype-dir=/usr --with-imap=/usr --with-imap-ssl --enable-intl --with-t1lib=/usr --with-mcrypt=/usr --with-snmp=/usr"

install_package "http://www.php.net/distributions/php-5.5.5.tar.bz2"
install_pyrus
install_xdebug "2.2.3"
enable_builtin_opcache


----
コンパイル
phpenv install 5.5.5
モジュールを退避して設定
cp /etc/httpd/modules/libphp5.so /root/.phpenv/versions/5.5.5/libphp5.so
phpenv rehash
phpenv global 5.5.5

php-fpm

php-fpm設定
mkdir /var/log/php-fpm
chown -R nobody:nobody /var/log/php-fpm
cp -f /tmp/php-build/source/5.5.5/sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf
php-fpmの起動用スクリプトをコピー
cp -f /tmp/php-build/source/5.5.5/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
chkconfig php-fpm on
/etc/init.d/php-fpmを編集してconfファイルの場所を変更する
vim /etc/init.d/php-fpm
----
php_fpm_CONF=${prefix}/etc/php-fpm.conf
↓
php_fpm_CONF=/usr/local/etc/php-fpm.conf
----
php-fpm.confを編集
vim /usr/local/etc/php-fpm.conf
----
[global]
pid = run/php-fpm.pid

[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
listen.owner = nginx
listen.group = nginx
listen.mode = 0666

pm = dynamic
pm.max_children = 8
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 500

----
起動
service  php-fpm start
chkconfig php-fpm on
ログどドキュメントのディレクトリを作成
mkdir -p /var/log/nginx/dev1.example.com
mkdir -p /var/www/html/dev1.example.com/public
バーチャルホスト用のnginxファイル作成
vim /etc/nginx/conf.d/dev1.example.com.conf
----
server {
    # ポート、サーバネーム
    listen       80;
    server_name  dev1.example.com;

    # アクセスログ、エラーログ
    access_log  /var/log/nginx/dev1.example.com/access.log  main;
    error_log   /var/log/nginx/dev1.example.com/error.log;

    # ドキュメントルート
    root   /var/www/html/dev1.example.com/public;

    # indexファイル
    index  index.php index.html index.htm;

    # phpの処理
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # アクセスを制限する
    location ~ (\.htaccess|\.git|\.svn) {
        deny  all;
    }
    
    # 文字コード
    charset utf-8;
    
}
----
再起動
service  nginx restart
service  php-fpm restart

確認

テストファイル
echo "<?php echo 'test'; phpinfo();" > /var/www/html/dev1.example.com/public/index.php
画面

f:id:m_shige1979:20131103212303j:plain

まとめ

とりあえず、体感的には全然早くなった感はない…というか全然わからんけど
apacheはある程度慣れているのでこれからはこれが主流になりつつあると思われる。


phpは動くのであとはperlをmojoliciousで動作するか検証してなんかのVPSを用意してセットアップしてみる。


WEB+DB PRESS Vol.72

WEB+DB PRESS Vol.72

  • 作者: 近藤宇智朗,生井智司,Dr.Kein,tokuhirom,森田創,中島聡,堤智代,A-Listers,はまちや2,竹原,川添貴生,久保達彦,道井俊介,飯田祐基,中村知成,規世やよい,後藤秀宣,天野祐介,奥野幹也,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2012/12/22
  • メディア: 大型本
  • 購入: 11人 クリック: 94回
  • この商品を含むブログ (10件) を見る