1.1 php エンジンのキャッシュ最適化アクセラレーション
1) eaccelerator
2) Zend
3) xcache
1.2 キャッシュ高速化のためのファイル ディレクトリとして tmpfs を使用する
[root@LNMP ~]# mount - t tmpfs /dev/shm -o size=256m
[root@LNMP ~]# mount -t tmpfs /dev/shm/ /tmp/eaccelerator/
ヒント:
1. 画像サムネイル処理をアップロードするためのディレクトリ
2. tmp/eaccelerator などの他のアクセラレータ一時ディレクトリ
1.3 php.iniパラメータチューニング
Apacheでもnginxでもphp.iniが適しています、php-fpm.confはnginx+fcgiの構成に適しています。まず、製品環境の php.ini (php.ini-production) を選択します
/home/oldboy/tools/php-5.3.27/php.ini-development
/home/oldboy/tools/php-5.3.27/php.ini-production
1.3.1 PHP のセーフ モードをオンにする
PHP のセーフ モードは、PHP に組み込まれた非常に重要なセキュリティ メカニズムであり、system() などの PHP の一部の関数の実行を制御し、多くのファイル操作関数のアクセス許可も制御できます。
このパラメータは次のように設定されます:
safe_mode = Off
;セーフモード。
; PHP を開くと、現在のスクリプトの所有者が操作対象のファイルの所有者と同じかどうかを確認します (
1.3.3 危険な機能をオフにする
disable_functions = system,passthru,exec,shell_exec,popen,phpinfo
ファイルを禁止したい場合は、ディレクトリ操作、オフにすることができます 多くのファイル操作
disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy, mkdir,rmdir,rename,file, file_get_contents,fputs,fwrite,chgrp,chmod,chown
上記は、一般的に使用されるファイル処理関数の一部を示しているだけです。上記の実行コマンド関数とこの関数を組み合わせて実行できます。ほとんどの phpshell に抵抗します。このパラメータのデフォルトは disable_functions =
ハッカーがサーバーの PHP バージョン情報を取得するのを防ぐために、http ヘッダーの情報をオフにすることができます。このパラメータのデフォルト設定は次のとおりです:
expose_php = On
; php がサーバーにインストールされていることを公開するかどうか (http ヘッダーにそのタグを追加します)
; セキュリティへの直接的な脅威はありませんが、サーバーに php がインストールされていることをクライアントに知らせることができます。
に設定することをお勧めします。expose_php = Off
ハッカーが Telnet ucode.blog.51cto.com 80 を実行すると、php 情報を見ることができなくなります
SQL インジェクションは非常に危険な問題です。最悪の場合、Web サイトのバックエンドが侵入され、最悪の場合、サーバー全体が崩壊します。
だから気をつけてください。 php.ini には次の設定があります:
magic_quotes_gpc = Off
これは、デフォルトではオフです。その後、ユーザーが送信した SQL へのクエリは、'to' の変換など、自動的に変換されます。これは SQL インジェクションの防止に重要な役割を果たすため、次のように設定することをお勧めします:
magic_quotes_gpc = Off
1.3.7 エラーメッセージ制御
通常、PHP はデータベースに接続されていない場合、またはその他の状況下でエラーを表示します。一般的なエラー メッセージには、PHP スクリプトまたはクエリの SQL ステートメントの現在のパス情報が含まれます。この種の情報はハッカーに提供されると安全ではないため、サーバーではエラー プロンプトを無効にすることが一般的に推奨されます:
display_errors = Off
サーバーが実行されている理由:
log_errors = On
エラー ログを保存するディレクトリも設定することをお勧めします。 Apache ログと一緒に記録します:
error_log = /app/ logs/php_error.log
注:ファイルは、Apache ユーザーとグループの両方に書き込み権限を許可する必要があります
1.3.9 一部のリソース制限パラメーターの最適化
1.3.9.1 各スクリプトの最大実行時間を設定します
大きなファイルをアップロードできない場合、またはバックグラウンド バックアップ データが頻繁にタイムアウトになる場合は、次の設定を調整する必要があります:
max_exxcution_time = 30
; 各スクリプトの最大許容実行時間 (秒)、0 は制限なしを意味します
; このパラメータは、劣悪なスクリプトがサーバー リソースを無限に占有することを防ぎます。この指示は、スクリプト自体の実行時間にのみ影響します。system()/sleep() 関数の使用、データベース クエリ、ファイルのアップロードなど、スクリプトの実行以外に費やされるその他の時間には影響しません。などは影響を受けません。
;セーフ モードでは、ini_set() を使用して実行時にこの設定を変更することはできません
各スクリプトで使用される 1.3.9.2 最大メモリ
memory_limit = 128M
;到達するメモリバイト数 (単位として K と M を使用できます)
; これを使用できるようにするには、劣ったスクリプトがサーバー上のすべてのメモリを無限に占有するのを防ぎます。ディレクティブは、「--enable-memory-limit」構成オプションを使用してコンパイルする必要があります
; メモリ制限をキャンセルしたい場合は、設定後に -1
に設定する必要があります。このディレクティブを使用すると、memory_get_usage() 関数が使用可能になります
1.3.9.3 各スクリプトが入力データを待機する最大時間
max_input_time = -1
; 各スクリプトが入力データ (POST、GET、アップロード) を解析するために許可される最大時間 (秒)
;-1 は制限なしを意味します
は次のように設定されます:
max_input_time = 60;
1.3.9.4 アップロードされるファイルの最大許容サイズ
アップロードされるファイルが大きい場合は、次のパラメータを調整する必要があります:
さらに、1 回のリクエストでアップロードできるファイル数
max_file_uploads = 20
1.3.10 一部のセキュリティパラメータの最適化
1.リモート アドレスを開くことは禁止されています。最近の PHP インクルードに脆弱性があることを覚えていますか? プログラムに変数が含まれている場合、侵入者はこの制御サーバーを使用してリモート PHP プログラムをローカルで実行できます。たとえば、phpshell なので、これを閉じる必要があります
;Nginx ファイル タイプ エラー解析の脆弱性を防ぐ
1.3.11 PHP セッション情報のストレージ タイプと場所を調整する
session.save_handler = files
; セッションに関連付けられたデータを保存および取得するハンドラーの名前。デフォルトは files ("files")
;カスタムプロセッサ (データベースベースのプロセッサなど) を使用したい場合は、「user」
;「memcache」に設定すると、memcache をセッションとして使用できますプロセッサ (「--enable-memcache-session」コンパイル オプションを指定する必要があります)。
; session.save_path = "/tmp"
; ファイル プロセッサの場合、この値はセッション データ ファイルを作成するパスです。
Web クラスターセッションの共有ストレージ設定:
#session.save_handler = files
#session.save_path = "/tmp"
変更
session.save_path = "tcp://10.0.0.18:11211"
ヒント:
1) 10.0.0.18:11211 は memcache データベースによってキャッシュされた IP とポートです
2) 上記は LAMP に適していますおよび LNMP 環境
3) ハッシュ
を使用して複数の memcache サーバーをスケジュールすることもできます