msyql5.5x+php5.x+nginx0.8アセンブリ
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 月
》
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 構成ファイルに記載されています):
私の運用環境では、2 つの Nginx + PHP5 (FastCGI) サーバーが複数の一般的に複雑な純粋な PHP 動的プログラムを実行し、1 つの Nginx + PHP5 (FastCGI) サーバーが PHP 動的プログラムを実行します。その能力は「」を超えています。
700 リクエスト/秒
"、これは 1 日あたり 6,000 万 (700*60*60*24=60480000) の訪問に耐えることに相当します (
詳細はこちら
)、サーバーのシステム負荷は高くありません:
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 本番環境の最高の同時実行値です。著者が遭遇した環境。
以下は、同じサービスを提供する実稼働環境の同じロード バランサー 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 #####
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 #####
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パケット) ,行安装):
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系
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系
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 日
の最新の安定バージョン。
①. ソフトウェアの公式サイトからダウンロードします:
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 等コマンド下ダウンロード以下软件):
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に必要なサポート:
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/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/relaylog/
chown -R mysql:mysql /data0/mysql/
②、以mysql用户帐号の身份建立データベース表:
③、创建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_packet = 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_packet = 32M
④、创建管理MySQLデータベース库のシェルスクリプト:
以下の内容を入力します(ここの用户名adminと密解12345678次の步骤会创建):
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"
ふぃ
⑤、赋予シェルスクリプト可执行权制限:
⑥、启アニメーションMySQL:
⑦. コマンド ラインから MySQL サーバーにログインし、管理します (パスワードの入力を求められたら、直接 Enter キーを押します):
⑧. 次の SQL ステートメントを入力して、root 権限とパスワード (12345678) を持つユーザー (admin) を作成します。
⑨ (オプション) MySQL を停止します:
3. PHP のコンパイルとインストール (FastCGI モード)
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 拡張モジュールをコンパイルしてインストールします
/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#; 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 を設定します:
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/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 ファイルを作成します。
以下の内容を入力します (プログラムのデバッグ用に Nginx + PHP をインストールする場合は、次の
??この設定内のすべての相対パスは、php のインストール プレフィックス
に相対しています。 ??
????PID ファイル
????
????エラーログファイル
????/usr/local/webserver/php/logs/php-fpm.log値>
????ログレベル
????通知値>
????この量の PHP プロセスが SIGSEGV または SIGBUS で終了すると ...
????
????...この間隔より短い時間で、グレースフル リスタートが開始されます。
????アクセラレータの共有メモリの偶発的な中断を回避するのに役立ちます。
????
????マスターからの信号に対する待機中の子の反応の制限時間
????
????fpm をデバッグするには「no」に設定します
????
??
??
????
????プールの名前。ログと統計で使用されます。
??????デフォルト値>
??????fastcgi リクエストを受け入れるアドレス。
??????有効な構文は「ip.ad.re.ss:port」、または単に「port」または「/path/to/unix/socket」です
??????127.0.0.1:9000値>
??????
??????????listen(2) バックログを設定します
??????????
???????UNIX ソケットが使用されている場合は、そのソケットの権限を設定します。
???????Linux では、Web サーバーからの接続を許可するには、読み取り/書き込み権限を設定する必要があります。
???????多くの BSD 派生システムでは、権限に関係なく接続が許可されます。
??????????
??????????値>
??????????
????
????このワーカーのプールに固有の追加の php.ini 定義。
??????
???????
??????????
????
??????プロセスの Unix ユーザー
??????www値>
??????プロセスの Unix グループ
??????www値>
??????プロセスマネージャーの設定
??????
??????????ワーカープロセス数を制御するスタイルを設定します。
??????????有効な値は「static」と「Apache-like」です
???????
??????????処理される同時リクエストの数の制限を設定します。
???????Apache MaxClients ディレクティブと同等です。
???????元の php.fcgi
の PHP_FCGI_CHILDREN 環境に相当 ??????????任意の pm_style で使用されます。
??????????
??????????「Apache のような」PM スタイルの設定グループ
??????????
??????????起動時に作成されるサーバープロセスの数を設定します。
??????????「Apache のような」pm_style が選択されている場合にのみ使用されます
??????????
??????????アイドル状態のサーバー プロセスの必要な最小数を設定します。
??????????「Apache のような」pm_style が選択されている場合にのみ使用されます
??????????
??????????アイドル状態のサーバー プロセスの希望の最大数を設定します。
??????????「Apache のような」pm_style が選択されている場合にのみ使用されます
??????????
??????????
????
????単一のリクエストを処理するためのタイムアウト (秒単位)。その後ワーカー プロセスが終了します
????「max_execution_time」ini オプションが何らかの理由でスクリプトの実行を停止しない場合に使用する必要があります
??????「0s」は「オフ」を意味します
??????0s値>
????単一リクエストの処理のタイムアウト (秒単位)。その後、php バックトレースがslow.log ファイルにダンプされます
??????「0s」は「オフ」を意味します
??????0s値>
??????遅いリクエストのログ ファイル
??????
??????オープン ファイルの説明制限を設定します
??????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 は現在の環境から取得されます
??????
??????????
??????????
??????????
??????????
??????????
??????????
??????????
??????????2値>
????
????
??
9、启アニメーションphp-cgi进程、监听127.0.0.1の9000端口、进程数は128(如果服务器内保存3GB未満、可能只启64个进程)、用户はwww:
/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库:
cd pcre-8.10/
./configure
メイク&&メイクインストール
cd ../
2、インストールNginx
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日志目录
chmod +w /data1/logs
chown -R www:www /data1/logs
4、创建Nginx構成文件
①、在/usr/local/webserver/nginx/conf/目录中创建nginx.conf文件:
vi /usr/local/webserver/nginx/conf/nginx.conf
以下の内容を入力します:
ワーカープロセス 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ファイル:
以下の内容を入力します:
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
/usr/local/webserver/nginx/sbin/nginx
四、配置开机自動启动Nginx + PHP
在末尾增以下内容:
/usr/local/webserver/php/sbin/php-fpm start
/usr/local/webserver/nginx/sbin/nginx
五、优化Linux内核パラメータ
在末尾增以下内容:
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
使用配置立即生效:
六、Nginx サービスを停止しない状況下平滑変更Nginx 構成
1、修正/usr/local/webserver/nginx/conf/nginx.conf 構成文件後、请执以下命令检查構成文件是否正确:
画面に次の 2 行の情報が表示される場合、構成ファイルは正しいです:
設定ファイル /usr/local/webserver/nginx/conf/nginx.conf の構文は問題ありません
構成ファイル /usr/local/webserver/nginx/conf/nginx.conf は正常にテストされました
2. スムーズな再起動:
①. Nginx 0.8.x バージョンの場合、次のコマンドを実行するだけで、Nginx 設定をスムーズに再起動することが非常に簡単になりました。
②. Nginx 0.8.x より前のバージョンの場合、スムーズな再起動は少し面倒です。次のコマンドを入力して、Nginx メイン プロセス番号を表示します:
画面に表示されるのは、Nginx のメインプロセス番号です。例:
6302
この時点で、次のコマンドを実行して、変更した Nginx 構成ファイルを有効にします:
または、そんな面倒なことをせずに、Nginx Pid ファイルを見つけます:
7. Nginx ログを毎日定期的にカットするスクリプトを作成します
1. script/usr/local/webserver/nginx/sbin/cut_nginx_log.sh を作成します
次のように入力します:
に実行されます # 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 のアクセスログをカットします
次のように入力します:

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

データ統合の簡素化:AmazonrdsmysqlとRedshiftのゼロETL統合効率的なデータ統合は、データ駆動型組織の中心にあります。従来のETL(抽出、変換、負荷)プロセスは、特にデータベース(AmazonrdsmysQlなど)をデータウェアハウス(Redshiftなど)と統合する場合、複雑で時間がかかります。ただし、AWSは、この状況を完全に変えたゼロETL統合ソリューションを提供し、RDSMYSQLからRedshiftへのデータ移行のための簡略化されたほぼリアルタイムソリューションを提供します。この記事では、RDSMysQl Zero ETLのRedshiftとの統合に飛び込み、それがどのように機能するか、それがデータエンジニアと開発者にもたらす利点を説明します。

MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

データベース酸属性の詳細な説明酸属性は、データベーストランザクションの信頼性と一貫性を確保するための一連のルールです。データベースシステムがトランザクションを処理する方法を定義し、システムのクラッシュ、停電、または複数のユーザーの同時アクセスの場合でも、データの整合性と精度を確保します。酸属性の概要原子性:トランザクションは不可分な単位と見なされます。どの部分も失敗し、トランザクション全体がロールバックされ、データベースは変更を保持しません。たとえば、銀行の譲渡が1つのアカウントから控除されているが別のアカウントに増加しない場合、操作全体が取り消されます。 TRANSACTION; updateaccountssetbalance = balance-100wh

MySQLのユーザー名とパスワードを入力するには:1。ユーザー名とパスワードを決定します。 2。データベースに接続します。 3.ユーザー名とパスワードを使用して、クエリとコマンドを実行します。

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。
