ウェブサイトを実行するための専用仮想サーバーを入手した場合、ウェブサイトを実行するためのパフォーマンスを最大化するようにカスタマイズされておらず、すべての人のために構成されている可能性があります。
内容「 隠す 」
|
概要概要
パフォーマンスを最大化したい問題領域がいくつかあります。
-
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コマンドは、スクリプトから実行権限を削除し、起動時にスクリプトの実行を停止します。
SpamAssassinを無効にする
サーバー自体でメールアカウントを使用していない場合は、スパム対策ツールをわざわざ実行しないでください。 (また、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パネルを使用する場合は、オプションファイルを追加することで、強制的にメモリの使用量を減らすことができます。
vi /usr/local/psa/admin/conf/httpsd.custom.include
次の行をファイルに追加します。
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
このオプションはMediaTempleDVサーバーで機能することがわかっていますが、他のサーバーではチェックされていないことに注意してください。 (見る 参考文献 )
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] query-cache-type = 1 query-cache-size = 8M
必要に応じてクエリキャッシュにメモリを追加できますが、あまり使用しないでください。
TCP / IPを無効にする
驚くべき数のホストがデフォルトでTCP / IP上のMySQLへのアクセスを有効にしますが、これはWebサイトには意味がありません。次のコマンドを実行すると、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
- イオンキューブローダー
- json
- imap
- ldap
- ncurses
Todo:ここに詳細情報を追加してください。
PHPオペコードキャッシュ
APC、eAccelerator、Xcacheなど、使用できるオペコードキャッシュは多数ありますが、最後のキャッシュは安定性のために個人的に好みです。
xcacheをダウンロードしてディレクトリに抽出し、xcacheソースディレクトリから次のコマンドを実行します。
phpize ./configure --enable-xcache 作る インストールする
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 =オフ xcache.readonly_protection =オン xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher =オン xcache.stat =オン xcache.optimizer =オフ
Todo:これを少し拡張して、リファレンスのxcacheにリンクする必要があります。
バックアップ
ウェブサイトの自動バックアップよりも重要なことはほとんどありません。ホスティングプロバイダーからスナップショットバックアップを取得できる場合もあります。これも非常に便利ですが、自動バックアップも使用したいと思います。
自動バックアップスクリプトの作成
私は通常、/ backupsディレクトリを作成し、その下に/ backups / filesディレクトリを作成することから始めます。必要に応じて、これらのパスを調整できます。
mkdir -p / backups / files
次に、backupsディレクトリ内にbackup.shスクリプトを作成します。
vi /backups/backup.sh
以下をファイルに追加し、必要に応じてパスとmysqldumpパスワードを調整します。
#!/ bin / sh
THEDATE = `日付+%d%m%y%H%M`
mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak
tar -cf /backups/files/sitebackup$THEDATE.tar / var / www / vhosts / my-website-path / httpdocs
gzip /backups/files/sitebackup$THEDATE.tar
/ backups / files / site * -mtime +5 -exec rm {} \;を検索します。
/ backups / files / db * -mtime +5 -exec rm {} \;を検索します。
スクリプトは最初に日付変数を作成するため、1回のバックアップですべてのファイルに同じ名前が付けられ、次にデータベースをダンプし、Webファイルをtarで圧縮し、gzipで圧縮します。ドライブの容量が不足しないようにするため、findコマンドを使用して5日より古いファイルを削除します。
次のコマンドを実行して、スクリプトを実行可能にします。
chもd う+x /ばcくps/ばcくp。sh
次に、cronによって自動的に実行されるように割り当てる必要があります。バックアップディレクトリにアクセスできるアカウントを使用していることを確認してください。
cろんたb ーえ
crontabに次の行を追加します。
1 1 * * * /ばcくps/ばcくp。sh
ユーザーアカウントにログオンした状態でスクリプトを実行することにより、事前にスクリプトをテストできます。 (私は通常、バックアップをルートとして実行します)
バックアップをオフサイトでRsyncと同期する
サーバーの自動バックアップが実行されたので、rsyncユーティリティを使用して別の場所でそれらを同期できます。自動ログイン用にsshキーを設定する方法については、次の記事をお読みください。 単一のコマンドでリモートサーバーに公開SSHキーを追加する
これは、別の場所にあるLinuxまたはMacマシンでこのコマンドを実行することでテストできます(自宅にLinuxサーバーがあり、ここでこれを実行しています)
rsync -a [email protected]:/ backups / files / * / offsitebackups /
これは最初に実行するのにかなり時間がかかりますが、最後にローカルコンピュータの/ offsitebackups /ディレクトリにファイルディレクトリのコピーが必要です。 (スクリプトを実行する前に、必ずそのディレクトリを作成してください)
これをcrontab行に追加することでスケジュールできます。
cろんたb ーえ
次の行を追加します。これは、45分マークで1時間ごとにrsyncを実行します。ここでは、rsyncにフルパスを使用していることに気付くでしょう。
45 * * * * / usr / bin / rsync -a [email protected]:/ backups / files / * / offsitebackups /
別の時間に実行するようにスケジュールすることも、1日に1回だけ実行するようにスケジュールすることもできます。それは本当にあなた次第です。
sshまたはftp経由で同期できるユーティリティがたくさんあることに注意してください。 rsyncを使用する必要はありません。
セキュリティ
最初に行うことは、sshを介して使用する通常のユーザーアカウントを持っていることを確認し、suを使用してrootに切り替えることができることを確認することです。 root oversshへの直接ログインを許可することは非常に悪い考えです。
SSH経由のルートログインを無効にする
/ etc / ssh / sshd_configファイルを編集して、次の行を探します。
#PermitRootLoginはい
その行を次のように変更します。
ぺrみtろおtぉぎん の
この変更を行う前に、通常のユーザーアカウントを持っていて、rootにsuできることを確認してください。そうしないと、ロックアウトされる可能性があります。
SSHバージョン1を無効にする
SSHバージョン2以外のものを使用する理由は実際にはありません。これは、以前のバージョンよりも安全だからです。 / etc / ssh / sshd_configファイルを編集し、次のセクションを探します。
#プロトコル2,1 プロトコル2
図のように、プロトコル2のみを使用していることを確認してください。
SSHサーバーを再起動します
これを有効にするには、SSHサーバーを再起動する必要があります。
/etc/init.d/sshd restart
開いているポートを確認します
次のコマンドを使用して、サーバーがリッスンしているポートを確認できます。
netstat -an | grep LISTEN
ポート22、80、場合によっては8443以外のpleskをリッスンする必要はありません。
ファイアウォールを設定する
オプションで、iptablesファイアウォールを設定して、より多くの接続をブロックできます。たとえば、私は通常、仕事用ネットワーク以外のポートへのアクセスをブロックします。動的IPアドレスがある場合は、そのオプションを避けたいと思うでしょう。
このガイドのこれまでのすべての手順をすでに実行している場合は、ファイアウォールも追加する必要はないかもしれませんが、オプションを理解しておくことをお勧めします。
関連項目
- LinuxでのIptablesの使用