Nginx PHP MySqlコンパイルインストール


CentOS 5.6プラットフォームのコンパイルインストール.システムにgcc/gcc-c++コンパイラがインストールされていることを確認します.
1.Nginx-1.0.14 2.PHP-5.3.10 3.MySql-5.1.61
関連依存開発ライブラリのインストール:autoconf curl freetype gd jpegsrc libiconv libmcrypt libxml 2 mhash ncurses openssl opensll-devel pcre-devel zlib zlib-devel
1.Nginxコンパイルインストール#groupadd www作成wwwユーザグループ#useradd-g www-s/sbin/nologin-M www作成wwwユーザグループ#mkdir/www作成/www Webサイトディレクトリ#chmod+w/www/wwwディレクトリへの書き込み権限#chown-R www:www/www Webサイトのルートディレクトリ/www所有者と所属グループをwwwユーザーとグループに設定
[./configureコンパイルパラメータ]--prefix=/usr/local/nginx Nginxインストールパス--user=www nginx起動実行に使用するユーザー.このユーザーは既に存在する必要があります.--group=www nginxは、すでに存在する必要がある実行に使用されるユーザグループを開始します.--with-http_realip_module --with-http_addition_module --with-http_gzip_static_moduleはgzip圧縮機能を開き、ページを圧縮します.--with-http_random_index_module --with-http_stub_status_module --with-http_sub_module --with-http_dav_module
Nginxを設定します.confプロファイルは、次の内容を変更または追加します.
user www www;                            //nginx     www    www    
worker_processes  8;                     //           

gzip  on;                                //  gzip     
gzip_min_length  1100;
gzip_buffers     4 8k;
gzip_types       text/plain;

    server {
        listen       80;                          //  nginx         80  
        server_name  localhost;                   //     ,  www.baidu.com


        location / {
            root   /www;                           //web        
            index  index.php index.html index.htm; //      
        }


        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           /www;                    //    php        
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        //        flash       1 。
        location ~* ^.+\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            root        /www;
            access_log  off;
            expires     1d;
        }

        //   CSS        1  。
        location ~* ^.+\.(js|css)?$
        {
            root        /www;
            access_log  off;
            expires     1h;
        }

nginx起動スクリプトを作成します.システムサービスとして追加し、電源を入れて自動的に起動するように設定します.スクリプトの内容は次のとおりです.
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# this script create it by jackbillow at 2007.10.15.
# it is v.0.0.2 version.
# if you find any errors on this scripts,please contact jackbillow.
# and send mail to jackbillow at gmail dot com.
#
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
#              It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /usr/local/nginx/logs/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf

nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid

RETVAL=0
prog="nginx"

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -x $nginxd ] || exit 0


# Start nginx daemons functions.
start() {

if [ -e $nginx_pid ];then
   echo "nginx already running...."
   exit 1
fi

   echo -n $"Starting $prog: "
   daemon $nginxd -c ${nginx_config}
   RETVAL=$?
   echo
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
   return $RETVAL

}


# Stop nginx daemons functions.
stop() {
        echo -n $"Stopping $prog: "
        killproc $nginxd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
}


# reload nginx service functions.
reload() {

    echo -n $"Reloading $prog: "
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo

}

# See how we were called.
case "$1" in
start)
        start
        ;;

stop)
        stop
        ;;

reload)
        reload
        ;;

restart)
        stop
        start
        ;;

status)
        status $prog
        RETVAL=$?
        ;;
*)
        echo $"Usage: $prog {start|stop|restart|reload|status|help}"
        exit 1
esac

exit $RETVAL

以上のスクリプトをnginxファイルとして保存し、/etc/initにコピーします.dディレクトリの下.次のコマンドを実行します.
# chmod 755/etc/init.d/nginx設定nginx起動スクリプト実行可能権限#chkconfig--add nginx追加nginxシステムサービス#chkconfig nginx onオープンnginxサービスシステム自動起動#chown-R www:www/usr/local/nginx設定nginxインストールディレクトリ権限所有者と所属グループはwww
[手動でNginxコマンドを起動]#service nginx start
2.MySqlコンパイルインストール
#groupadd mysql mysql作成mysqlユーザーグループ#useradd-g mysql-s/sbin/nologin-M mysql作成mysqlユーザーをmysqlユーザーグループに追加
[./configureコンパイルパラメータ]--prefix=/usr/local/mysql mysqlインストールパス--localstatedir=/var/data DATAデータベースの場所.--with-mysqld-user=mysql mysqlユーザーとしてmysqlデータベースを実行します.--Enable-assemblerは、いくつかの文字関数のアセンブリモード(パフォーマンスの最適化)を使用します.with-big-tablesは、4 Gより大きいデータベースのサポートを有効にします.--with-charset=utf 8データベース符号化文字セット.複数のエンコーディング文字セットの間をカンマで区切ります.--Enable-static静的コンパイルは、クライアントとサービス側を静的にコンパイルし、13%のパフォーマンスを向上させます.--with-client-ldflags=-all-static--with-mysqld-ldflags=-all-static--with-ssl SSLセキュリティ転送プロトコルのサポートを開始します.、--with-embedded-server組み込みサーバの構築--enable-local-infile
#chown-R mysql:mysql/usr/local/mysql MySql関連ディレクトリの権限を設定#cp/usr/local/mysql/share/mysql/my-medium.cnf/usr/local/mysql/my.cnfコピーMySqlを作成するプロファイル#/usr/local/mysql/bin/mysql_install_db--user=mysql mysql初期化データベース#cp/usr/local/mysql/share/mysql/mysqlをmysqlユーザーとして確立する.server/etc/init.d/mysql Mysql起動スクリプトを作成し、実行可能権限#chmod 755/etc/initを設定します.d/mysql#chkconfig--add mysql MySqlをシステムサービスに追加し、起動自動起動に設定します#chkconfig mysql on#service mysql start Mysql#/usr/local/mysql/bin/mysqladmin-u root password 123456 MySqlのrootパスワードを123456に設定します
3.PHPコンパイルインストール
[./configure構成パラメータ]--prefix=/usr/local/php PHPインストールパス--with-config-file-path=/etc PHPプロファイルパス--with-mysql=/usr/local/mysql MySqlインストールパス--with-mysqli=/usr/local/mysql/bin/mysql_configはmysqliのサポートを開始します--enable-fpm--with-fpm-user=www wwwユーザーとしてPHPを実行します--with-fpm-group=www wwwユーザーグループとしてPHPを実行します--with-iconv-dir--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib--with-gd--enable-gd-native-ttf --with-libxml-dir --with-curl --enable-safe-mode --with-xmlrpc --with-openssl --with-mhash --with-mcrypt --enable-bcmath --enable-shmop --enable-sysvsem --with-curlwrappers --enable-mbstring --enable-sockets --enable-magic-quotes --with-pear --enable-sysvshm --enable-zip
[PHPをコンパイルしてインストール]#make ZEND_EXTRA_LIBS='-liconv' # make install # cp php.ini-production/etc/php.ini phpをコピーして修正する.iniプロファイル
[php.iniプロファイルの内容を変更:]
register_globals=Off    register_globals=On            //         
date.timezone = Asia/Shanghai                            //          
zend_optimizer.optimization_level=15                     //  Zend   
zend_extension="/usr/local/Zend/ZendGuardLoader.so"      //Zend       

[php-fpmのプロファイルを作成および変更]
# mv/usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf
変更内容:
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = error
emergency_restart_interval = 3d
user = www
group = www
listen = 127.0.0.1:9000

[php-fpm起動サービススクリプトを作成して追加]#vi/etc/init.d/php-fpm
#!/bin/sh
#chkconfig: - 85 15
#description: php-fpm is PHP FastCGI Process Manage.
#processname:php-fpm


### BEGIN INIT INFO
# Provides:          php-fpm
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO

prefix=/usr/local/php
exec_prefix=${prefix}

php_fpm_BIN=${exec_prefix}/sbin/php-fpm
php_fpm_CONF=${prefix}/etc/php-fpm.conf
php_fpm_PID=${prefix}/var/run/php-fpm.pid


php_opts="--fpm-config $php_fpm_CONF"


wait_for_pid () {
	try=0

	while test $try -lt 35 ; do

		case "$1" in
			'created')
			if [ -f "$2" ] ; then
				try=''
				break
			fi
			;;

			'removed')
			if [ ! -f "$2" ] ; then
				try=''
				break
			fi
			;;
		esac

		echo -n .
		try=`expr $try + 1`
		sleep 1

	done

}

case "$1" in
	start)
		echo -n "Starting php-fpm "

		$php_fpm_BIN $php_opts

		if [ "$?" != 0 ] ; then
			echo " failed"
			exit 1
		fi

		wait_for_pid created $php_fpm_PID

		if [ -n "$try" ] ; then
			echo " failed"
			exit 1
		else
			echo " done"
		fi
	;;

	stop)
		echo -n "Gracefully shutting down php-fpm "

		if [ ! -r $php_fpm_PID ] ; then
			echo "warning, no pid file found - php-fpm is not running ?"
			exit 1
		fi

		kill -QUIT `cat $php_fpm_PID`

		wait_for_pid removed $php_fpm_PID

		if [ -n "$try" ] ; then
			echo " failed. Use force-quit"
			exit 1
		else
			echo " done"
		fi
	;;

	force-quit)
		echo -n "Terminating php-fpm "

		if [ ! -r $php_fpm_PID ] ; then
			echo "warning, no pid file found - php-fpm is not running ?"
			exit 1
		fi

		kill -TERM `cat $php_fpm_PID`

		wait_for_pid removed $php_fpm_PID

		if [ -n "$try" ] ; then
			echo " failed"
			exit 1
		else
			echo " done"
		fi
	;;

	restart)
		$0 stop
		$0 start
	;;

	reload)

		echo -n "Reload service php-fpm "

		if [ ! -r $php_fpm_PID ] ; then
			echo "warning, no pid file found - php-fpm is not running ?"
			exit 1
		fi

		kill -USR2 `cat $php_fpm_PID`

		echo " done"
	;;

	*)
		echo "Usage: $0 {start|stop|force-quit|restart|reload}"
		exit 1
	;;

esac

# chmod 755/etc/init.d/php-fpm#chkconfig--add php-fpm PHPをシステムサービスに追加し、電源を入れて自動的に起動するように設定します#chkconfig php-fpm on#chown-R www:www/usr/local/php PHP関連ファイルディレクトリに権限を設定します
[手動起動PHPコマンド]#service php-fpm start
!サービスが起動できない場合は、システムファイアウォールを閉じます.