12Sep
Web sitenizi çalıştırmak için özel bir sanal sunucu elde ettiğinizde, herkes için yapılandırılmış olması ve bir web sitesini çalıştırmak için performansı en üst düzeye çıkaracak şekilde özelleştirilememesi ihtimali yüksektir.
İçindekiler[gizle]
|
Genel Bakış
Bir takım güvenlik duvarlarını kurduğumuz birkaç sorun alanı varPerformansı en üst düzeye çıkarmak için t:
- Linux yapılandırması
Genellikle daha fazla bağlantı için kullanılabilecek belleğin boşa harcanmasına ihtiyaç duymayan servisler vardır. - MySQL yapılandırması
Genellikle varsayılan ayarlar küçük bir sunucuyu temel alır, performansı artırmak için birkaç önemli değişiklik ekleyebiliriz. - Apache yapılandırması
Varsayılan olarak, çoğu barındırma sağlayıcıları neredeyse her modül yüklü olarak apache'yi kurmaktadır. Onları hiç kullanmayacaksanız modülleri yüklemek için hiçbir neden yoktur. - PHP yapılandırması
Varsayılan PHP yapılandırması benzer şekilde şişirilmiş, genellikle bir ton gereksiz ek modül yüklenmiştir. - PHP Opcode Önbellek
PHP'nin her seferinde komut dosyalarını yeniden derlemesine izin vermek yerine, bir opcode önbellek, derlenmiş komut dosyalarını bellekte büyük performans artışı için önbelleğe alır. - Yedeklemeleri
Belirli bir otomatik yedekleme kurmanız gerekir, çünkü barındırma sağlayıcınız sizin için bunu yapmayacaktır. - Güvenlik
Tabii, Linux varsayılan olarak güvende ancak, birkaç hızlı ayarla düzeltebileceğiniz bazı göze çarpan güvenlik sorunları var.
Linux Yapılandırması
Yapabileceğiniz, kullandığınız sunucudan biraz farklı olacak çok sayıda değişiklik yapabilirsiniz. Bu değişiklikler CentOS çalıştıran bir sunucu içindir, ancak DV sunucularının çoğunluğu için çalışmalıdırlar.
DNS
'yi Devre Dışı Bırakma Barındırma sağlayıcınız etki alanınız için DNS'yi( büyük ihtimalle) işliyorsa, DNS hizmetinin çalışmasını engelleyebilirsiniz.
dns'leri devre dışı bırak /etc/init.d/ named stop chmod 644adlı /etc/init.d/ chmod komutu, yürütme iznini komut dosyasından kaldırır ve başlangıçta çalışmasını durdurur.
SpamAssassain'i Devre Dışı Bırak
Sunucunuzda e-posta hesapları kullanmıyorsanız spam önleme araçları çalıştırmaya zahmet etmemelisiniz.(Ayrıca Google Apps'ı kontrol etmelisiniz, daha iyi e-posta çözümü)
/etc/init.d/ psa-spamassassin stop chmod 644 /etc/init.d/ psa-spamassassinxinetd'yi devre dışı bırak
xinetd işlemi hiçbiri tipik bir web sunucusu için yararlı olmayan bir dizi başka işlemi barındırıyor.
/etc/init.d/ xinetd stop chmod 644 /etc/init.d/ xinetdSınırlı Bellek Belleği Kullanımı
Plesk panelini kullanırsanız, bir seçenek dosyası ekleyerek daha az bellek kullanmaya zorlayabilirsiniz.
vi /usr/local/psa/admin/conf/ httpsd.custom.includeDosyaya aşağıdaki satırları ekleyin:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5Bu seçeneğin MediaTemple DV sunucularında çalıştığı biliniyor, ancak başkaları tarafından kontrol edilmediğine dikkat edin.(Bkz. Referanslar)
Plesk'i Devre Dışı Bırakma veya Kapatma( isteğe bağlı)
Plesk'i yılda bir kez kullanırsanız, onu tamamen çalıştırmaya bırakmanızın çok az nedeni vardır. Bu adımın tamamen isteğe bağlı olduğunu ve biraz daha gelişmiş olduğunu unutmayın.
Plesk'i kapatmak için aşağıdaki komutu çalıştırın:
/etc/init.d/ psa stopAşağıdaki komutu çalıştırarak başlangıçta çalışmasını devre dışı bırakabilirsiniz:
chmod 644 /etc/init.d/ psaDevre dışı bırakırsanız, el ile başlatamazsınızdosya izinlerini geri değiştirme( chmod u + x).
MySQL Yapılandırması
Sorgu Önbelleğini Etkinleştir
/etc/ my.cnf dosyanızı açın ve aşağıdaki satırları [mysqld] bölümüne aşağıdaki gibi ekleyin:
[mysqld] query-cache-type = 1 query-cache-size = 8Misterseniz sorgu önbelleğine daha fazla bellek ekleyin, ancak çok fazla kullanmayın.
TCP / IP'yi Devre Dışı Bırak
Şaşırtıcı sayıda ana bilgisayar varsayılan olarak TCP / IP'de MySQL'e erişimi etkinleştirir, bu da bir web sitesi için mantıklı değildir. Aşağıdaki komutu çalıştırarak mysql'in TCP / IP'de dinleyip dinlemediğini öğrenebilirsiniz:
netstat -an |grep 3306Devre dışı bırakmak için, /etc/ my.cnf dosyanıza aşağıdaki satırı ekleyin:
atlama ağıApache Yapılandırması
Sık sık /etc/httpd/conf/ httpd.conf dosyasında bulunan httpd.conf dosyasını açın
Aşağıdaki gibi bir satırı bulun:
Timeout 120Ve şu şekilde değiştirin:
Timeout 20Şimdi, bu satırları içeren bölümü bulun ve benzer bir şekilde ayarlayın:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000PHP Yapılandırması
PHP platformunda bir sunucu ayarlarken her bir apache iş parçacığının PHP'yi ayrı bir konumda belleğe yükleyeceği unutulmamalıdır. Bu, kullanılmayan bir modülün PHP'ye 256k bellek, 40 apache iş parçacığı eklediği takdirde 10MB bellek harcıyor demektir.
Gereksiz PHP Modüllerini Kaldır
Genellikle /etc/ php.ini dosyasında bulunan php.ini dosyanızı bulmanız gerekir( bazı dağıtımlarda bazı. ini dosyalarının bulunduğu bir /etc/php.d/ dizini olacağına dikkat edin,her modül
Bu modüllerle herhangi bir loadmodule satırını yorumlayın:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-yükleyici
- json
- imap
- ldap
- ncurses
Yapılacaklar:
PHP Opcode Önbellek
BurayaAPC, eAccelerator ve Xcache de dahil olmak üzere kullanabileceğiniz opcode önbellekleridir, sonuncusu istikrar nedeniyle kişisel tercihimdir
xcache'yi indirin ve bir dizine ayıklayın ve sonra aşağıdaki komutları xcache kaynağından çalıştırındizin:
phpize. /configure --enable-xcache make make installphp.ini dosyanızı açın vexcache için yeni bir bölüm ekleyin. Php modülleriniz başka bir yerden yüklendiyse yolları ayarlamanız gerekir.
vi /etc/ php.iniDosyaya aşağıdaki bölümü ekleyin:
[xcache-common] zend_extension = /usr/lib/php/modules/ xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere"[xcache];Opcode önbellek boyutunu ayarlamak için xcache.size'yi değiştirin xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0;Değişken önbellek boyutunu ayarlamak için xcache.var_size'yi değiştirin 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 = Kapalı xcache.readonly_protection =On xcache.mmap_path = "/tmp/ xcache" xcache.coredump_directory = "" xcache.cacher = Açık xcache.stat = Açık xcache.optimizer = KapalıYapılacaklar: Bunu biraz genişletmek ve referanslarda xcache'ye bağlantı yapmak gerekiyor.
Yedeklemeleri
Web sitenizin otomatik yedeklemelerine sahip olmaktan çok daha az önemli. Ayrıca, çok yararlı olan, barındırma sağlayıcıdan anlık görüntü yedekleme alabilirsiniz, ancak otomatik yedeklemeleri de tercih ediyorum.
Otomatik Yedekleme Komut Dosyası Oluşturma
Genellikle bir / yedekler dizini yaratarak başlarım, altındaki /backups/ dosyaları dizini ile.İsterseniz bu yolları ayarlayabilirsiniz.
mkdir -p /backups/ dosyalarıŞimdi backups dizininde bir backup.sh komut dosyası oluşturun:
vi /backups/ backup.shYolları ve mysqldump parolasını gerektiği gibi ayarlayarak aşağıdakileri dosyaya ekleyin:
#!/bin/ sh THEDATE = 'tarih +% d% m% y% H% M` mysqldump -uadmin -pPASSWORD DATABASENAME & gt;/backups/files/ dbbackup $ THEDATE.bak tar -cf /backups/files/ sitebackup $ THEDATE.tar /var/www/vhosts/ my-web sitesi yolu / httpdocs gzip /backups/files/ sitebackup $ THEDATE.tar /backups/files/ sitesini bulun * -mtime +5 -exec rm{ } \;/backups/files/ db * -mtime +5 -exec rm{ } \ bulmak;Komut dosyası ilk olarak bir tarih değişkeni oluşturacak ve böylece tüm dosyalar tek bir yedekleme için aynı ada sahip olacak, daha sonra veritabanını boşaltacak, web dosyalarını sıkıştıracak ve gzip edecektir. Bul komutları, sürücünüzün alanın bitmesini istemediğinizden beri 5 günden daha eski dosyaları kaldırmak için kullanılır.
Komut dosyasını aşağıdaki komutu çalıştırarak çalıştırılabilir yapın:
chmod u + x /backups/ backup.shSonra cron tarafından otomatik olarak çalışacak şekilde atamanız gerekir. Yedekleme dizinine erişimi olan bir hesabı kullandığınızdan emin olun.
crontab -eAşağıdaki satırı crontab'a ekleyin:
1 1 * * * /backups/ backup.shSenaryoyu, kullanıcı hesabına oturum açmışken çalıştırarak test edebilirsiniz.(Genellikle yedekleri kök olarak çalıştırırım)
Senkron Yedeklemeleri Rsync
ile Senkronize Etme Sunucunuzun otomatik yedeklemelerini çalıştırdıysanız, bunları rsync yardımcı programını kullanarak başka bir yerde senkronize edebilirsiniz. Otomatik oturum açma için ssh anahtarlarını ayarlama hakkında bu makaleyi okumak istersiniz: Tek bir Komutta Uzak Sunucuya Genel SSH Anahtarı Ekleme
Bu komutu başka bir konumdaki bir linux veya Mac makinesinde çalıştırarak test edebilirsiniz( I
rsync -a [email protected]: /backups/files/ * /offsitebackups/Bu ilk çalıştırmada oldukça zaman alacaktır, ancak sonunda yerel bilgisayarınızın kopyası olmalıdır. /offsitebackups/ dizinindeki files dizininin.(Komut dosyasını çalıştırmadan önce bu dizini oluşturduğunuzdan emin olun)
Bunu bir crontab satırına ekleyerek zamanlayabilirsiniz:
crontab -eDakikada 45 dakika işaretiyle rsync'i çalıştıran aşağıdaki satırı ekleyin. Burada rsync'in tam yolunu kullandığımızı fark edeceksiniz.
45 * * * * /usr/bin/ rsync -a [email protected]: /backups/files/ * /offsitebackups/Farklı bir saatte veya yalnızca günde bir kez çalışacak şekilde zamanlayabilirsiniz. Bu gerçekten size kalmış.
Ssh veya ftp ile senkronizasyon yapmanıza izin verecek bir çok yardımcı program olduğunu unutmayın. Rsync'i kullanmak zorunda değilsiniz.
Güvenlik
Yapmak istediğiniz ilk şey, ssh aracılığıyla kullanılacak düzenli bir kullanıcı hesabına sahip olduğunuzdan emin olmak ve su'yu kök olarak değiştirmek için kullanabildiğinizden emin olmaktır. SSH üzerinden root için doğrudan giriş yapmaya izin vermek çok kötü bir fikir.
SSH Üzerinden Kök Girişini Devre Dışı Bırak
/etc/ssh/ sshd_config dosyasını düzenleyin ve aşağıdaki satırı arayın:
#PermitRootLogin evetBu satırı aşağıdaki gibi değiştirin:
PermitRootLogin noNormal kullanıcı hesabınız olduğundan emin olun veBu değişikliği yapmadan önce kök yapın, aksi takdirde kendinizi kapatabilirsiniz.
SSH Sürüm 1'i Devre Dışı Bırakma
Daha önceki sürümlerden daha güvenli olduğundan, SSH sürüm 2'den başka bir şey kullanmak için hiçbir neden yoktur. /etc/ssh/ sshd_config dosyasını düzenleyin ve aşağıdaki bölümü arayın:
# Protokol 2,1 Protokol 2Yalnızca Protokol 2'yi gösterilen şekilde kullandığınızdan emin olun.
SSH Sunucusunu Yeniden Başlat
Bunun etkili olması için SSH sunucusunu yeniden başlatmanız gerekecek.
/etc/init.d/ sshd restartAçık Bağlantı Noktalarını Kontrol Et
Sunucunun hangi portları dinlediğini görmek için aşağıdaki komutu kullanabilirsiniz:
netstat -an |grep LISTENGerçekten de, plesk için 22, 80 ve muhtemelen 8443'ten başka bir şey dinlememelisiniz.
Bir Güvenlik Duvarı Kurulumu
Ana Makale: Linux'ta
'de Iptables Kullanmaİsteğe bağlı olarak daha fazla bağlantıyı engellemek için bir iptables güvenlik duvarı kurabilirsiniz.Örneğin, genellikle iş ağım dışındaki diğer limanlara erişimi engelliyorum. Dinamik bir IP adresiniz varsa bu seçeneği kullanmaktan kaçının.
Şimdiye kadar bu kılavuzdaki tüm adımları izlediyseniz, karışıma bir güvenlik duvarı da eklemek gerekli değildir, ancak seçeneklerinizi anlamak iyidir.
Ayrıca bkz.
- Linux'ta Iptables Kullanma
Referanslar
- DV sunucunuzu en iyileştirme( mediatemple.net)
- XCache