Centos6.5は、LNMPアーキテクチャのWeb環境をコンパイルしてインストールします

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

mysql5.6.17をインストールします####

標準に従って[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 /ディレクトリに戻ります

nginx1.7をインストールします####

nginxに必要な依存関係については、通常、最初にpcreとzlibをインストールする必要があります。前者は書き換え用で、後者はgzip圧縮用です。システムにyumがこれらのライブラリをインストールしている場合は、問題ありません。アンインストールする必要はありません。最新バージョンを直接コンパイルしてインストールするだけです。一度にコンパイルを完了するには、最初に次の依存関係をコンパイルする準備をしてください!

  1. PCREライブラリをインストールする
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
  1. zlibライブラリをインストールします
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
  1. sslをインストールします
コンパイルするかどうかを自由に選択できます
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
tar -zxvf openssl-1.0.1g.tar.gz
  1. ngx_pagespeedライブラリをインストールするngx_pagespeedは、Webサイトを高速化し、ページの読み込み時間を短縮できるNginxの拡張モジュールです。これにより、Webページおよび関連リソース(CSS、JS、および画像)のWebパフォーマンスを向上させるためのいくつかのプラクティスが自動的に適用されます。コンテンツとプロセスを変更します。

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

Centos6.5は、LNMPアーキテクチャのWeb環境をコンパイルしてインストールします
CentOS7はL(A | N)MP環境をコンパイルしてインストールします
CentOS8は、LNMP環境を展開して、mysql8.0.29チュートリアルの詳細をコンパイルおよびインストールします。
CentOs7.3はNginx1.9.9をコンパイルしてインストールします
Centos7はntp-4.2.8p11をコンパイルしてインストールします
CentOS6.9はpythonをコンパイルしてインストールします
CentOS6はpython3をコンパイルしてインストールします
LinuxcentosでLnmpシェルスクリプトをコンパイルしてインストールします
CentOSYumはMySQL5.6をコンパイルしてインストールします
Centos5.2でLAMPをコンパイルしてインストールします
CentOS6.xはNginxをコンパイルしてインストールします
LinuxCentOS6はPytをコンパイルしてインストールします
CentOS7でlibmodbusライブラリをコンパイルしてインストールします
Centos-6.5LNMP環境のインストールと展開
CentOS7.5ソースコードはmysql5.7.29をコンパイルしてインストールします
Centos7はMySQL8問題レコードをコンパイルしてインストールします
Centos8でnodejsとyumをコンパイルしてインストールします
CentOS7.4ソースコードはMySQL8.0をコンパイルしてインストールします
centos7をインストールして接続します
Centos7.4はLNMPをインストールします
CentOS6.7ビルドLNMP環境
Centos6.9インストールnpm環境
Centos7.2は、phpMyAdminをビルドする方法をコンパイルしてインストールします
CentOS7ビルドLNMP環境
CentosはLAMPをコンパイルしてインストールします(apache-2.4.7 + mysql-5.5.35 + php 5.5.8)+ Redis
centos7はpython3とipythonをインストールします
Linuxを理解し、CentOSをインストールする
CentOS 7インストールJAVA環境(JDK 1.8)
CentOS7はMonoとMonoDevelopをインストールします
Ubuntu16.04はPHP7.2をコンパイルしてインストールします
CentOSインストールnginx + tomcat + java + mysqlオペレーティング環境
CentOS6.5はJava8とTomcat8をインストールします
Centos6.5はmongodbをインストールして構成します
CentOS7はpython3とpip3をインストールします
CentOS7はOracleJDKとJREをインストールします
CentOS6.5はJava8とTomcat8をインストールします
CentOS6はJira7をインストールしてクラックします
CentOS6.5はJava8とTomcat8をインストールします
CentOS6のインストールとコンフルエンスのクラック
CentOS6はJira7をインストールしてクラックします
Ubuntu環境でPHPとNginxをコンパイルしてインストールする方法
Centos7インストールjdkおよびパッケージサービスサービス
CentOS7yumはmysqlをインストールして起動します
CentOS5.9でkeepalivedをインストールして構成します
CentOS8インストールGitと基本構成
CentOS7.3はiptablesをインストールして詳細に使用します
CentOSはPython3とpip3をすばやくインストールします
CentOS7yumはmysqlをインストールして起動します
CentOS8-NFSサービスをインストールして構成する
Centos7はopenJdkをアンインストールし、JDK1.8をインストールします
Python3をインストールし、CentOS8でansible
CentOS6.8でdockerをインストールして使用する
centos7でpython3環境を構成し、
CentOS最小限のインストールとTIPSの構成
CentOS7の下にPython3とPyをインストールします
Centos7にFreeIPAをインストールして構成する
UbuntuでQEMUをコンパイルしてインストールします
virtualBoxはcentosをインストールし、tomcatをビルドします
CentOS6.3の下にMono3.2とJexus5.4をインストールします
Ubuntu環境でソースコードからxdebugをコンパイルしてインストールする方法
Centospython3コンパイルインストールとコンパイルgccアップグレード