msyql5.5x+php5.x+nginx0.8アセンブリ

WBOY
リリース: 2016-06-13 13:09:40
オリジナル
841 人が閲覧しました

msyql5.5x+php5.x+nginx0.8 インストール

元のリンク: http://blog.s135.com/nginx_php_v6/

?

はじめに: この記事は、「Nginx + PHP (FastCGI)」Web サーバーの構築について書いた 6 回目の記事です。このシリーズの記事は、Nginx + PHP のインストール、構成、使用方法を詳細に紹介する中国で最も早い資料の 1 つとして、中国での Nginx の開発を促進する上で積極的な役割を果たしています。この記事は小さいバージョンで常に更新される可能性があります。元のリンク「」を覚えておいてください。 http://blog.s135.com/nginx_php_v6/ " から最新のコンテンツを入手してください。 6 番目の記事では、主に Nginx 0.8.x の新しいスムーズな再起動方法を紹介し、PHP を 5.2.14 にアップグレードし、PEAR の問題を修正します。 さらに、MySQL 5.1.x が 5.5 にアップグレードされます。 .xシリーズでは、設定ファイルが大幅に変更されました

リンク: " 初版、2007 年 9 月 》、《 第 2 版、2007 年 12 月 》、《 第 3 版、2008 年 6 月 》、《 第 4 版、2008 年 8 月 》、《 第 5 版、2009 年 5 月

msyql5.5x+php5.x+nginx0.8アセンブリ

Nginx ? (「エンジン x」) は、高性能 HTTP サーバー、リバース プロキシ サーバー、および IMAP/POP3/SMTP プロキシ サーバーです。 Nginx は、ロシアで 2 番目にアクセス数の多い Rambler.ru サイト用に Igor Sysoev によって開発され、3 年以上運営されています。 Igor は、BSD のようなライセンスに基づいてソース コードをリリースします。

Nginx はパフォーマンスと安定性の点で Apache を上回り、 を含め、Web サーバーとして Nginx を使用する国内 Web サイトが増えています。 新浪ブログ 新浪ポッドキャスト NetEaseニュース テンセントコム 捜狐ブログ ポータル チャネルを待ちます。 6つの部屋 56.com およびその他のビデオ共有 Web サイト、 公式フォーラム 水夢コミュニティ およびその他の有名なフォーラム、 シャンダオンライン 金山Xiaoyao.com およびその他のオンライン ゲーム Web サイト、 豆板 れんれん ユプー写真集 キングソフト ラブワード サンダーオンライン およびその他の新興 Web 2.0 Web サイト。



Nginx の公式中国語 wiki: http://wiki.nginx.org/NginxChs



同時接続が多い場合、Nginx は Apache サーバーの良い代替手段となります。 Nginx は、レイヤー 7 負荷分散サーバーとしても使用できます。私のテスト結果によると、 Nginx 0.8.46 + PHP 5.2.14 (FastCGI) は 30,000 を超える同時接続に耐えることができます。これは、同じ環境における Apache の 10 倍に相当します

私の経験によると、4GB メモリ サーバー + Apache (プリフォーク モード) は、通常、3000 個の同時接続しか処理できません。これは、これらが 3GB 以上のメモリを占有し、システム用に 1GB を予約する必要があるためです。 。 メモリ。以前、2 台の Apache サーバーを使用していましたが、構成ファイルに設定された MaxClients が 4000 だったため、Apache の同時接続数が 3800 に達すると、サーバーのメモリとスワップ領域がいっぱいになり、クラッシュしてしまいました。

そして、この Nginx 0.8.46 + PHP 5.2.14 (FastCGI) サーバーには 30,000 の同時接続があり、開始された 10 個の Nginx プロセスは 150M のメモリ (15M*10=150M) を消費します。 CGI プロセスは 1280M のメモリ (20M*64=1280M) を消費し、これにシステム自体が消費するメモリを加えれば、合計消費量は 2GB 未満になります。サーバーのメモリが小さい場合は、25 個の php-cgi プロセスしか開くことができないため、php-cgi によって消費される合計メモリはわずか 500M になります。

同時接続が 30,000 未満でも、Nginx 0.8.46 + PHP 5.2.14 (FastCGI) サーバーにアクセスする PHP プログラムは依然として非常に高速です。以下の図は、Nginx のステータス監視ページを示しています。表示されているアクティブな接続の数は 28457 です (Nginx の監視ページの構成は、この記事の次に示す Nginx 構成ファイルに記載されています):

msyql5.5x+php5.x+nginx0.8アセンブリ

私の運用環境では、2 つの Nginx + PHP5 (FastCGI) サーバーが複数の一般的に複雑な純粋な PHP 動的プログラムを実行し、1 つの Nginx + PHP5 (FastCGI) サーバーが PHP 動的プログラムを実行します。その能力は「」を超えています。 700 リクエスト/秒 "、これは 1 日あたり 6,000 万 (700*60*60*24=60480000) の訪問に耐えることに相当します ( 詳細はこちら )、サーバーのシステム負荷は高くありません:

msyql5.5x+php5.x+nginx0.8アセンブリ

2009年9月3日午後2時30分より、Kingsoft Gamesの『ソードマンオンライン バージョン3』が1時間一時メンテナンスされます( http://kefu.xoyo.com/gonggao/jx3/2009-09-03/750438.shtml )、多くのプレイヤーが Nginx サーバー クラスターの公式 Web サイト、フォーラム、コメント、カスタマー サービス、その他の動的アプリケーションにアクセスし、サーバーあたりの Nginx アクティブ接続数は 28,000 に達し、これは Nginx 本番環境の最高の同時実行値です。著者が遭遇した環境。

msyql5.5x+php5.x+nginx0.8アセンブリ



以下は、同じサービスを提供する実稼働環境の同じロード バランサー VIP の下にある 2 つのサーバーをそれぞれ 100 個の同時接続を使用して抑制することです。 1 秒あたりに処理されるリクエストの数は Apache の 2 倍以上です。Nginx サーバーのシステム負荷と CPU 使用率は、Apache よりもはるかに低いです。

Nginx および Apache で phpinfo.php を抑制するには、接続数を 10,000 ~ 30,000 に開くことができます。これは、ブラウザを使用して Nginx で phpinfo.php にアクセスする場合、すべてが正常であることを意味します。しかし、Apache サーバー phpinfo.php にアクセスすると、ページが表示されません。 4G メモリを搭載したサーバーの場合、最適化されていても、Apache が「webbench -c 30000 -t 60?」を実行するのは困難です。 http://xxx.xxx.xxx.xxx/phpinfo.php " はプレッシャー下でも通常通りアクセスでき、Nginx はパラメータを調整して最適化するとアクセスできるようになります。

ウェブベンチのダウンロード アドレス: http://blog.s135.com/post/288/

注: Webbench がストレス テストを行う場合、ソフトウェア自体も CPU とメモリ リソースを消費します。正確なテストを行うには、Webbench を別のサーバーにインストールしてください。

テスト結果: ##### Nginx + PHP #####

引用
[root@localhost webbench-1.5]# webbench -c 100 -t 30? http://192.168.1.21/phpinfo.php
Webbench - シンプルな Web ベンチマーク 1.5
著作権 (c) Radim Kolar 1997-2004、GPL オープン ソース ソフトウェア。
​​
ベンチマーク: GET? http://192.168.1.21/phpinfo.php
100 クライアント、30 秒実行

速度=102450ページ/分、16490596バイト/秒
リクエスト: 51225 件が成功、0 件が失敗しました。

トップ - 14:06:13 アップ 27 日、??2:25、??2 ユーザー、??負荷平均: 14.57、9.89、6.51
タスク: 合計 287、?? 4 ランニング、283 睡眠、?? 0 止まった?? 0 ゾンビ
CPU: 49.9% us、??6.7% sy、??0.0% ni、41.4% id、??1.1% wa、??0.1% hi、??0.8% si
メム:??合計 6230016k、??使用済み 2959468k、??無料 3270548k、?? 635992k バッファ
スワップ:??合計 2031608k、???? 3696k 使用、??2027912k 空き、??1231444k キャッシュ



测试结果:###??Apache + PHP #####

引用
[root@localhost webbench-1.5]# webbench -c 100 -t 30? http://192.168.1.27/phpinfo.php
Webbench - シンプルな Web ベンチマーク 1.5
著作権 (c) Radim Kolar 1997-2004、GPL オープン ソース ソフトウェア。
​​
ベンチマーク: GET? http://192.168.1.27/phpinfo.php
100 クライアント、30 秒実行

速度=42184ページ/分、31512914バイト/秒
リクエスト: 21092 件が成功、0 件が失敗しました。

トップ - 27 日 14:06:20、??2:13、??2 ユーザー、??負荷平均: 62.15、26.36、13.42
タスク: 合計 318、?? 7 は走っています、310 は寝ています、?? 0 止まった??ゾンビ 1 体
CPU: 80.4% us、10.6% sy、??0.0% ni、??7.9% id、??0.1% wa、??0.1% hi、??0.9% si
メム:??合計 6230016k、??使用済み 3075948k、??無料 3154068k、?? 379896k バッファ
スワップ:??合計 2031608k、???12592k 使用、??2019016k 空き、??1117868k キャッシュ





必要な Nginx のパフォーマンスは Apache よりも多く得られますか? これにより、Nginx は最新の epoll (Linux 2.6 内核) と kqueue (freebsd) ネットワーク I/O モデルを使用し、Apache を使用して利益を得ています現在、Linux では、Squid と Memcached の両方を受け入れることができ、epoll ネットワーク I/O モデルが採用されています。

大量の接続の書き込みを処理し、Apache で採用されたセレクト ネットワーク I/O モデルは非常に効率が低い。以下では、Apache で採用された select モデルと Nginx で採用された epoll モデルを比較して解析します。间的区:

在大学读书、住的宿舍楼有很多房房間,你的友要来找。select 版宿管大妈就会带着你的友友近傍房間去找,在したがって、epoll 版宿管大楼は、各位の同質の房番号、友人の友人を事前に確認し、その友人が 1 つの房の間に居住していることを報告するだけでよく、自分で着ている友人の友人を報告する必要はありません。 10000 人がこのようなタワーに同時に住んでいる場合、バージョンとエポール バージョンのゲストハウスを選択すると、より高い効率が得られます。 /O は最も時間がかかる操作の 1 つであり、同様に十分に説明されているように、select および epoll のパフォーマンスがより優れています。


安装步骤:
(システム要件:Linux 2.6+ 内核、ここで説明する Linux オペレーティングシステムは CentOS 5.3、RedHat AS4 上でもインストール成功)


一、获取相关开源程序: 1、【CentOSオペレーティングシステム】CentOS Linuxシステムの自带のyumコマンドを利用してインストール、升级に必要なプログラム库(RedHat等その他Linux発行版可以登装光盘中找到这これらプログラム库のRPMパケット) ,行安装):

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 e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers



2. [RedHat オペレーティング システムに適用可能] RedHat およびその他の Linux ディストリビューションは、インストール CD からこれらのライブラリの RPM パッケージを見つけることができます (「rpm -qa | grep などを使用できます)」事前に libjpeg" " コマンドを使用して、必要な RPM パッケージが存在するかどうかを確認します。通常、「xxx-devel」は存在しないため、インストールする必要があります)。 RedHat は、CentOS の RPM パッケージを使用して直接インストールできます。RPM パッケージのダウンロード URL は次のとおりです:
①、RedHat AS4 & CentOS 4
http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/
http://mirrors.163.com/centos/4/os/x86_64/CentOS/RPMS/

②、RedHat AS5 & CentOS 5
http://mirrors.163.com/centos/5/os/i386/CentOS/
http://mirrors.163.com/centos/5/os/x86_64/CentOS/

③、RPMパッケージ検索サイト
http://rpm.pbone.net/
http://www.rpmfind.net/

④、RedHat AS4 システム環境、通常はサポート パッケージのインストールが欠落しています:
Ⅰ、i386系

wget? http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libjpeg-devel-6b-33.i386.rpm
rpm -ivh libjpeg-devel-6b-33.i386.rpm
wget? http://blog.s135.com/soft/linux/nginx_php/rpm/i386/freetype-devel-2.1.9-1.i386.rpm
rpm -ivh freetype-devel-2.1.9-1.i386.rpm
wget? http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libpng-devel-1.2.7-1.i386.rpm
rpm -ivh libpng-devel-1.2.7-1.i386.rpm


Ⅱ、x86_64系

wget? http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libjpeg-devel-6b-33.x86_64.rpm
rpm -ivh libjpeg-devel-6b-33.x86_64.rpm
wget? http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/freetype-devel-2.1.9-1.x86_64.rpm
rpm -ivh freetype-devel-2.1.9-1.x86_64.rpm
wget? http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libpng-devel-1.2.7-1.x86_64.rpm
rpm -ivh libpng-devel-1.2.7-1.x86_64.rpm



3. [CentOS、RedHat、その他の Linux オペレーティング システムに適用可能] プログラム ソース コード パッケージをダウンロードします:
この記事で言及されているすべてのオープンソース ソフトウェアは 時点のものです。 2010 年 7 月 26 日 の最新の安定バージョン。
①. ソフトウェアの公式サイトからダウンロードします:

mkdir -p /data0/software
cd /data0/ソフトウェア
wget? http://sysoev.ru/nginx/nginx-0.8.46.tar.gz
wget? http://www.php.net/get/php-5.2.14.tar.gz/from/this/mirror
wget? http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz
wget? http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.3-m3.tar.gz/from/http://mysql.he.net/
wget? http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"
wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0"
wget? http://pecl.php.net/get/memcache-2.2.5.tgz
wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0"
wget? ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gz
wget? http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
wget? http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
wget? http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
wget? http://pecl.php.net/get/imagick-2.3.0.tgz


②、从 blog.s135.com ダウンロード(比较稳定、只允许本站、または Linux/Unix 経由 Wget、Curl 等コマンド下ダウンロード以下软件):

mkdir -p /data0/software
cd /data0/ソフトウェア
wget? http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.8.46.tar.gz
wget? http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.14.tar.gz
wget? http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.14-fpm-0.5.14.diff.gz
wget? http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gz
wget? http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.1.tar.gz
wget? http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz
wget? http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz
wget? http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz
wget? http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz
wget? http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-8.10.tar.gz
wget? http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
wget? http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz
wget? http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
wget? http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.3.0.tgz




二、インストールPHP 5.2.14(FastCGIモード)
1、インストールPHP 5.2.14に必要なサポート:

tar zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1/
./configure --prefix=/usr/local
作る
インストールを行う
cd ../

tar zxvf libmcrypt-2.5.8.tar.gz?
cd libmcrypt-2.5.8/
./configure
作る
インストールを行う
/sbin/ldconfig
cd libltdl/
./configure --enable-ltdl-install
作る
インストールを行う
cd ../../

tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
作る
インストールを行う
cd ../

ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./configure
作る
インストールを行う
cd ../




2、MySQL 5.5.3-m3 のインストール

/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
tar zxvf mysql-5.5.3-m3.tar.gz
cd mysql-5.5.3-m3/
./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 --with-plugins=partition,innobase,myisammrg
メイク&&メイクインストール
chmod +w /usr/local/webserver/mysql
chown -R mysql:mysql /usr/local/webserver/mysql
cd ../




付: 以下は追加の手順で、この台のサーバーで MySQL データベースを実行する場合は、以下の手順を実行します。PHPMySQL サポート展開を希望する場合のみ、他のサーバーに接続できます。 MySQL データベースの場合は、以下の 2 つの手順を実行する必要はありません。

①、创建MySQLデータベース库存放目录

mkdir -p /data0/mysql/3306/data/
mkdir -p /data0/mysql/3306/binlog/
mkdir -p /data0/mysql/3306/relaylog/
chown -R mysql:mysql /data0/mysql/



②、以mysql用户帐号の身份建立データベース表:

/usr/local/webserver/mysql/bin/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/data0/mysql/3306/data --user=mysql



③、创建my.cnf構成文件:

vi /data0/mysql/3306/my.cnf


以下の内容を入力します:

引用
[クライアント]
文字セットサーバー = utf8
ポート????= 3306
ソケット??= /tmp/mysql.sock

[mysqld]
文字セットサーバー = utf8
レプリケート無視データベース = mysql
レプリケート無視データベース = テスト
レプリケート無視データベース = 情報スキーマ
ユーザー????= mysql
ポート????= 3306
ソケット??= /tmp/mysql.sock
basedir = /usr/local/webserver/mysql
データディレクトリ = /data0/mysql/3306/data
ログエラー = /data0/mysql/3306/mysql_error.log
pid ファイル = /data0/mysql/3306/mysql.pid
open_files_limit??????= 10240
back_log = 600
max_connections = 5000
max_connect_errors = 6000
テーブルキャッシュ = 614
外部ロック = FALSE
max_allowed_pa​​cket = 32M
sort_buffer_size = 1M
join_buffer_size = 1M
スレッドキャッシュサイズ = 300
#thread_concurrency = 8
クエリキャッシュサイズ = 512M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
デフォルトのストレージ エンジン = MyISAM
thread_stack = 192K
transaction_isolation = 読み取りコミット
tmp_table_size = 246M
max_heap_table_size = 246M
long_query_time = 3
ログスレーブ更新
log-bin = /data0/mysql/3306/binlog/binlog
binlog_cache_size = 4M
binlog_format = 混合
max_binlog_cache_size = 8M
max_binlog_size = 1G
リレーログインデックス = /data0/mysql/3306/relaylog/relaylog
リレーログ情報ファイル = /data0/mysql/3306/relaylog/relaylog
リレーログ = /data0/mysql/3306/relaylog/relaylog
期限切れログ日数 = 30
key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
Bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover

インタラクティブタイムアウト = 120
wait_timeout = 120

名前解決をスキップ
#マスター接続再試行 = 10
スレーブスキップエラー = 1032,1062,126,1114,1146,1048,1396

#マスターホスト?? =?? 192.168.1.2
#マスターユーザー???? =??ユーザー名
#マスターパスワード =??パスワード
#マスターポート???? =??3306

サーバー ID = 1

innodb_Additional_mem_pool_size = 16M
innodb_buffer_pool_size = 512M
innodb_data_file_path = ibdata1:256M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0

#log-slow-queries = /data0/mysql/3306/slow.log
#long_query_time = 10

[mysqldump]
早速
max_allowed_pa​​cket = 32M



④、创建管理MySQLデータベース库のシェルスクリプト:

vi /data0/mysql/3306/mysql


以下の内容を入力します(ここの用户名adminと密解12345678次の步骤会创建):

#!/bin/sh

mysql_port=3306
mysql_username="管理者"
mysql_password="12345678"

function_start_mysql()
{
????printf "MySQL を開始しています...n"
????/bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/data0/mysql/${mysql_port}/my.cnf 2>&1> /dev/null &
}

function_stop_mysql()
{
????printf "MySQL を停止しています...n"
????/usr/local/webserver/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock shutdown
}

function_restart_mysql()
{
????printf "MySQL を再起動しています...n"
????function_stop_mysql
????睡眠 5
????function_start_mysql
}

function_kill_mysql()
{
????kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}')
????kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}')
}

if [ "$1" = "開始" ];それから
????function_start_mysql
elif [ "$1" = "停止" ];それから
????function_stop_mysql
elif [ "$1" = "再起動" ];それから
function_restart_mysql
elif [ "$1" = "kill" ];それから
function_kill_mysql
それ以外
????printf "使用法: /data0/mysql/${mysql_port}/mysql {start|stop|restart|kill}n"
ふぃ


⑤、赋予シェルスクリプト可执行权制限:

chmod +x /data0/mysql/3306/mysql



⑥、启アニメーションMySQL:

/data0/mysql/3306/mysql start



⑦. コマンド ラインから MySQL サーバーにログインし、管理します (パスワードの入力を求められたら、直接 Enter キーを押します):

/usr/local/webserver/mysql/bin/mysql -u root -p -S /tmp/mysql.sock



⑧. 次の SQL ステートメントを入力して、root 権限とパスワード (12345678) を持つユーザー (admin) を作成します。

*.* のすべての権限を '12345678' で識別される 'admin'@'localhost' に付与します;
*.* のすべての権限を '12345678' で識別された 'admin'@'127.0.0.1' に付与します;



⑨ (オプション) MySQL を停止します:

/data0/mysql/3306/mysql stop




3. PHP のコンパイルとインストール (FastCGI モード)

tar zxvf php-5.2.14.tar.gz
gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | パッチ -d php-5.2.14 -p1
cd php-5.2.14/
./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 --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap- sasl --with-xmlrpc --enable-zip --enable-soap
make ZEND_EXTRA_LIBS='-liconv'
インストールを行う
cp php.ini-dist /usr/local/webserver/php/etc/php.ini
cd ../




4. PHP5 拡張モジュールをコンパイルしてインストールします

tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
作る
インストールを行う
cd ../

tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1/
/usr/local/webserver/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/webserver/php/bin/php-config
作る
インストールを行う
cd ../

tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/local/webserver/mysql
作る
インストールを行う
cd ../

tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure
作る
インストールを行う
cd ../

tar zxvf imagick-2.3.0.tgz
cd imagick-2.3.0/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
作る
インストールを行う
cd ../



5. php.ini ファイルを変更します
手動変更: /usr/local/webserver/php/etc/php.ini で extension_dir = "./" を探します
extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/" に変更します
この行の後に次の行を追加して保存します。
拡張子 = "memcache.so"
拡張子 = "pdo_mysql.so"
拡張子 = "imagick.so"

次に、output_buffering = Off を探します
Output_buffering = On に変更されました

cgi.fix_pathinfo=0 再検索します。
Nginx ファイル タイプ エラー解析の脆弱性を防ぐために、cgi.fix_pathinfo=0 に変更します。

自動変更: 手動での変更が面倒な場合は、次のシェル コマンドを実行して、php.ini ファイルを自動的に変更できます。

sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"nextension = "memcache. so"nextension = "pdo_mysql.so"nextension = "imagick.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
sed -i "s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g" /usr/local/webserver/php/etc/php.ini
sed -i "s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g" /usr/local/webserver/php/etc/php.ini



6. PHP を高速化するように eAccelerator を設定します:

mkdir -p /usr/local/webserver/eaccelerator_cache
vi /usr/local/webserver/php/etc/php.ini


Shift+G を押して構成ファイルの末尾にジャンプし、次の構成情報を追加します。

引用
[加速器]
zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="64"
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="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"





7. www ユーザーとグループを作成し、blog.s135.com と を提供します。 www.s135.com 2 つの仮想ホストによって使用されるディレクトリ:

/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
mkdir -p /data0/htdocs/blog
chmod +w /data0/htdocs/blog
chown -R www:www /data0/htdocs/blog
mkdir -p /data0/htdocs/www
chmod +w /data0/htdocs/www
chown -R www:www /data0/htdocs/www



8. php-fpm 構成ファイルを作成します (php-fpm は、php-cgi を再起動せずに php.ini 構成をスムーズに変更できる PHP 用の FastCGI 管理パッチです)。 🎜>
/usr/local/webserver/php/etc/ ディレクトリに php-fpm.conf ファイルを作成します。

rm -f /usr/local/webserver/php/etc/php-fpm.conf
vi /usr/local/webserver/php/etc/php-fpm.conf


以下の内容を入力します (プログラムのデバッグ用に Nginx + PHP をインストールする場合は、次の 01 を使用すると、PHP エラー情報が表示されます。それ以外の場合、Nginx はステータス 500 の空のエラー ページを報告します):




??この設定内のすべての相対パスは、php のインストール プレフィックス

に相対しています。 ??

????PID ファイル
????/usr/local/webserver/php/logs/php-fpm.pid

????エラーログファイル
????/usr/local/webserver/php/logs/php-fpm.log値>

????ログレベル
????通知値>

????この量の PHP プロセスが SIGSEGV または SIGBUS で終了すると ...
????10

????...この間隔より短い時間で、グレースフル リスタートが開始されます。
????アクセラレータの共有メモリの偶発的な中断を回避するのに役立ちます。
????1m

????マスターからの信号に対する待機中の子の反応の制限時間
????5s

????fpm をデバッグするには「no」に設定します
????はい

??

??

????

????プールの名前。ログと統計で使用されます。
??????デフォルト値>

??????fastcgi リクエストを受け入れるアドレス。
??????有効な構文は「ip.ad.re.ss:port」、または単に「port」または「/path/to/unix/socket」です
??????127.0.0.1:9000値>

??????

??????????listen(2) バックログを設定します
??????????-1

???????UNIX ソケットが使用されている場合は、そのソケットの権限を設定します。
???????Linux では、Web サーバーからの接続を許可するには、読み取り/書き込み権限を設定する必要があります。
???????多くの BSD 派生システムでは、権限に関係なく接続が許可されます。
??????????
??????????値>
??????????0666
????

????このワーカーのプールに固有の追加の php.ini 定義。
??????
???????/usr/sbin/sendmail -t -i
??????????0
????

??????プロセスの Unix ユーザー
??????www値>

??????プロセスの Unix グループ
??????www値>

??????プロセスマネージャーの設定
??????

??????????ワーカープロセス数を制御するスタイルを設定します。
??????????有効な値は「static」と「Apache-like」です
???????static

??????????処理される同時リクエストの数の制限を設定します。
???????Apache MaxClients ディレクティブと同等です。
???????元の php.fcgi
の PHP_FCGI_CHILDREN 環境に相当 ??????????任意の pm_style で使用されます。
??????????128

??????????「Apache のような」PM スタイルの設定グループ
??????????

??????????起動時に作成されるサーバープロセスの数を設定します。
??????????「Apache のような」pm_style が選択されている場合にのみ使用されます
??????????20

??????????アイドル状態のサーバー プロセスの必要な最小数を設定します。
??????????「Apache のような」pm_style が選択されている場合にのみ使用されます
??????????5

??????????アイドル状態のサーバー プロセスの希望の最大数を設定します。
??????????「Apache のような」pm_style が選択されている場合にのみ使用されます
??????????35

??????????

????

????単一のリクエストを処理するためのタイムアウト (秒単位)。その後ワーカー プロセスが終了します
????「max_execution_time」ini オプションが何らかの理由でスクリプトの実行を停止しない場合に使用する必要があります
??????「0s」は「オフ」を意味します
??????0s値>

????単一リクエストの処理のタイムアウト (秒単位)。その後、php バックトレースがslow.log ファイルにダンプされます
??????「0s」は「オフ」を意味します
??????0s値>

??????遅いリクエストのログ ファイル
??????logs/slow.log

??????オープン ファイルの説明制限を設定します
??????65535値>

??????最大コア サイズ rlimit を設定します
??????0値>

??????最初にこのディレクトリに絶対パスで Chroot します
??????値>

????最初にこのディレクトリへの Chdir、絶対パス
??????値>

????ワーカーの stdout と stderr をメイン エラー ログにリダイレクトします。
??????設定されていない場合、FastCGI 仕様に従って /dev/null にリダイレクトされます
????はい値>

????各プロセスが再生成するまでに実行する必要があるリクエストの数。
????サードパーティ ライブラリのメモリ リークを回避するのに役立ちます。
????無限にリクエストを処理する場合は、0
を指​​定してください ??????PHP_FCGI_MAX_REQUESTS
と同等 ??????1024値>

????接続を許可する FastCGI クライアントの ipv4 アドレスのカンマ区切りリスト。
??????元の php.fcgi (5.2.2+) の FCGI_WEB_SERVER_ADDRS 環境と同等
????AF_INET リスニング ソケットでのみ意味を持ちます。
??????127.0.0.1値>

????LD_LIBRARY_PATH
のような環境変数を渡します ??????すべての $VARIABLE は現在の環境から取得されます
??????
??????????$HOSTNAME
??????????/usr/local/bin:/usr/bin:/bin
??????????/tmp
??????????/tmp
??????????/tmp
??????????$OSTYPE
??????????$MACHTYPE
??????????2値>
????

????

??

9、启アニメーションphp-cgi进程、监听127.0.0.1の9000端口、进程数は128(如果服务器内保存3GB未満、可能只启64个进程)、用户はwww:

ulimit -SHn 65535
/usr/local/webserver/php/sbin/php-fpm start


注:/usr/local/webserver/php/sbin/php-fpm にはその他のパラメータが含まれます:start|stop|quit|restart|reload|logrotate、修正php.ini後不php-cgi を再ロードし、reload を使用して構成ファイルを再追加します。



三、インストールNginx 0.8.46
1、Nginxのインストールに必要なpcre库:

tar zxvf pcre-8.10.tar.gz
cd pcre-8.10/
./configure
メイク&&メイクインストール
cd ../



2、インストールNginx

tar zxvf nginx-0.8.46.tar.gz
cd nginx-0.8.46/
./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
メイク&&メイクインストール
cd ../



3、创建Nginx日志目录

mkdir -p /data1/logs
chmod +w /data1/logs
chown -R www:www /data1/logs



4、创建Nginx構成文件
①、在/usr/local/webserver/nginx/conf/目录中创建nginx.conf文件:

rm -f /usr/local/webserver/nginx/conf/nginx.conf
vi /usr/local/webserver/nginx/conf/nginx.conf


以下の内容を入力します:

引用
ユーザー??www www;

ワーカープロセス 8;

error_log??/data1/logs/nginx_error.log??crit;

pid?????????/usr/local/webserver/nginx/nginx.pid;

#このプロセスで開くことができるファイル記述子の最大値を指定します。?
worker_rlimit_nofile 65535;

イベント?
{
??epoll を使用します;
??worker_connections 65535;
}

http?
{
??含む?????? 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;
??client_max_body_size 8m;
??????
??sendfile オン;
??tcp_nopush????オン;

??keepalive_timeout 60;

??tcp_nodelay オン;

??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 がオン;
??gzip_min_length??1k;
??gzip_buffers??? 4 16k;
??gzip_http_バージョン 1.0;
??gzip_comp_level 2;
??gzip_types?????? text/plain application/x-javascript text/css application/xml;
??gzip_vary on;

??#limit_zone??クローラー??$binary_remote_addr??10m;

??サーバー
??{
????聞く?????? 80;
????サーバー名??blog.s135.com;
????indexindex.htmlindex.htmindex.php;
????root??/data0/htdocs/blog;

????#limit_conn??クローラー??20;????
?????????????????????????????
????場所 ~ .*.(php|php5)?$
????{??????
????#fastcgi_pass??unix:/tmp/php-cgi.sock;
????fastcgi_pass??127.0.0.1:9000;
??????fastcgi_indexindex.php;
??????fcgi.conf を含める;
????}
????
????場所 ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
????{
????有効期限??????30 日;
????}

????場所 ~ .*.(js|css)?$
????{
????有効期限??????1 時間;
????}??????

????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??/data1/logs/access.log??access;
??????}

??サーバー
??{
????聞く?????? 80;
????サーバー名??www.s135.com;
????indexindex.htmlindex.htmindex.php;
????root??/data0/htdocs/www;

????場所 ~ .*.(php|php5)?$
????{??????
????#fastcgi_pass??unix:/tmp/php-cgi.sock;
????fastcgi_pass??127.0.0.1:9000;
??????fastcgi_indexindex.php;
??????fcgi.conf を含める;
????}

????log_format??wwwlogs??'$remote_addr - $remote_user [$time_local] "$request" '
????????????? '$status $body_bytes_sent "$http_referer" '
????????????? '"$http_user_agent" $http_x_forwarded_for';
????access_log??/data1/logs/wwwlogs.log??wwwlogs;
??}

??サーバー
??{
????聞いてください??80;
????server_name??status.blog.s135.com;

????場所 / {
????stub_status オン;
????アクセスログ??オフ;
????}
??}
}



②、在/usr/local/webserver/nginx/conf/目录中创建fcgi.confファイル:

vi /usr/local/webserver/nginx/conf/fcgi.conf


以下の内容を入力します:

引用
fastcgi_param??GATEWAY_INTERFACE??CGI/1.1;
fastcgi_param??SERVER_SOFTWARE????nginx;

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?????????$server_addr;
fastcgi_param??SERVER_PORT?????????$server_port;
fastcgi_param??SERVER_NAME??????????$server_name;

# PHP のみ、PHP が --enable-force-cgi-redirect
でビルドされた場合に必要 fastcgi_param??REDIRECT_STATUS????200;



5、启アニメーションNginx

ulimit -SHn 65535
/usr/local/webserver/nginx/sbin/nginx




四、配置开机自動启动Nginx + PHP

vi /etc/rc.local


在末尾增以下内容:

引用
ulimit -SHn 65535
/usr/local/webserver/php/sbin/php-fpm start
/usr/local/webserver/nginx/sbin/nginx




五、优化Linux内核パラメータ

vi /etc/sysctl.conf


在末尾增以下内容:

引用
# 追加
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog =??32768
net.core.somaxconn = 32768

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800

#net.ipv4.tcp_fin_timeout = 30
#net.ipv4.tcp_keepalive_time = 120
net.ipv4.ip_local_port_range = 1024??65535



使用配置立即生效:

/sbin/sysctl -p




六、Nginx サービスを停止しない状況下平滑変更Nginx 構成
1、修正/usr/local/webserver/nginx/conf/nginx.conf 構成文件後、请执以下命令检查構成文件是否正确:

/usr/local/webserver/nginx/sbin/nginx -t


画面に次の 2 行の情報が表示される場合、構成ファイルは正しいです:
設定ファイル /usr/local/webserver/nginx/conf/nginx.conf の構文は問題ありません
構成ファイル /usr/local/webserver/nginx/conf/nginx.conf は正常にテストされました


2. スムーズな再起動:
①. Nginx 0.8.x バージョンの場合、次のコマンドを実行するだけで、Nginx 設定をスムーズに再起動することが非常に簡単になりました。

/usr/local/webserver/nginx/sbin/nginx -s reload



②. Nginx 0.8.x より前のバージョンの場合、スムーズな再起動は少し面倒です。次のコマンドを入力して、Nginx メイン プロセス番号を表示します:

ps -ef "nginx: マスタープロセス" | grep -v "grep" | ' ' '{print $2}'


画面に表示されるのは、Nginx のメインプロセス番号です。例:
6302
この時点で、次のコマンドを実行して、変更した Nginx 構成ファイルを有効にします:

kill -HUP 6302


または、そんな面倒なことをせずに、Nginx Pid ファイルを見つけます:

kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`




7. Nginx ログを毎日定期的にカットするスクリプトを作成します
1. script/usr/local/webserver/nginx/sbin/cut_nginx_log.sh を作成します

vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh


次のように入力します:

引用
#!/bin/bash
# このスクリプトは 00:00

に実行されます # Nginx ログのパス
logs_path="/usr/local/webserver/nginx/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
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`



2. crontab を設定し、毎朝 00:00 に nginx のアクセスログをカットします

crontab -e


次のように入力します:

引用
00 00 * * * /bin/bash??/usr/local/webserver/nginx/sbin/cut_nginx_log.sh


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート