専用の仮想Webサーバーを調整する
Webサイトを実行するための専用の仮想サーバーを入手した場合、それはすべての人のために構成され、Webサイトを実行するためのパフォーマンスを最大化するようにカスタマイズされていない可能性があります。.
内容[隠す]
|
概要
パフォーマンスを最大化したい問題領域がいくつかあります。
- Linuxの設定
通常は実行されている必要のないサービスがあり、より多くの接続に使用される可能性があるメモリを無駄にしています。. - MySQLの設定
多くの場合、デフォルト設定は小さなサーバーに基づいていますが、パフォーマンスを大幅に向上させるためにいくつかの重要な変更を加えることができます。. - Apacheの設定
デフォルトでは、ほとんどのホスティングプロバイダはほぼすべてのモジュールがインストールされた状態でApacheをインストールします。あなたがそれらを使うつもりでないなら、モジュールをロードする理由はありません。. - PHPの設定
デフォルトのPHP設定も同様に肥大化しています。通常、不要な追加モジュールが大量にインストールされています。. - PHPオペコードキャッシュ
PHPが毎回スクリプトを再コンパイルできるようにする代わりに、オペコードキャッシュはコンパイルされたスクリプトをメモリにキャッシュしてパフォーマンスを大幅に向上させます。. - バックアップ
あなたのホスティングプロバイダはあなたのためにそれをするつもりはないので、おそらくいくつかの自動バックアップを設定する必要があります. - セキュリティ
確かに、Linuxはデフォルトで十分に安全ですが、通常、いくつかの簡単な設定で解決できる明白なセキュリティ問題がいくつかあります。.
Linuxの設定
あなたができることはかなりたくさんの微調整がありますが、それはあなたが使用しているサーバーによって若干異なります。これらの調整はCentOSを実行しているサーバー用ですが、大部分のDVサーバーで機能するはずです。.
DNSを無効にする
ホスティングプロバイダがドメインのDNSを処理している場合(おそらく)、DNSサービスを無効にすることができます。.
dnsを無効にする/etc/init.d/named stop chmod 644 /etc/init.d/named
chmodコマンドは、スクリプトから実行権限を削除し、起動時に実行を停止します。.
SpamAssassainを無効にする
サーバー自体で電子メールアカウントを使用していないのであれば、スパム対策ツールを実行するのは面倒ではありません。 (また、Google Appsをチェックしてください。もっと良いメールソリューションです)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
xinetdを無効にする
xinetdプロセスには他にも多くのプロセスがありますが、一般的なWebサーバーには役立ちません。.
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
Pleskメモリ使用量を制限する
Plesk Panelを使用している場合は、オプションファイルを追加することでメモリ使用量を少なくすることができます。.
vi /usr/local/psa/admin/conf/httpsd.custom.include
ファイルに次の行を追加します。
MinSpareServers 1 MaxSpareServers 1 StartServer 1 MaxClients 5
このオプションはMediaTemple DVサーバーで機能することが知られていますが、他ではチェックされていません。 (参考文献参照)
Pleskを無効または無効にする(オプション)
Pleskを1年に1回しか使用しない場合は、Pleskを実行し続ける理由はほとんどありません。このステップは完全にオプションであり、もう少し進んでいることに注意してください。.
以下のコマンドを実行してPleskをオフにします。
/etc/init.d/psa stop
次のコマンドを実行して、起動時に実行されないようにすることができます。
chmod 644 /etc/init.d/psa
無効にした場合、ファイルのパーミッションを元に戻すことなしに手動で起動することはできません(chmod u + x)。.
MySQLの設定
クエリキャッシュを有効にする
/etc/my.cnfファイルを開き、[mysqld]セクションに次の行をこのように追加します。
[mysqld]クエリキャッシュタイプ= 1クエリキャッシュサイズ= 8M
必要に応じてクエリキャッシュにメモリを追加することができますが、使いすぎないでください。.
TCP / IPを無効にする
驚くほど多くのホストがデフォルトでTCP / IP上のMySQLへのアクセスを可能にしていますが、これはウェブサイトにとって意味がありません。 mysqlがTCP / IPをリッスンしているかどうかを確認するには、次のコマンドを実行します。
netstat -an | grep 3306
無効にするには、/ etc / my.cnfファイルに次の行を追加します。
スキップネットワーキング
Apacheの設定
通常/etc/httpd/conf/httpd.confにあるhttpd.confファイルを開きます。
このような行を見つけます。
タイムアウト120
そしてこれを次のように変更します。
タイムアウト20
これらの行を含むセクションを見つけて、似たようなものに調整します。
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
PHPの設定
PHPプラットフォーム上でサーバーを調整する際に注意すべきことの1つは、すべてのapacheスレッドがPHPをメモリー内の別々の場所にロードすることです。これは、未使用のモジュールがPHPに256kのメモリを追加する場合、40のApacheスレッドにわたって10MBのメモリを浪費していることを意味します。.
不要なPHPモジュールを削除する
php.iniファイルは、通常/etc/php.iniにあります(いくつかのディストリビューションでは、/ etc / php.d /ディレクトリにいくつかの.iniファイルがあります)。各モジュールに1つ.
これらのモジュールでloadmodule行をコメントアウトしてください。
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- イオンキューブローダー
- ジョンソン
- 写像
- LDAP
- ncurses
Todo:ここにさらに情報を追加する.
PHPオペコードキャッシュ
APC、eAccelerator、Xcacheなど、使用可能なオペコードキャッシュがいくつかあります。最後のものは安定性のために私の個人的な好みです。.
xcacheをダウンロードしてディレクトリに展開し、xcacheのソースディレクトリから次のコマンドを実行します。
phpize ./configure --enable-xcache make make install
php.iniファイルを開き、xcache用の新しいセクションを追加します。 phpモジュールが他の場所からロードされている場合は、パスを調整する必要があります。.
vi /etc/php.ini
ファイルに次のセクションを追加します。
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache];オペコードキャッシュのサイズを調整するには、xcache.sizeを変更します。xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; xcache.var_sizeを変更して、変数キャッシュのサイズを調整します。xcache.var_size = 1M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 xcache.test = Off xcache.test = Off xcache.mmap_path = "/ tmp / xcache"上xcache.coredump_directory = "" xcache.cacher =上xcache.stat =上xcache.optimizer上
Todo:これを少し拡張して、参考文献の中のxcacheにリンクする必要があります。.
バックアップ
あなたのウェブサイトの自動バックアップをすることよりも、もう少し重要なことがあります。あなたはあなたのホスティングプロバイダからスナップショットバックアップを取得することができるかもしれません、これもまたとても便利です、しかし私は自動バックアップも持っているほうが好きです.
自動バックアップスクリプトを作成する
私は通常、/ backupsディレクトリを作成し、その下に/ backups / filesディレクトリを作成します。必要に応じてこれらのパスを調整できます.
mkdir -p / backups / files
これで、backupディレクトリ内にbackup.shスクリプトを作成してください。
vi /backups/backup.sh
必要に応じてパスとmysqldumpパスワードを調整して、ファイルに以下を追加します。
#!/ bin / sh THEDATE = "日付+%d%m%y%H%M" mysqldump -uadmin -pPASSWORDデータベース名> /backups/files/dbbackup$THEDATE.bak tar -cf / backups / files / sitebackup $ THEDATE .tar / var / www / vhosts /私のWebサイトのパス/ httpdocs gzip /backups/files/sitebackup$THEDATE.tar find / backups / files / site * -mtime + 5 -exec rm \; / backups / files / db * -mtime + 5 -exec rm \;
このスクリプトは最初に日付変数を作成して、単一のバックアップですべてのファイルに同じ名前が付けられるようにし、次にデータベースをダンプし、Webファイルを停止してそれらをgzipします。あなたはあなたのドライブのスペースが不足したくないのでfindコマンドは5日より古いファイルを削除するために使われます。.
次のコマンドを実行してスクリプトを実行可能にします。
chmod u + x /backups/backup.sh
次に、cronによって自動的に実行されるようにそれを割り当てる必要があります。バックアップディレクトリにアクセスできるアカウントを使用していることを確認してください。.
クロンタブ-e
次の行をcrontabに追加します。
1 1 * * * /backups/backup.sh
ユーザーアカウントにログオンしている間にスクリプトを実行することで、スクリプトを事前にテストできます。 (私は通常バックアップをrootとして実行します)
Rsyncを使用してオフサイトでバックアップを同期
サーバーの自動バックアップが実行されたので、rsyncユーティリティを使用して別の場所にバックアップを同期できます。自動ログイン用にsshキーを設定する方法についてのこの記事を読むとよいでしょう。
これは、別の場所にあるLinuxまたはMacマシンでこのコマンドを実行することでテストできます(私はこれを実行しているのは自宅にLinuxサーバーがあります)。
rsync -a [email protected]:/ backups / files / * / offsitebackups /
これは最初の実行にはかなり時間がかかりますが、最後にローカルコンピュータのfilesディレクトリのコピーが/ offsitebackups /ディレクトリにあるはずです。 (スクリプトを実行する前に必ずそのディレクトリを作成してください)
これをcrontab行に追加することでこれをスケジュールできます。
クロンタブ-e
次の行を追加します。これは、毎分45分の時点でrsyncを実行します。ここでは、rsyncへのフルパスを使用しています。.
45 * * * * / usr / bin / rsync -a [email protected]:/ backups / files / * / offsitebackups /
別の時間に実行するようにスケジュールすることも、1日に1回だけ実行するようにスケジュールを設定することもできます。それは本当にあなた次第です.
sshやftpで同期できるようにするユーティリティはたくさんあります。 rsyncを使う必要はありません.
セキュリティ
あなたがしたい最初のことはあなたがsshを通して使うべき普通のユーザーアカウントを持っていることを確認し、そしてあなたがrootに切り替えるためにsuを使えることを確認することです。 SSH経由でrootに直接ログインさせるのは非常に悪い考えです。.
SSH経由のルートログインを無効にする
/ etc / ssh / sshd_configファイルを編集して、次の行を探します。
#PermitRootLogin yes
この行を次のように変更してください。
PermitRootLoginなし
通常のユーザーアカウントを持っていて、この変更を行う前にスーパーユーザーになることができることを確認してください。.
SSHバージョン1を無効にする
SSHバージョン2以外のものを使用する理由はありません。以前のバージョンよりも安全だからです。 / etc / ssh / sshd_configファイルを編集して、次のセクションを探します。
#プロトコル2,1プロトコル2
示されているようにプロトコル2のみを使用していることを確認してください。.
SSHサーバーを再起動
これを有効にするには、SSHサーバーを再起動する必要があります。.
/etc/init.d/sshd restart
開いているポートを確認する
次のコマンドを使用して、サーバーがどのポートで待機しているかを確認できます。
netstat -an | grep LISTEN
あなたは本当にpleskのためにポート22、80、そしておそらく8443以外に何か他のものをリッスンするべきではありません.
ファイアウォールを設定する
主な記事: Linuxでiptablesを使う
より多くの接続をブロックするためにiptablesファイアウォールをオプションで設定できます。たとえば、通常、仕事用ネットワーク以外からのアクセスをブロックします。動的IPアドレスをお持ちの場合は、そのオプションを避けたいと思うでしょう.
これまでにこのガイドのすべての手順を実行したことがある場合は、おそらくミックスにファイアウォールも追加する必要はありませんが、オプションを理解しておくとよいでしょう。.
参照
- Linuxでiptablesを使う
参考文献
- DVサーバーを最適化する(mediatemple.net)
- XCache