ホームページ >バックエンド開発 >PHPチュートリアル >CentOS+Nginx+PHP+Mysql(2)(転送)
[yum コマンドを使用して必要なライブラリを構成およびアップグレードする]
# sudo -s
# LANG=C
# yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-develcurlcurl-devel
↑これらのライブラリをインストールしてアップグレードします
[環境に必要なファイルを指定ディレクトリにダウンロードします]
# mkdir -p /software
↑ ルートディレクトリにソフトウェアフォルダーを作成します
# cd /software
↑ ソフトウェアフォルダーに入ります
# wget http://sysoev.ru/nginx/nginx-0.7.19.tar。 gz
# wget http://www.php.net/get/php-5.2.6.tar.gz/from/this/mirror
# wget http://php-fpm.anight.org/downloads/head/ php-5.2 .6-fpm-0.5.9.diff.gz
# wget http://blog.s135.com/soft/linux/mysql/mysql-5.1.26-rc.tar.gz
# wget http: //ftp .gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
# wget http://mirror.optus.net/sourceforge/m/mc/mcrypt/libmcrypt-2.5.8.tar. gz
# wget http://mirror.optus.net/sourceforge/m/mc/mcrypt/mcrypt-2.6.7.tar.gz
# wget http://pecl.php.net/get/memcache-2.2。 3.tgz
# wget http://mirror.optus.net/sourceforge/m/mh/mhash/mhash-0.9.9.tar.gz
# wget ftp://ftp.csx.cam.ac.uk/ pub/software /programming/pcre/pcre-7.7.tar.gz
# wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
↑ これらのファイルをソフトウェアディレクトリ
[PHP 5.2.6に必要なサポートライブラリをコンパイルしてインストールする]
# tar zxvf libiconv-1.12.tar.gz
↑ 解凍(tar) パラメータ(zxvf) ファイル名(libiconv-1.12.tar.gz) )
# cd libiconv -1.12/
↑ 解凍したファイル(libiconv-1.12)のフォルダーを入力します
# ./configure --prefix=/usr/local
↑ インストール情報を設定し、インストールディレクトリを/usr/に指定しますlocal
# make
↑ make インストールファイル
# make install
↑ インストール開始
# cd ../
↑ 上のディレクトリ(ここがソフトウェアディレクトリ)に戻ります
# tar zxvf libmcrypt-2.5.8.tar. gz
# cd libmcrypt-2.5.8 /
# ./configure
# make
# make install
# /sbin/ldconfig
# cd libltdl/
# ./configure --enable-ltdl-install
# make
# make install
# cd http://www.cnblogs.com/
# tar zxvf mhash-0.9.9.tar.gz
# cd mhash-0.9.9/
# ./configure
# make
# make install
# cd ../
# cp /usr/local/lib/libmcrypt.* /usr/lib
# ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so. 2
# tar zxvf mcrypt-2.6 .7.tar.gz
# cd mcrypt-2.6.7/
# ./configure
# make
# make install
# cd ../
[MySQL 5.1 のコンパイルとインストール.26-rc]
# /usr /sbin/groupadd mysql
↑ mysql ユーザー グループを作成します
# /usr/sbin/useradd -g mysql mysql
↑ mysql ユーザー グループに mysql ユーザーを作成します
# tar zxvf mysql -5.1.26-rc.tar.gz
# cd mysql-5.1.26-rc/
# ./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with-extra- charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile
# make && make install
# chmod +w /usr/local/webserver/mysql
# chown -R mysql:mysql /usr/local/webserver/mysql
# cp support-files/my-medium.cnf /usr/local/webserver/mysql/my .cnf
# cd ../
# / usr/local/webserver/mysql/bin/mysql_install_db --defaults-file=/usr/local/webserver/mysql/my.cnf --basedir=/usr/local/ webserver/mysql --datadir=/usr/local/ webserver/mysql/data --user=mysql --pid-file=/usr/local/webserver/mysql/mysql.pid --skip-locking --port=3306 --socket=/tmp/mysql.sock
↑ mysql ユーザー アカウントとしてデータ テーブルを作成します
# /bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/usr/local /webserver/mysql/my.cnf &
↑ MySQL を起動します (最後の & はバックグラウンドで実行することを意味します)
[PHP のコンパイルとインストール (FastCGI モード)]
# tar zxvf php-5.2.6.tar.gz
# gzip -cd php-5.2.6-fpm-0.5.9.diff.gz | patch -d php-5.2.6 -p1
# cd php-5.2.6/
# ./configure --prefix=/usr /local/webserver/php --with-config-file- path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local /webserver/mysql/bin/mysql_config --with-iconv- dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with- libxml-dir=/usr --enable-xml --disable -rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline -optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with- gd --enable-gd-native-ttf --with- openssl
# sed -i 's#-lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt#& -liconv#' Makefile
# make
# make install
# cp php.ini-dist / usr/local/webserver/php/etc/php.ini
# cd ../
[PHP5拡張モジュールのコンパイルとインストール]
# tar zxvf memcache-2.2.3.tgz
# cd memcache-2.2.3/
# /usr/local/webserver/php/bin/phpize
# ./configure --with-php-config=/usr/ local/webserver/php/bin/php-config
# make
# make install
# cd ../
# tar jxvf eaccelerator-0.9.5.3.tar.bz2
# cd eaccelerator-0.9.5.3/
# / usr/local/webserver/php/bin/phpize
# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/webserver/php/bin/php-config
# make
# make install
# cd ../
[php.ini ファイルを変更]
手動変更:
# vi /usr/local/webserver/php/etc/php.ini
Change " extension_dir = "./" "
「 extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/" "
「output_buffering = Off」
を「output_buffering = On」に変更します
extension = "memcache.so"
↑ この行をファイルの最後に追加します
自動変更 (スキップするために手動変更が使用されています):
# sed -i 's#extension_dir = "./"#extension_dir = " /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"nextension = "memcache.so"n#' /usr/local/webserver/php/etc/php.ini
# sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/webserver/php/etc/php.ini
[PHP を高速化するように eAccelerator を設定する]
# mkdir -p /usr/local /webserver/eaccelerator_cache
# vi /usr/local/webserver/php/etc/php.ini
shift+g を押して構成ファイルの末尾にジャンプし、次の構成情報を追加します:
[eaccelerator]
zend_extension= "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="128"
eaccelerator.cache_dir="/usr/local/webserver /eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl=" 300"
eaccelerator.shm_prune_period="120"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
# vi /etc/sysctl.conf
↑ 設定ファイルを変更します
「kernel.shmmax = **********」
を「kernel.shmmax = 134217728」に変更します
# /sbin/sysctl -p
↑ このコマンドを実行して、設定が有効になります
[www ユーザーとグループの作成]
# /usr/sbin/groupadd www -g 48
↑ www ユーザー グループを作成し、グループ ID を 48 に指定します
# /usr/sbin/useradd -u 48 -g www www
↑ www ユーザー グループに www ユーザーを作成します
# mkdir -p /wwwroot
↑ ルート ディレクトリに wwwroot Web サイト ディレクトリを作成します
# chmod +w /wwwroot
↑ wwwroot ディレクトリに書き込み権限を追加します
# chown -R www:www /wwwroot
↑ 使い方 wwwrootディレクトリが所属するユーザーグループはwww、所属するユーザーはwww
[php-fpm設定ファイルの作成]
php-fpmはPHP 用の FastCGI 管理パッチ。php-cgi を再起動せずに php.ini 設定をスムーズに変更できます
# rm -f /usr/local/webserver/php/etc/php-fpm.conf
↑ 元の php-fpm を削除します.conf ファイル
# vi /usr/local/webserver/php/etc/php-fpm.conf
↑ 新しい php-fpm.conf ファイルを作成し、vi エディタを起動してファイルを編集します
次の内容を入力します (注意してください)次の内容の「↑」マーク以降の内容は実際のファイルには表示されません):
xml version="1.0" ?>
この構成内の相対パスはすべて相対パスですPHP のインストール プレフィックスに
Pid file
エラーログファイル
ログレベル
この量の php プロセスが SIGSEGV または SIGBUS で終了したとき...
< value name="emergency_restart_threshold">10
... この間隔より短い時間が経過すると、グレースフル リスタートが開始されます。
アクセラレータの共有メモリの偶発的な中断を回避するのに役立ちます。
マスターからの信号に対する子の反応を待つ時間制限
fpm をデバッグするには「no」に設定します
プールの名前。ログと統計で使用されます。
fastcgi リクエストを受け入れるアドレス。
有効な構文は 'ip.ad.re.ss:port' または単に 'port' です。 ' または '/path/to/unix/socket'
Set listen(2) ) backlog
UNIX ソケットが使用されている場合は、そのアクセス許可を設定します。
Linux では、Web サーバーからの接続を許可するために読み取り/書き込みアクセス許可を設定する必要があります。
多くの BSD 派生システムでは、権限に関係なく接続が許可されています。
このワーカーのプールに固有の追加の php.ini 定義。
↑ 如果インストール Nginx + PHP 用程序调试,则此处应设置PHP 認証情報を表示するために「1」、Nginx セッション状態が 500 の空白の認証ボタン
プロセスの Unix ユーザー
プロセスの Unix グループ
プロセスマネージャー設定
ワーカープロセス数を制御するスタイルを設定します.
有効な値は 'static' と 'Apache-like' です
処理される同時リクエストの数の制限を設定します。
Apache と同等MaxClients ディレクティブ。
元の php.fcgi の PHP_FCGI_CHILDREN 環境に相当します。
任意の pm_style.
↑ 进程数は 64、場合は服务器内に 3GB を超える場合、のみ可能です开启128-200个进程
「Apache のような」pm スタイルの設定グループ
起動時に作成されるサーバープロセスの数を設定します。
「Apache のような」場合にのみ使用されますpm_style が選択されています
アイドル状態のサーバープロセスの必要な最小数を設定します。
「Apache のような」pm_style が選択されている場合にのみ使用されます
「Apache のような」pm_style が選択されている場合にのみ使用されます
ワーカープロセスが終了するまでの単一のリクエストを処理するためのタイムアウト(秒単位)
'max_execution_time' ini オプションがスクリプトの実行を停止しない場合に使用する必要があります何らかの理由で
「0s」は「オフ」を意味します
「0s」は「オフ」を意味します
設定されていない場合、FastCGI 仕様に従って /dev/null にリダイレクトされます
各プロセスが再生成する前に実行するリクエストの数。
サードパーティのライブラリでのメモリ リークを回避するのに役立ちます。
無限のリクエスト処理の場合は、0 を指定してください
PHP_FCGI_MAX_REQUESTS と同等
接続を許可する FastCGI クライアントの ipv4 アドレスのカンマ区切りリスト。
元の php.fcgi (5.2.2 以降) の FCGI_WEB_SERVER_ADDRS 環境と同等
AF_INET リスニング ソケットでのみ意味を持ちます。
LD_LIBRARY_PATH などの環境変数を渡します
すべての $VARIABLE は現在の環境から取得されます
<値の名前="PATH">/usr/local/bin:/usr/bin:/bin値>
<値の名前="TMP">/tmp値> ;
<値名="TMPDIR">/tmp値>
<値名="TEMP">/tmp値>
<値名="OSTYPE">$OSTYPE値>
<値名="MACHTYPE">$MACHTYPE値>
<値名="MALLOC_CHECK_">2値>
値>
セクション>
[启アニメーションphp-cgi进程,监听127.0.0.1の9000端口]
# ulimit -SHn 51200
# /usr/local/webserver/php/sbin/php -fpm start
[Nginx のインストールに必要な pcre库]
# tar zxvf pcre-7.7.tar.gz
# cd pcre-7.7/
# ./configure
# make && make install
# cd ../
[インストールNginx 0.7.19]
# tar zxvf nginx-0.7.19.tar.gz
# cd nginx-0.7.19/
# ./configure --user=www --group=www --prefix =/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
# make
# make install
# cd ../
[创建Nginx日志目录]
# mkdir -p /logs
# chmod +w /logs
# chown -R www:www /logs
[创建nginx.conf構成文件]
# rm -f /usr/local/webserver/nginx/conf/nginx.conf
# vi /usr /local/webserver/nginx/conf/nginx.conf
输入以下内容(请注意以下内容中"↑"标志後の内容は实际文件中に出せない):
user www www;
worker_processes 8;
↑ Nginx每个进程消費10M~12M内存
error_log /logs/nginx_error.log warn;
pid /usr/local/webserver/nginx/nginx.pid;
#開くことができる最大ファイル記述子の値を指定します
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
http
{
include mime.types;
default_type application/octet-stream;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nolayオン;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2 ;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
limit_zone crash $binary_remote_addr 10m;
↑ 特定の「crash」の记录区、容量は 10M、会議の判断基準として $binary_remote_addr、当区の大きさ1M の候時、大记录 32000 個の会議话情報(1 個の会議话占用 32 バイト)
server
{
listen 80;
server_name 222.17.177.205;
indexindex.htmlindex.htm .php;
root /wwwroot ;
#limit_conn crash 5;
↑ *この領域は#コメント済み、つまり、ウェブサイト全体の制限を *定義するものではありません。ここは「クラッシュ」ゾーン内にあり、$binary_remote_addr を会議の判断として使用します。基本基準(すなわち一地址一会话)、制限网站全局目录、一会话能进行5个接続(すなわち一IP只能発行起5个接続、多过5个、一律503错误)
location ~ .*.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_indexindex.php;
include fcgi.conf;
}
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
有効期限 30d;
}
location ~ .*.(js|css)?$
{
有効期限1h;
}
location /resource/ {
limit_conn crash 2;
↑ リソース ディレクトリの制限を定義します。ここで、「クラッシュ」レコード領域では、変数 $binary_remote_addr がセッション (つまり、1 つのアドレスと 1 つのセッション) を判断する基準として使用され、リソース ディレクトリは 2 つの接続のみに制限されています。つまり、1 つの IP は 2 つの接続しか開始できません)、2 つ以上の場合は常に 503 エラーになります)
}
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer " '
'"$http_user_agent" $http_x_forwarded_for ';
access_log /logs/access.log access;
sendfile on;
tcp_nopush on;
client_max_body_size 50m;
↑ Web サイト プログラムでアップロードできる最大サイズは次のとおりです。 50M に設定します。これは nginx の制限のみで、PHP 自体は 2M を制限します
}
}
[fcgi.conf 設定ファイルを作成]
# vi /usr/local/webserver/nginx/conf/fcgi.conf
Enter以下:
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE ngin x;
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 REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $ document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote _port;
fastcgi_param SERVER_ADDR ; --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
# ulimit -SHn 51200
[ Nginx サービスを停止せずに Nginx の設定をスムーズに変更する]
/usr/local/webserver/nginx/conf/nginx.conf 設定ファイルを変更した後、次のコマンドを実行して設定ファイルが正しいかどうかを確認してください:
テストが正常に完了した場合は、次のコマンドを使用して Nginx
を再起動できます(タイプ 1)# pkill nginx# /usr/local/webserver/nginx/conf/ nginx.conf
(タイプ 2)# kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`
# /usr/local/webserver/nginx/conf/nginx.conf
(タイプ 3)# ps -ef | grep "nginx: マスタープロセス" | grep -v "grep" | awk -F ' '{print $2}'
# kill -HUP 番号
↑ この番号は実行後に画面に出力される番号です。前のコマンドの Nginx pid プロセス番号
# /usr/local/webserver/nginx/conf/nginx.conf
画面に次の 2 行の情報が表示されれば、設定ファイルは正しいです:
設定ファイル/usr/local/webserver/nginx/conf /nginx.conf 構文は問題ありません
設定ファイル /usr/local/webserver/nginx/conf/nginx.conf は正常にテストされました
[Nginx + PHP + MySQL を自動的に起動する設定at boot]
# vi /etc/rc.local
/bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/usr/local/ webserver/mysql/my.cnf &
ulimit -SHn 51200 /usr/local/webserver/php/sbin/php-fpm start
/usr/local/webserver/nginx/sbin/nginx
[Linux カーネルパラメータの最適化]
# vi /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4. ip_local_port_range = 5000 65000
# /sbin/sysctl -p
↑ 設定をすぐに有効にします
# vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
次のように入力します:
#!/bin/bash
# このスクリプトは 00:00 に実行されます
# Nginx ログのパス
logs_path="/logs/"
mkdir -p ${logs_path}$(date -d "昨日" +"%Y")/$(date -d "昨日" +"%m")/
mv ${logs_path}access.log ${logs_path}$(date -d "昨日" +"%Y ")/$(date -d "昨日" +"%m")/access_$(date -d "昨日" +"%Y%m%d").log
mv ${logs_path}nginx_error.log ${ logs_path}$(date -d "昨日" +"%Y")/$(date -d "昨日" +"%m")/nginx_error_$(date -d "昨日" +"%Y%m%d" ).log
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`
[ログカットのスケジュールタスクを設定]
# crontab -e
↑ スケジュールタスクリストを編集
以下:
00 00 * * * /bin/bash /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
↑ 毎朝00:00にnginxのアクセスログをカットします