Webサーバーとして:Apacheと比較して、Nginxはより少ないリソースを使用し、より多くの同時接続をサポートし、より高い効率を反映します。
[負荷分散](https://cloud.tencent.com/product/clb?from=10680)サーバーとして:NginxはRailsとPHPを内部で直接サポートでき、HTTPプロキシサーバーとして外部サービスもサポートできます。 NginxはCで記述されており、システムリソースのオーバーヘッドとCPUの使用効率の点でPerlbalよりもはるかに優れています。
メールプロキシサーバーとして:Nginxは非常に優れたメールプロキシサーバーでもあります(この製品を開発する最初の目的の1つは、メールプロキシサーバーとしても機能します)。Last/ fmは成功した素晴らしい経験を説明しています。
Nginxのインストールは非常に簡単で、構成ファイルは非常に簡潔です(perl構文もサポートできます)。 Nginxは、新しい構成のスムーズなロードをサポートし、サービスを中断することなくソフトウェアバージョンをアップグレードすることもできます。
したがって、LNMPアーキテクチャは非常に人気があり、特にVPSとクラウドホスティングの出現により、LNMPのアーキテクチャの開発と統合がさらに促進されています。php5.4以降、php-fpmメソッドがネイティブにサポートされています。 PHP-FPMはPHPFastCGIマネージャーであり、サードパーティパッケージではなくなりました。PHP-FPMは、PHPプロセスを管理するためのより良い方法を提供します。これにより、メモリとプロセスを効果的に制御でき、spawn-fcgiよりも優れたPHP構成をスムーズにリロードできます。より多くの利点があります。
準備オーケー:
centos6.5のインストールを最小限に抑える
保存するパッケージディレクトリを作成します
mkdir -p /usr/local/src/
インストールされたパッケージをクリーンアップします
rpm -e httpd
rpm -e mysql
rpm -e php
yum -y remove httpd
yum -y remove mysql
yum -y remove php
# apacheパッケージを検索
rpm -qa http*
# apacheパッケージを強制的にアンインストールします
rpm -e --nodepsによって照会されたファイル名
# アンインストールがクリーンかどうかを確認します
rpm -qa|grep http*
selinuxを使用すると、コンパイルとインストールが失敗する場合があります。最初に無効にしてみましょう。完全に無効になっています。有効にするには再起動する必要があります
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config
一時的に無効にし、 setenforce0
を再起動する必要はありません
必要なツールをインストールする
yum -y install make gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap lsof
標準に従って[mysql](https://cloud.tencent.com/product/cdb?from=10680)のユーザーとユーザーグループを作成します
グループを作成
groupadd mysql
ユーザーを作成し、ログインを許可せず、ホームディレクトリを作成しない
useradd -s /sbin/nologin -g mysql -M mysql
作成したユーザーを確認する
tail -1/etc/passwd
centosの最小限のインストール後、mysqlライブラリが存在するため、最初にアンインストールしてください。
インストールを確認してください
rpm -qa|grep mysql
強制アンインストール
rpm -e mysql-libs-5.1.73-3.el6_5.x86_64 --nodeps
MySQLのバージョン5.5以降、。/ configureを使用したコンパイルと構成の方法はキャンセルされ、cmakeツールに置き換えられました。したがって、最初にcmakeツールをコンパイルしてシステムにインストールする必要があります。
wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
tar zxvf cmake-2.8.12.2.tar.gz
cd cmake-2.8.12.2./configure
make && make install
cmakeを使用してmysql5.6.17をコンパイルおよびインストールします
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.17.tar.gz
tar zxvf mysql-5.6.17.tar.gz
cd mysql-5.6.17
cmake \
- DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
- DMYSQL_DATADIR=/usr/local/mysql/data \
- DSYSCONFDIR=/etc \
- DWITH_MYISAM_STORAGE_ENGINE=1 \
- DWITH_INNOBASE_STORAGE_ENGINE=1 \
- DWITH_MEMORY_STORAGE_ENGINE=1 \
- DWITH_READLINE=1 \
- DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
- DMYSQL_TCP_PORT=3306 \
- DENABLED_LOCAL_INFILE=1 \
- DWITH_PARTITION_STORAGE_ENGINE=1 \
- DEXTRA_CHARSETS=all \
- DDEFAULT_CHARSET=utf8 \
- DDEFAULT_COLLATION=utf8_general_ci \
- DMYSQL_USER=mysql \
- DWITH_DEBUG=0 \
- DWITH_SSL=system
make && make install
/ usr / local / mysql権限を変更します
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
my.cnf構成ファイルについて:
MySQLサービスを開始すると、my.cnfが特定の順序で検索され、最初に/ etcディレクトリで検索されます。見つからない場合は、インストールディレクトリ/ usr / local / mysql / myである「$ basedir /my.cnf」が検索されます。 cnf、これは新しいバージョンのMySQLの構成ファイルのデフォルトの場所です。注:CentOS 6.xオペレーティングシステムの最小インストールが完了すると、/ etcディレクトリにmy.cnfが作成されるため、このファイルの名前を別の名前に変更する必要があります。 /etc/my.cnf.bakなど。そうしないと、このファイルがソースコードからインストールされたMySQLの正しい構成に干渉し、起動に失敗します。最小限のインストールが完了した後にmysqライブラリをアンインストールしたので、操作する必要はありません。
support-filesディレクトリに入る
cd support-files/
私がいたら.cnfバックアップしてください
mv /etc/my.cnf /etc/my.cnf.bak
必要に応じて、構成ファイルをetcにコピーすることもできます。
cp my-default.cnf /etc/my.cnf
初期構成スクリプトを実行し、システムに付属するデータベースとテーブルを作成し、構成ファイルのパスに注意します。
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
MySQLインストールディレクトリのsupport-filesサービススクリプトをinit.dディレクトリにコピーします
# スクリプトをコピーする
cp support-files/mysql.server /etc/init.d/mysqld
# 権限を付与する
chmod +x /etc/init.d/mysqld
起動を設定する
chkconfig mysqld on
MySQLを起動します
service mysqld start
または
/etc/init.d/mysql start
MySQL5.6.xが正常に起動された後、rootにはデフォルトでパスワードがないため、rootパスワードを設定する必要があります。設定する前に、最初にPATHを設定する必要があります。そうしないと、mysqlを直接呼び出すことができません。
変更する/etc/プロファイルファイル
vi /etc/profile
ファイルの最後に追加
PATH=/usr/local/mysql/bin:$PATH
export PATH
構成をすぐに有効にする
source /etc/profile
ログインテスト。デフォルトはパスワードなしです。Enterキーを押して直接入力できます。
mysql -uroot -p
mysqlパスワードを設定します
/usr/local/mysql/bin/mysqladmin -uroot -p password 'あなたのパスワード'
コマンドラインモードにログインします
mysql -uroot -p
ユーザーを表示
select user,host from mysql.user;
不要なユーザーを削除する
drop user ""@localhost;
drop user ""@c65mini.localdomain;
drop user [email protected];
drop user root@'::1';
アカウントにリモートアクセス許可を付与する
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'あなたのパスワード' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'あなたのパスワード' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'c65mini.localdomain' IDENTIFIED BY 'あなたのパスワード' WITH GRANT OPTION;
MySQLのデフォルトのrootユーザー参照の削除について:http://blog.chinaunix.net/uid-16844903-id-3377690.html
その他の情報クエリ:mysqlのバージョンを確認してください
mysql -uroot -p"パスワード"-e "select version();"
mysqlのインストールパスを確認します
ls -ld /usr/local/mysql/
PHP5.5.12をインストールします
依存関係をインストールする
libiconvライブラリは、ある文字コードから別の文字コードへの変換を実装するために変換する必要があるアプリケーションにiconv()関数を提供します。エラーメッセージ:configure:error:iconvライブラリを再インストールしてください。
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14./configure --prefix=/usr/local/libiconv
make && make install
cd ..
libmcryptは、暗号化アルゴリズムの拡張ライブラリです。エラープロンプト:configure:エラー:imapライブラリ(libc-client.a)が見つかりません。c-clientのインストールを確認してください。
wget http://iweb.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8./configure
make && make install
cd ..
Mhashは、離散数学の原理に基づく不可逆的なPHP暗号化拡張ライブラリであり、デフォルトでは有効になっていません。 mhashを使用して、チェック値、メッセージダイジェスト、メッセージ認証コードを作成し、元のテキストなしでキー情報を保存できます。エラープロンプト:configure:error: "このプログラムをコンパイルするには、少なくともlibmhash 0.8.15が必要です。http:// mhash .sf.net / "
wget http://hivelocity.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2
tar jxvf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9./configure
make && make install
cd ..
mcryptは、phpの重要な暗号化サポート拡張ライブラリです。Mcrypt拡張ライブラリは、暗号化および復号化機能を実装できます。つまり、プレーンテキストの暗号化と暗号化テキストの復元の両方を実行できます。
wget http://iweb.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8./configure
make && make install
cd ..
mcryptをコンパイルすると、エラーが報告される場合があります:configure:error:*** libmcryptが見つかりませんでした
vi /etc/ld.so.conf
最後の行に追加
/usr/local/lib/
読み込み中
ldconfig
mcryptをコンパイルすると、エラーが報告される場合があります:/ bin / rm: `libtoolT 'を削除できません:そのようなファイルまたはディレクトリはありません
構成ファイルを変更し、RMを配置します='$RM'RMに変更='$RM -f'ここに$RMの後にスペースが必要です。その後にスペースがなく、マイナス記号が直接接続されている場合でも、エラーが報告されます。
公式にphpのコンパイルを開始します!
wget http://mirrors.sohu.com/php/php-5.5.12.tar.gz
tar zxvf php-5.5.12.tar.gz
cd php-5.5.12./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts
make && make install
fpm構成を変更しますphp-fpm.conf.defaultファイル名
mv /usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf
php.ini構成ファイルをコピーします
cp php.ini-production /usr/local/php/etc/php.ini
php-fpm起動スクリプトをinit.dにコピーします
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
実行権限を付与する
chmod +x /etc/init.d/php-fpm
スタートアップアイテムとして追加
chkconfig --add php-fpm
起動を設定する
chkconfig php-fpm on
標準に従って、php-fpm用に指定されたユーザーとグループを作成します
グループを作成
groupadd www
ユーザーを作成し、ログインを許可せず、ホームディレクトリを作成しない
useradd -s /sbin/nologin -g www -M www
php-fpmをすぐに開始します
service php-fpm start
# または
/etc/init.d/php-fpm start
/ usr / local / src /ディレクトリに戻ります
nginxに必要な依存関係については、通常、最初にpcreとzlibをインストールする必要があります。前者は書き換え用で、後者はgzip圧縮用です。システムにyumがこれらのライブラリをインストールしている場合は、問題ありません。アンインストールする必要はありません。最新バージョンを直接コンパイルしてインストールするだけです。一度にコンパイルを完了するには、最初に次の依存関係をコンパイルする準備をしてください!
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.35.tar.gz
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35./configure
make && make install
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8./configure
make && make install
コンパイルするかどうかを自由に選択できます
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
tar -zxvf openssl-1.0.1g.tar.gz
Googleによると、ngx_pagespeedモジュールは、CDNプロバイダーMaxCDNを含む一部の顧客によって実稼働環境で使用されています。そのレポートによると、このモジュールは平均ページ読み込み時間を1.57秒、バウンス率を1%短縮し、終了します。割合は2.5%低下しました」。 WordPressのホスティングプロバイダーであるZippyKidは、NGINXのPageSpeedを使用した後、「ページサイズが75%削減され、ページのレンダリング時間が50%増加した」と述べています。
wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.8.31.2-beta.zip
unzip v1.8.31.2-beta.zip
cd ngx_pagespeed-1.8.31.2-beta/
wget https://dl.google.com/dl/page-speed/psol/1.8.31.2.tar.gz
tar -xzvf 1.8.31.2.tar.gz
5、 google-perftoolsが提供するTCMallocツールを使用して、nginxとmysqlを最適化します
TCMalloc(google-perftools)は、C ++で記述されたマルチスレッドアプリケーションを最適化するために使用されます。これはglibc2.3mallocよりも高速です。このモジュールを使用すると、高い同時実行性の下でMySQLのメモリ使用量をより安定させることができます。
TCMallocは、google-perftoolsのツールの1つであり、メモリ割り当ての効率と速度を最適化し、同時実行性の高い状況でメモリの使用を制御するために使用されます。
mysqlおよびnginxパフォーマンス最適化ソリューションでは、ほとんどのチュートリアルでgoogle-perftoolsが提供するTCMallocツールを使用します。TCMallocは、メモリ割り当てにおいてmallocよりもはるかに効率的で高速です。
エラープロンプト:configure:エラー:フレームポインタもlibunwindもありません。libunwindライブラリをインストールせずにgperftoolsのコンパイルを開始したため、コンパイルが失敗するため、最初にlibunwindを実行する必要があります。
wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz
tar zxvf libunwind-1.1.tar.gz
cd libunwind-1.1
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install
公式の指示に従って、最新バージョンを選択する必要があります。
wget https://googledrive.com/host/0B6NtGsLhIcf7MWxMMF9JdTN3UVk/gperftools-2.2.tar.gz
tar zxvf gperftools-2.2.tar.gz
cd gperftools-2.2./configure
make && make install
準備が完了しました。nginxのインストールを開始してください。 、先ほど作成したライブラリ関係をここに追加しますので、パスに注意してください!
wget http://nginx.org/download/nginx-1.7.0.tar.gz
tar zxvf nginx-1.7.0.tar.gz
cd nginx-1.7.0./configure \
- - user=www \
- - group=www \
- - prefix=/usr/local/nginx \
- - with-http_stub_status_module \
- - with-http_ssl_module \
- - with-http_gzip_static_module \
- - with-pcre=/usr/local/src/pcre-8.35 \
- - with-zlib=/usr/local/src/zlib-1.2.8 \
- - with-openssl=/usr/local/src/openssl-1.0.1g \
- - add-module=/usr/local/src/ngx_pagespeed-1.8.31.2-beta \
- - with-google_perftools_module
cd ..
6、 nginx.conf構成ファイルを変更します
サーバーブロックでngx_pagespeedモジュールを開きます
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
location ~".pagespeed.([a-z].)?[a-z]{2}.[^.]{10}.[^.]+"{ add_header """";}
location ~"^/ngx_pagespeed_static/"{}
location ~"^/ngx_pagespeed_beacon$"{}
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all;}
location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all;}
location /ngx_pagespeed_message { allow 127.0.0.1; deny all;}
location /pagespeed_console { allow 127.0.0.1; deny all;}
google_perftoolsチューニングサポートを有効にする
# 最初にtmpにtcmallocを作成します
mkdir /tmp/tcmalloc
# 権限を付与する
chmod 0777/tmp/tcmalloc/
# 通常、pidの下に追加します
google_perftools_profiles /tmp/tcmalloc;
# 再起動する必要があり、時間内に構成をロードしても有効になりません。nginx起動再起動スクリプトの下にあります。
service nginx restart
tcmallocの実行ステータスを確認します。これは、worker_processesを1つだけ開いた場合の影響です。
[ root@bin2aliyun ~]# lsof -n|grep tcmalloc
nginx 24471 www 16w REG 202,10821485/tmp/tcmalloc/.24471
TCMalloc(google-perftools)を使用すると、高い同時実行性でのメモリ使用量に関してMySQLをより安定させることができます。
mysqldで_安全なスクリプトファイルが参加し始めました
vi /usr/local/mysql/bin/mysqld_safe
LD_PRELOAD="/usr/local/lib/libtcmalloc.so"
service mysql restart
xcacheを使用してphpのパフォーマンスを最適化します。
wget http://xcache.lighttpd.net/pub/Releases/3.1.0/xcache-3.1.0.tar.gz
tar zxvf xcache-3.1.0.tar.gz
cd xcache-3.1.0/usr/local/php/bin/phpize
. /configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make && make install
xcacheビューアをWebサイトディレクトリにコピーします
cp htdocs//home/wwwroot/htdocs/xcache -rf
cat >>/usr/local/php/etc/php.ini<<EOF
[ xcache-common];パスに注意してください
extension =/usr/local/php/lib/php/extensions/no-debug-zts-20121212/xcache.so
[ xcache.admin]
xcache.admin.enable_auth = on
xcache.admin.user ="admin"
xcache.admin.pass ="e10adc3949ba59abbe56e057f20f883e";実行: echo -n "password"|md5sum |awk '{print $1}'MD5暗号化パスワードを計算します
; xcacheを置き換えます.admin.pass=の値
[ xcache]
xcache.shm_scheme ="mmap"
xcache.size = 64M
xcache.count =1
xcache.slots = 8K
xcache.ttl =3600
xcache.gc_interval =60
xcache.var_size = 16M
xcache.var_count =1
xcache.var_slots = 8K
xcache.var_ttl =3600
xcache.var_maxttl =0
xcache.var_gc_interval =300
xcache.readonly_protection = Off
xcache.mmap_path ="/dev/zero"
xcache.coredump_directory ="/tmp/phpcore"
xcache.coredump_type =0
xcache.disable_on_crash = Off
xcache.experimental = Off
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[ xcache.coverager]
xcache.coverager = Off
xcache.coverager_autostart = On
xcache.coveragedump_directory ="/tmp/pcov"
EOF
phpmyadminをインストールします
wget http://iweb.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.2.2/phpMyAdmin-4.2.2-all-languages.tar.gz
tar zxvf phpMyAdmin-4.2.2-all-languages.tar.gz
mv phpMyAdmin-4.2.2-all-languages phpmyadmin
cd phpMyAdmin
mkdir config
chmod o+rw config
mv config/config.inc.php config.inc.php
chmod o-rw config.inc.php
rm -rf config
nginxの再起動、開始、スクリプトのロード
vi /etc/init.d/nginx
#! /bin/sh
#
# nginx -this script starts and stops the nginx daemon
#
# chkconfig:-8515
# description: Nginx is an HTTP(S) server,HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config:/etc/nginx/nginx.conf
# config:/etc/sysconfig/nginx
# pidfile:/var/run/nginx.pid
# Source function library../etc/rc.d/init.d/functions
# Source networking configuration../etc/sysconfig/network
# Check that networking is up.["$NETWORKING"="no"]&& exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
sysconfig="/etc/sysconfig/$prog"
lockfile="/var/lock/subsys/nginx"
pidfile="/usr/local/nginx/logs/nginx.pid"
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"[-f $sysconfig ]&&. $sysconfig
start(){[-x $nginx ]|| exit 5[-f $NGINX_CONF_FILE ]|| exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0]&& touch $lockfile
return $retval
} stop(){
echo -n $"Stopping $prog: "
killproc -p $pidfile $prog
retval=$?
echo
[ $retval -eq 0]&& rm -f $lockfile
return $retval
} restart(){
configtest_q ||return6
stop
start
} reload(){
configtest_q ||return6
echo -n $"Reloading $prog: "
killproc -p $pidfile $prog -HUP
echo
} configtest(){
$nginx -t -c $NGINX_CONF_FILE
} configtest_q(){
$nginx -t -q -c $NGINX_CONF_FILE
} rh_status(){
status $prog
} rh_status_q(){
rh_status >/dev/null2>&1}
# Upgrade the binary with no downtime.upgrade(){
local oldbin_pidfile="${pidfile}.oldbin"
configtest_q ||return6
echo -n $"Upgrading $prog: "
killproc -p $pidfile $prog -USR2
retval=$?
sleep 1if[[-f ${oldbin_pidfile}&&-f ${pidfile}]]; then
killproc -p $oldbin_pidfile $prog -QUIT
success $"$prog online upgrade"
echo
return0else
failure $"$prog online upgrade"
echo
return1
fi
}
# Tell nginx to reopen logs
reopen_logs(){
configtest_q ||return6
echo -n $"Reopening $prog logs: "
killproc -p $pidfile $prog -USR1
retval=$?
echo
return $retval
} case"$1"in
start)
rh_status_q && exit 0
$1;;
stop)
rh_status_q || exit 0
$1;;
restart|configtest|reopen_logs)
$1;;
force-reload|upgrade)
rh_status_q || exit 7
upgrade
;;
reload)
rh_status_q || exit 7
$1;;
status|status_q)
rh_$1;;
condrestart|try-restart)
rh_status_q || exit 7
restart
;;*)
echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs}"
exit 2
esac
実行権限を付与する必要があることに注意してください:chmod + x /etc/init.d/nginx
最適化されたnginx.cnf構成ファイル
user www www;
worker_processes 1;
error_log /home/wwwlogs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
google_perftools_profiles /tmp/tcmalloc;
# Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
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 256k;
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;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
# limit_zone crawler $binary_remote_addr 10m;
server_tokens off;
# log format
log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
server
{
listen 80;
server_name www.cnhzz.com;
index index.html index.htm index.php;
root /home/wwwroot/htdocs;
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 /status {
stub_status on;
access_log off;}
location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;}
location ~.*\.(js|css)?$
{
expires 12h;}
access_log /home/wwwlogs/access.log access;}
include vhost/*.conf;
}
必要に応じて、仮想ホスト用のngx_pagespeedgoogle_perftoolsを追加しました
log_format www.cnhzz.com '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
server
{
listen 80;
server_name www.cnhzz.com cnhzz.com;if($host !='www.cnhzz.com'){
rewrite ^/(.*)$ http://www.cnhzz.com/$1 permanent;}
index index.php index.html index.htm;
root /home/wwwroot/www.cnhzz.com;
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
log_format www.cnhzz.com '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
server
{
listen 80;
server_name www.cnhzz.com cnhzz.com;if($host !='www.cnhzz.com'){
rewrite ^/(.*)$ http://www.cnhzz.com/$1 permanent;}
index index.php index.html index.htm;
root /home/wwwroot/www.cnhzz.com;
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
location ~"\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+"{ add_header """";}
location ~"^/ngx_pagespeed_static/"{}
location ~"^/ngx_pagespeed_beacon$"{}
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all;}
location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all;}
location /ngx_pagespeed_message { allow 127.0.0.1; deny all;}
location /pagespeed_console { allow 127.0.0.1; deny all;}
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 ~.*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;}
location ~.*\.(js|css)?$
{
expires 12h;}
access_log /home/wwwlogs/www.cnhzz.com.log www.cnhzz.com;}
php-fpmの最適化。fpmプロセスは約20Mであり、私のマシンはメモリの少ないクラウドホストなので、2つ開くだけです。メモリが大きい場合は、状況に応じて変換されます。
vi php-fpm.conf
pm = dynamic
pm.max_children =20
pm.start_servers =2
pm.min_spare_servers =1
pm.max_spare_servers =6
request_terminate_timeout =100
Recommended Posts