Web sitenizi çalıştırmak için özel bir sanal sunucu aldığınızda, herkes için yapılandırılmış olması ve bir web sitesi çalıştırma performansını en üst düzeye çıkarmak için özelleştirilmemesi ihtimali yüksektir.
İçindekiler[ saklamak ]
|
Genel Bakış
Performansı en üst düzeye çıkarmak istediğimiz birkaç sorun alanı vardır:
-
Linux yapılandırması
Genellikle, çalışması gerekmeyen ve daha fazla bağlantı için kullanılabilecek belleği boşa harcayan hizmetler vardır. -
MySQL yapılandırması
Genellikle varsayılan ayarlar küçük bir sunucuya dayalıdır, performansı büyük ölçüde 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ısı apache'yi neredeyse her modül yüklü olarak kurar. Hiç kullanmayacaksanız modülleri yüklemeniz için bir neden yoktur. -
PHP yapılandırması
Varsayılan PHP yapılandırması benzer şekilde şişirilmiştir, genellikle yüklü bir ton gereksiz ekstra modül vardır. -
PHP İşlem Kodu Önbelleği
PHP'nin her seferinde komut dosyalarını yeniden derlemesine izin vermek yerine, bir işlem kodu önbelleği, büyük performans artışları için derlenmiş komut dosyalarını bellekte önbelleğe alır. -
Yedeklemeler
Barındırma sağlayıcınız bunu sizin için yapmayacağından, muhtemelen bazı otomatik yedeklemeler kurmalısınız. -
Güvenlik
Elbette, Linux varsayılan olarak yeterince güvenlidir, ancak genellikle birkaç hızlı ayarla düzeltebileceğiniz göze çarpan bazı güvenlik sorunları vardır.
Linux Yapılandırması
Yapabileceğiniz epeyce ince ayar vardır ve bu, kullanmakta olduğunuz sunucuya bağlı olarak biraz farklılık gösterir. Bu ince ayarlar CentOS çalıştıran bir sunucu içindir, ancak DV sunucularının çoğu için çalışmalıdır.
DNS'yi devre dışı bırakın
Barındırma sağlayıcınız etki alanınız için DNS işliyorsa (muhtemelen), o zaman DNS hizmetinin çalışmasını devre dışı bırakabilirsiniz.
dns'yi devre dışı bırak /etc/init.d/named stop chmod 644 /etc/init.d/named
Chmod komutu, komut dosyasından yürütme iznini kaldırır ve başlangıçta çalışmasını durdurur.
SpamAssassin'i devre dışı bırakın
Sunucunuzun kendisinde e-posta hesapları kullanmıyorsanız, anti-spam araçlarını çalıştırmaya zahmet etmemelisiniz. (Ayrıca Google Apps'a göz atmalısınız, çok daha iyi bir e-posta çözümü)
/etc/init.d/psa-spamassassin durdurma chmod 644 /etc/init.d/psa-spamassassin
Xinetd'yi devre dışı bırak
Xinetd süreci, hiçbiri tipik bir web sunucusu için kullanışlı olmayan bir dizi başka işlemi barındırır.
/etc/init.d/xinetd durdur chmod 644 /etc/init.d/xinetd
Plesk Bellek Kullanımını Sınırla
Plesk panelini kullanırsanız, bir seçenek dosyası ekleyerek daha az bellek kullanmaya zorlayabilirsiniz.
vi /usr/local/psa/admin/conf/httpsd.custom.include
Dosyaya aşağıdaki satırları ekleyin:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
Bu seçeneğin MediaTemple DV sunucularında çalıştığının bilindiğini, ancak diğerlerinde kontrol edilmediğini unutmayın. (Görmek Referanslar )
Plesk'i Devre Dışı Bırak veya Kapat (isteğe bağlı)
Plesk'i yılda sadece bir kez kullanırsanız, onu çalışır durumda bırakmak için çok az neden vardır. Bu adımın tamamen isteğe bağlı 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 durdur
Aşağıdaki komutu çalıştırarak başlangıçta çalışmasını devre dışı bırakabilirsiniz:
chmod 644 /etc/init.d/psa
Devre dışı bırakırsanız, dosya izinlerini geri değiştirmeden (chmod u + x) manuel olarak başlatamayacağınızı unutmayın.
MySQL Yapılandırması
Sorgu Önbelleğini Etkinleştir
/Etc/my.cnf dosyanızı açın ve [mysqld] bölümünüze aşağıdaki gibi aşağıdaki satırları ekleyin:
[mysqld] sorgu-önbellek türü = 1 sorgu önbellek boyutu = 8 milyon
İsterseniz sorgu önbelleğine daha fazla bellek ekleyebilirsiniz, ancak çok fazla kullanmayın.
TCP / IP'yi devre dışı bırakın
Şaşırtıcı sayıda ana bilgisayar, varsayılan olarak TCP / IP üzerinden MySQL'e erişimi etkinleştirir, bu bir web sitesi için mantıklı değildir. Aşağıdaki komutu çalıştırarak mysql'in TCP / IP'yi dinleyip dinlemediğini anlayabilirsiniz:
netstat -an | grep 3306
Devre dışı bırakmak için /etc/my.cnf dosyanıza aşağıdaki satırı ekleyin:
atlama ağı
Apache Yapılandırması
Genellikle /etc/httpd/conf/httpd.conf adresinde bulunan httpd.conf dosyanızı açın.
Şuna benzeyen satırı bulun:
Zaman aşımı 120
Ve şuna değiştirin:
Zaman aşımı 20
Şimdi bu satırları içeren bölümü bulun ve benzer bir şeye ayarlayın:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
PHP Yapılandırması
PHP platformunda bir sunucuda ince ayarlar yaparken akılda tutulması gereken şeylerden biri, her apache iş parçacığının PHP'yi bellekte ayrı bir konuma yükleyeceğidir. Bu, kullanılmayan bir modül PHP'ye 256k bellek eklerse, 40 apache iş parçacığı boyunca 10MB bellek harcadığınız anlamına gelir.
Gereksiz PHP Modüllerini Kaldır
Genellikle /etc/php.ini adresinde bulunan php.ini dosyanızı bulmanız gerekecek (Bazı dağıtımlarda birkaç .ini dosyası içeren bir /etc/php.d/ dizini olacağını unutmayın. her modül için bir tane.
Bu modüllerle herhangi bir yük modülü satırını yorumlayın:
- Odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube yükleyici
- json
- imap
- ldap
- ncurses
Yapılacaklar: Buraya daha fazla bilgi ekleyin.
PHP İşlem Kodu Önbelleği
APC, eAccelerator ve Xcache dahil kullanabileceğiniz bir dizi işlem kodu önbelleği vardır, sonuncusu kararlılık nedeniyle kişisel tercihimdir.
Xcache'yi indirin ve bir dizine çıkarın ve ardından xcache kaynak dizininden aşağıdaki komutları çalıştırın:
phpize etmek ./configure --enable-xcache Yapmak kurmak yap
Php.ini dosyanızı açın ve xcache için yeni bir bölüm ekleyin. Php modülleriniz başka bir yerden yüklenmişse, yolları ayarlamanız gerekecektir.
vi /etc/php.ini
Aşağıdaki bölümü dosyaya ekleyin:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "kullanıcı adım" xcache.admin.pass = "putanmd5hashhere" [xcache] ; İşlem kodu önbelleğinin boyutunu ayarlamak için xcache.size değerini değiştirin xcache.size = 16 milyon xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0 ; Değişken önbelleğin boyutunu ayarlamak için xcache.var_size değerini değiştirin xcache.var_size = 1 milyon 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 = Açık xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Açık xcache.stat = Açık xcache.optimizer = Kapalı
Yapılacaklar: Bunu biraz genişletmeniz ve referanslarda xcache ile bağlantı kurmanız gerekiyor.
Yedeklemeler
Web sitenizin otomatik yedeklemelerine sahip olmaktan çok daha az şey vardır. Anlık görüntü yedeklerini barındırma sağlayıcınızdan alabilirsiniz, bu da çok yararlıdır, ancak ben de otomatik yedeklemeleri tercih ederim.
Otomatik Yedekleme Komut Dosyası Oluşturun
Genelde altında / backups / files dizini olan bir / backups dizini oluşturarak başlarım. İsterseniz bu yolları ayarlayabilirsiniz.
mkdir -p / backups / files
Şimdi, backups dizini içinde bir backup.sh betiği oluşturun:
vi /backups/backup.sh
Yolları ve mysqldump şifresini gerektiği gibi ayarlayarak aşağıdakileri dosyaya ekleyin:
#! / bin / sh
THEDATE = `tarih +% d% m% y% H% M`
mysqldump -uadmin -pASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak
tar -cf /backups/files/sitebackup$THEDATE.tar / var / www / vhosts / web-sitem-yolum / httpdocs
gzip /backups/files/sitebackup$THEDATE.tar
bul / yedekler / dosyalar / site * -mtime +5 -exec rm {} \;
find / backups / files / db * -mtime +5 -exec rm {} \;
Komut dosyası önce bir tarih değişkeni oluşturur, böylece tüm dosyalar tek bir yedekleme için aynı şekilde adlandırılır, ardından veritabanını döker, web dosyalarını tarar ve bunları gzip'le gönderir. Bul komutları, sürücünüzün yerinin bitmesini istemediğiniz için 5 günden eski dosyaları kaldırmak için kullanılır.
Aşağıdaki komutu çalıştırarak komut dosyasını çalıştırılabilir hale getirin:
chmod u + x /backups/backup.sh
Daha sonra, cron tarafından otomatik olarak çalışacak şekilde atamanız gerekir. Yedekleme dizinine erişimi olan bir hesap kullandığınızdan emin olun.
crontab -e
Aşağıdaki satırı crontab'a ekleyin:
1 1 * * * /backups/backup.sh
Komut dosyasını, kullanıcı hesabında oturum açmışken çalıştırarak önceden test edebilirsiniz. (Genellikle yedeklemeleri root olarak çalıştırırım)
Rsync ile Yedeklemeleri Site Dışında Senkronize Etme
Artık sunucunuzun otomatik yedeklemelerini çalıştırdığınıza göre, rsync yardımcı programını kullanarak bunları başka bir yerde eşitleyebilirsiniz. Otomatik oturum açma için ssh anahtarlarının nasıl ayarlanacağıyla ilgili bu makaleyi okumak isteyeceksiniz: Tek Komutta Uzak Sunucuya Genel SSH Anahtarı Ekleme
Bu komutu bir Linux veya Mac makinede başka bir konumda çalıştırarak bunu test edebilirsiniz (evde bir linux sunucum var, bunu çalıştırdığım yer burasıdır)
rsync -kullanıcı@website.com: / backups / files / * / offsitebackups /
Bu işlemin ilk çalıştırılması epey zaman alacaktır, ancak sonunda yerel bilgisayarınızın / offsitebackups / dizinindeki dosyalar dizininin bir kopyasına sahip olması gerekir. (Komut dosyasını çalıştırmadan önce bu dizini oluşturduğunuzdan emin olun)
Bunu bir crontab hattına ekleyerek planlayabilirsiniz:
crontab -e
45 dakika işaretinde her saat rsync çalıştıracak olan aşağıdaki satırı ekleyin. Burada senkronizasyon için tam yolu kullandığımızı fark edeceksiniz.
45 * * * * / usr / bin / rsync -kullanıcı@website.com: / backups / files / * / offsitebackups /
Bunu farklı bir saatte veya günde yalnızca bir kez çalışacak şekilde planlayabilirsiniz. Bu gerçekten size kalmış.
Ssh veya ftp aracılığıyla eşitlemenizi sağlayacak birçok yardımcı program olduğunu unutmayın. Rsync kullanmak zorunda değilsiniz.
Güvenlik
Yapmak isteyeceğiniz ilk şey, ssh aracılığıyla kullanabileceğiniz normal bir kullanıcı hesabınız olduğundan emin olmak ve root'a geçmek için su kullanabileceğinizden emin olmaktır. Ssh üzerinden kök için doğrudan girişe izin vermek çok kötü bir fikirdir.
SSH Üzerinden Kök Oturum Açmayı Devre Dışı Bırak
/ Etc / ssh / sshd_config dosyasını düzenleyin ve aşağıdaki satırı arayın:
#PermitRootLogin evet
Bu satırı şöyle görünecek şekilde değiştirin:
PermitRootLogin hayır
Normal bir kullanıcı hesabına sahip olduğunuzdan ve bu değişikliği yapmadan önce root'a başvurabileceğinizden emin olun, aksi takdirde kendinizi kilitleyebilirsiniz.
SSH Sürüm 1'i devre dışı bırakın
Önceki sürümlerden daha güvenli olduğu için SSH sürüm 2'den başka bir şey kullanmak için gerçekten bir neden yok. / Etc / ssh / sshd_config dosyasını düzenleyin ve aşağıdaki bölümü arayın:
#Protocol 2,1 Protokol 2
Yalnızca Protokol 2'yi gösterildiği gibi kullandığınızdan emin olun.
SSH Sunucusunu Yeniden Başlatın
Şimdi bunun etkili olması için SSH sunucusunu yeniden başlatmanız gerekecek.
/etc/init.d/sshd yeniden başlat
Açık Bağlantı Noktalarını Kontrol Edin
Sunucunun hangi bağlantı noktalarını dinlediğini görmek için aşağıdaki komutu kullanabilirsiniz:
netstat -an | grep DİNLE
Plesk için 22, 80 ve muhtemelen 8443 numaralı bağlantı noktalarından başka dinleyen bir şeye sahip olmamalısınız.
Güvenlik Duvarı Kurun
Daha fazla bağlantıyı engellemek için isteğe bağlı olarak bir iptables güvenlik duvarı kurabilirsiniz. Örneğin, genellikle iş ağım dışındaki bağlantı noktalarına erişimi engelliyorum. Dinamik bir IP adresiniz varsa, bu seçenekten kaçınmak isteyeceksiniz.
Şimdiye kadar bu kılavuzdaki tüm adımları zaten uyguladıysanız, muhtemelen karışıma bir güvenlik duvarı da eklemeniz gerekmeyebilir, ancak seçeneklerinizi anlamak iyidir.
Ayrıca bakınız
- Linux'ta Iptables kullanma