Özel Bir Sanal Web Sunucusunu Düzenlemek
Web sitenizi çalıştırmak için özel bir sanal sunucu elde ettiğinizde, herkes için yapılandırılmış olma şansı iyidir ve bir web sitesi çalıştırma performansını en üst düzeye çıkarmak için özelleştirilmez.
içindekiler[saklamak]
|
genel bakış
Performansı en üst düzeye çıkarmak istediğimiz bir dizi sorunlu alan var:
- Linux yapılandırması
Genelde olması gerekmeyen çalışan servisler vardır, daha fazla bağlantı için kullanılabilecek hafızayı boşa harcarlar.. - MySQL yapılandırması
Genellikle varsayılan ayarlar küçük bir sunucuya dayanı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ı, hemen hemen her modül kurulu olduğunda apache yükler. Bir daha kullanmayacaksanız modülleri yüklemek için hiçbir neden yoktur. - PHP yapılandırması
Varsayılan PHP yapılandırması da benzer şekilde şişirilir, genellikle bir ton gereksiz gereksiz modül takılır.. - PHP Opcode Önbelleği
PHP'nin komut dosyalarını her seferinde yeniden derlemesine izin vermek yerine, bir opcode önbelleği, derlenmiş komut dosyalarını büyük performans artışı için bellekte önbelleğe alır. - Yedekler
Barındırma sağlayıcınız sizin için yapmayacağından, muhtemelen bazı otomatik yedeklemeler kurmalısınız.. - Güvenlik
Tabii ki, Linux varsayılan olarak yeterince güvenlidir, ancak genellikle birkaç hızlı ayarla çözebileceğiniz bazı göze çarpan güvenlik sorunları vardır..
Linux Yapılandırması
Kullanabileceğiniz sunucuya bağlı olarak değişebilecek olan oldukça fazla sayıda tweaks var. Bu tweaks, CentOS çalıştıran bir sunucu içindir, ancak DV sunucularının çoğunluğu için çalışması gerekir..
DNS'yi devre dışı bırak
Barındırma sağlayıcınız etki alanınızın DNS’sini kullanıyorsa (muhtemelen), DNS hizmetinin çalışmasını devre dışı bırakabilirsiniz..
dns /etc/init.d/named stop chmod 644 /etc/init.d/named işlevini devre dışı bırak
Chmod komutu, başlatma sırasında çalışmasını durdurarak yürütme iznini komut dosyasından kaldırır.
SpamAssassain'ı devre dışı bırak
Sunucunuzun kendisinde e-posta hesapları kullanmıyorsanız, anti-spam araçlarını kullanmaya zahmet etmemelisiniz. (Ayrıca Google Apps’ı kontrol etmelisiniz, çok daha iyi bir e-posta çözümü)
/etc/init.d/psa-spamassassin, chmod 644'ü durdurur /etc/init.d/psa-spamassassin
Xinetd'yi devre dışı bırak
Xinetd işlemi, 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
Sınır Plesk Bellek Kullanımı
Plesk panelini kullanıyorsanız, bir seçenek dosyası ekleyerek daha az bellek kullanması için zorlayabilirsiniz..
vi / usr/local/psa/admin/conf/httpsd.custom.include
Aşağıdaki satırları dosyaya ekleyin:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
Bu seçeneğin MediaTemple DV sunucularında çalıştığı bilinir, ancak diğerlerinde kontrol edilmediğini unutmayın. (Bakınız referanslar)
Plesk'i Devre Dışı Bırak veya Kapat (isteğe bağlı)
Plesk'i yılda yalnızca bir kez kullanıyorsanız, çalışmasını sağlamak için çok az sebep 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 stop
Aşağıdaki komutu çalıştırarak başlangıçta çalışmasını devre dışı bırakabilirsiniz:
chmod 644 / etc / in.d.d/psa
Bunu devre dışı bırakırsanız, dosya izinlerini geri değiştirmeden el ile başlatamayacağınızı unutmayın (chmod u + x).
MySQL Yapılandırması
Sorgu Önbelleğini Etkinleştir
/Etc/my.cnf dosyanızı açın ve [mysqld] bölümünüze şu satırları ekleyin:
[mysqld] query-cache-type = 1 query-cache-size = 8M
İsterseniz, sorgu önbelleğine daha fazla bellek ekleyebilirsiniz, ancak çok fazla kullanmayın..
TCP / IP'yi devre dışı bırak
Şaşırtıcı sayıda ana bilgisayar varsayılan olarak TCP / IP üzerinden MySQL'e erişim sağlar; bu da bir web sitesi için bir anlam ifade etmez. 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 şu satırı ekleyin:
skip-networking
Apache Yapılandırması
Genellikle /etc/httpd/conf/httpd.conf dosyasında bulunan httpd.conf dosyanızı açın.
Şuna benzeyen çizgiyi bulun:
Zaman aşımı 120
Ve şununla değiştir:
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 sunucu ayar yaparken akılda tutulması gereken şeylerden biri, her apache dizisinin PHP'yi bellekte ayrı bir yere yükleyeceğidir. Bu, kullanılmayan bir modülün PHP'ye 256k bellek eklemesi durumunda, 40 apache dizisinde 10 MB bellek harcıyorsunuz demektir..
Gereksiz PHP Modüllerini Kaldırma
Genellikle /etc/php.ini dosyasında bulunan php.ini dosyanızı bulmanız gerekir (Bazı dağıtımlarda, .ini dosyalarının bulunduğu bir /etc/php.d/ dizini olacağına dikkat edin, her modül için bir tane.
Bu modüller ile herhangi bir loadmodule satırını yorumlayın:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ionCube yükleyici
- json
- imap
- ldap
- ncurses'in
Yapılacaklar: Buraya daha fazla bilgi ekleyin.
PHP Opcode Önbelleği
Kararlılık nedeniyle kişisel tercihim olan APC, eAccelerator ve Xcache dahil, kullanabileceğiniz çok sayıda opcode önbellek var..
Xcache'i indirip bir dizine çıkartın ve ardından xcache kaynak dizininden aşağıdaki komutları çalıştırın:
phpize ./configure - enable-xcache make make install
Php.ini dosyanızı açın ve xcache için yeni bir bölüm ekleyin. PHP modülleriniz başka bir yerden yüklendiyse yolları ayarlamanız gerekir..
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 = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache]; Opcode önbelleğinin 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 öğesini değiştirin 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 referanslardaki xcache bağlantısına ihtiyacınız var.
Yedekler
Web sitenizi otomatik olarak yedeklemekten çok daha önemli bir şey var. Çok yararlı olan barındırma sağlayıcınızdan anlık görüntü yedeklemeleri alabilirsiniz, ancak otomatik yedeklemeleri de tercih ederim..
Otomatik Yedekleme Komut Dosyası Oluştur
Genellikle / backup dizini, altında / backup / files dizini oluşturarak başlıyorum. İsterseniz bu yolları ayarlayabilirsiniz.
mkdir -p / backups / dosyalar
Şimdi yedekleme dizininde bir backup.sh betiği oluşturun:
vi /backups/backup.sh
Aşağıdakileri dosyaya ekleyin ve yolları ve mysqldump şifresini gerektiği gibi ayarlayın:
#! / bin / sh THEDATE = "tarih +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / backups / files / sitebackup $ THEDATE .tar / var / www / vhosts / web sitem-yolu / httpdocs gzip /backups/files/sitebackup$THEDATE.tar find / backups / files / site * -mtime +5 -exec rm \; find / backups / files / db * -mtime +5 -exec rm \;
Betik önce bir tarih değişkeni yaratır, böylece tüm dosyalar tek bir yedekleme için aynı olarak adlandırılır, daha sonra veritabanını dökülür, web dosyalarını toplar ve bunları gzips eder. Bulma komutları, sürücünüzde boş alan kalmasını istemediğiniz için 5 günden daha eski dosyaları kaldırmak için kullanılır..
Aşağıdaki komutu çalıştırarak betiği çalıştırılabilir duruma 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ı önceden kullanıcı hesabına giriş yaparken çalıştırarak test edebilirsiniz. (Genellikle yedekleri root olarak çalıştırırım)
Yedekleri Sitede Rsync ile Eşitle
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ı nasıl ayarlayacağınıza dair bu makaleyi okumak isteyeceksiniz: Tek Bir Komutla Uzak Sunucuya Ortak SSH Anahtarı Ekleme
Bunu, bu komutu başka bir yerde bir linux veya Mac makinesinde çalıştırarak test edebilirsiniz (Evde bir linux sunucum var;
rsync -a [email protected]: / yedekler / dosyalar / * / offsitebackups /
Bu işlemin ilk kez çalıştırılması biraz zaman alabilir, ancak sonunda yerel bilgisayarınızda / offsitebackups / dizinindeki files dizininin bir kopyası olmalıdır. (Komut dosyasını çalıştırmadan önce bu dizini oluşturduğunuzdan emin olun)
Bunu bir crontab satırına ekleyerek zamanlayabilirsiniz:
crontab -e
Her saat 45 dakikada bir rsync çalıştıracak olan aşağıdaki satırı ekleyin. Burada rsync'in tam yolunu kullandığımızı fark edeceksiniz..
45 * * * * / usr / bin / rsync -a [email protected]: / yedekler / dosyalar / * / offsitebackups /
Farklı bir zamanda veya günde yalnızca bir kez çalışacak şekilde programlayabilirsiniz. Bu gerçekten sana kalmış.
Ssh veya ftp ile senkronize etmenizi sağlayacak birçok yardımcı program bulunduğunu unutmayın. Rsync kullanmak zorunda değilsiniz.
Güvenlik
Yapmak istediğiniz ilk şey, ssh aracılığıyla kullanmak için normal bir kullanıcı hesabınızın olduğundan ve kök dizinine geçmek için su kullanabildiğinizden emin olmaktır. Root ssh üzerinden direkt olarak oturum açmak için izin vermek çok kötü bir fikirdir..
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 evet
Bu çizgiyi şöyle görünecek şekilde değiştirin:
PermitRootLogin no
Düzenli bir kullanıcı hesabınız olduğundan ve bu değişikliği yapmadan önce root isteyebileceğ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 dışında bir şey kullanmanın gerçekten bir nedeni yoktur. / Etc / ssh / sshd_config dosyasını düzenleyin ve aşağıdaki bölümü arayın:
#Protocol 2,1 Protokol 2
Gösterildiği gibi yalnızca Protokol 2'yi 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 restart
Açık Limanı Kontrol Et
Sunucunun hangi bağlantı noktalarını dinlediğini görmek için aşağıdaki komutu kullanabilirsiniz:
netstat -an | grep LISTEN
Gerçekten, plesk için 22, 80 ve muhtemelen 8443 numaralı portlardan başka bir şey dinlememelisiniz.
Güvenlik Duvarı Kur
Ana makale: Linux'ta Iptables Kullanımı
İsteğe bağlı olarak daha fazla bağlantıyı engellemek için iptables firewall kurabilirsiniz. Örneğin, genellikle iş ağım dışındaki başka bağlantı noktalarına erişimi engellerim. Dinamik bir IP adresiniz varsa, bu seçeneğin önüne geçmek istersiniz..
Şimdiye kadar bu kılavuzdaki tüm adımları uyguladıysanız, karışıma bir güvenlik duvarı eklemek de gerekmez, ancak seçeneklerinizi anlamanız iyi.
Ayrıca bakınız
- Linux'ta Iptables Kullanımı
Referanslar
- DV sunucunuzu optimize etmek (mediatemple.net)
- XCache