Tweaking Server Web Virtual Dedicated
Apabila anda mendapatkan pelayan maya yang berdedikasi untuk menjalankan laman web anda, peluangnya adalah baik bahawa ia dikonfigurasi untuk semua orang, dan tidak disesuaikan untuk memaksimumkan prestasi untuk menjalankan laman web.
Kandungan[sembunyi]
|
Gambaran keseluruhan
Terdapat beberapa kawasan masalah di mana kami ingin memaksimumkan prestasi:
- Konfigurasi Linux
Biasanya terdapat perkhidmatan yang tidak perlu, membazirkan memori yang boleh digunakan untuk lebih banyak sambungan. - Konfigurasi MySQL
Selalunya tetapan lalai didasarkan pada pelayan kecil, kita boleh menambah beberapa perubahan penting untuk meningkatkan prestasi yang banyak. - Konfigurasi Apache
Secara lalai kebanyakan pembekal hosting memasang apache dengan hampir setiap modul yang dipasang. Tidak ada sebab untuk memuat modul jika anda tidak akan menggunakannya. - Konfigurasi PHP
Konfigurasi PHP lalai juga dibengkokkan, biasanya terdapat satu ton modul tambahan yang tidak perlu dipasang. - PHP Opcode Cache
Daripada membenarkan PHP untuk mengkompilasi semula skrip setiap kali, cache opcode akan menyembunyikan skrip yang disusun dalam ingatan untuk meningkatkan prestasi tinggi. - Backup
Sekiranya mungkin membuat persediaan beberapa sandaran automatik, kerana penyedia hosting anda tidak akan melakukannya untuk anda. - Keselamatan
Pastinya, Linux cukup selamat secara lalai, tetapi biasanya terdapat beberapa isu keselamatan yang dapat anda selesaikan dengan beberapa tetapan cepat.
Konfigurasi Linux
Terdapat beberapa tweak yang boleh anda lakukan, yang akan sedikit berbeza berdasarkan pelayan yang anda gunakan. Tweak ini adalah untuk pelayan yang menjalankan CentOS, tetapi mereka harus bekerja untuk majoriti pelayan DV.
Lumpuhkan DNS
Jika penyedia hosting anda mengendalikan DNS untuk domain anda (mungkin), maka anda boleh mematikan perkhidmatan DNS daripada berjalan.
lumpuhkan dns /etc/init.d/named stop chmod 644 /etc/init.d/named
Perintah chmod mengalih keluar kebenaran dari skrip, menghentikannya daripada berjalan pada permulaan.
Lumpuhkan SpamAssassain
Jika anda tidak menggunakan akaun e-mel pada pelayan anda sendiri, anda tidak perlu bersusah payah menjalankan alat anti-spam. (Anda juga harus menyemak Google Apps, penyelesaian e-mel yang lebih baik)
/etc/init.d/psa-spamassassin hentikan chmod 644 /etc/init.d/psa-spamassassin
Lumpuhkan xinetd
Proses xinetd menempatkan beberapa proses lain, tidak ada yang berguna untuk pelayan web biasa.
/etc/init.d/xinetd berhenti chmod 644 /etc/init.d/xinetd
Hadkan Penggunaan Memori Plesk
Jika anda menggunakan panel plesk, anda boleh memaksanya untuk menggunakan memori yang kurang dengan menambah fail pilihan.
vi /usr/local/psa/admin/conf/httpsd.custom.include
Tambah baris berikut ke fail:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
Perhatikan bahawa opsyen ini diketahui berfungsi pada pelayan MediaTemple DV, tetapi belum diperiksa pada mana-mana orang lain. (Lihat Rujukan)
Lumpuhkan atau Matikan Plesk (pilihan)
Jika anda hanya menggunakan Plesk sekali setahun, ada sebab yang sangat sedikit untuk membiarkannya berjalan sama sekali. Ambil perhatian bahawa langkah ini adalah sepenuhnya pilihan, dan sedikit lebih maju.
Jalankan arahan berikut untuk mematikan plesk:
/etc/init.d/psa stop
Anda boleh mematikannya daripada berjalan pada permulaan dengan menjalankan arahan berikut:
chmod 644 /etc/init.d/psa
Ambil perhatian bahawa jika anda melumpuhkannya, maka anda tidak boleh memulakannya secara manual tanpa mengubah keizinan fail kembali (chmod u + x).
Konfigurasi MySQL
Dayakan Cache Query
Buka fail /etc/my.cnf anda dan tambahkan baris berikut dalam bahagian [mysqld] anda seperti ini:
[mysqld] query-cache-type = 1 query-cache-size = 8M
Anda boleh menambah lebih banyak memori ke cache pertanyaan jika anda mahu, tetapi jangan gunakan terlalu banyak.
Lumpuhkan TCP / IP
Bilangan tuan rumah yang mengejutkan membolehkan akses kepada MySQL pada TCP / IP secara lalai, yang tidak masuk akal untuk laman web. Anda boleh mengetahui sama ada mysql sedang mendengar pada TCP / IP dengan menjalankan perintah berikut:
netstat -an | grep 3306
Untuk melumpuhkan, tambah baris berikut ke fail /etc/my.cnf anda:
skip-networking
Konfigurasi Apache
Buka fail httpd.conf anda, sering dijumpai di /etc/httpd/conf/httpd.conf
Cari baris yang kelihatan seperti ini:
Masa tunggu 120
Dan ubahlah ini:
Masa tunggu 20
Sekarang cari bahagian yang merangkumi garis-garis ini, dan sesuaikan dengan sesuatu yang serupa:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
Konfigurasi PHP
Salah satu perkara yang perlu diingat apabila tweaking pelayan di platform PHP adalah bahawa setiap thread apache tunggal akan memuatkan PHP di lokasi berasingan dalam ingatan. Ini bermakna jika modul yang tidak digunakan menambah 256k memori ke PHP, merentasi 40 benang apache anda membazir memori 10MB.
Keluarkan Modul PHP Yang Tidak Diperlukan
Anda perlu mencari fail php.ini anda, yang biasanya terdapat di /etc/php.ini (Perhatikan bahawa pada beberapa pengedaran, terdapat direktori /etc/php.d/ dengan beberapa fail .ini, satu untuk setiap modul.
Komen mana-mana baris loadmodule dengan modul ini:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- ldap
- ncurses
Todo: Tambah maklumat lanjut di sini.
PHP Opcode Cache
Terdapat beberapa cache opcode yang boleh anda gunakan, termasuk APC, eAccelerator, dan Xcache, yang terakhir adalah pilihan peribadi saya kerana kestabilan.
Muat turun xcache dan ekstraknya ke direktori, kemudian jalankan arahan berikut dari direktori sumber xcache:
phpize ./configure --enable-xcache membuat membuat pemasangan
Buka fail php.ini dan tambahkan bahagian baru untuk xcache. Anda perlu menyesuaikan laluan jika modul php anda dimuatkan dari tempat lain.
vi /etc/php.ini
Tambahkan bahagian berikut pada fail:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache]; Ubah xcache.size untuk menyesuaikan saiz cache opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Tukar xcache.var_size untuk melaraskan saiz cache ubah 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.readonly_protection = Pada xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Pada xcache.stat = Pada xcache.optimizer = Off
Todo: Perlu mengembangkan sedikit ini dan menghubungkan ke xcache dalam rujukan.
Backup
Terdapat sedikit lebih penting daripada mempunyai sandaran automatik laman web anda. Anda mungkin dapat mendapatkan sandaran snapshot daripada penyedia hosting anda, yang juga sangat berguna, tetapi saya lebih suka mempunyai backup automatik juga.
Buat Skrip Sandaran Automatik
Saya biasanya mula membuat direktori / backup, dengan direktori / sandaran / fail di bawahnya. Anda boleh menyesuaikan laluan ini jika anda mahu.
mkdir -p / sandaran / fail
Sekarang buat script backup.sh di dalam direktori sandaran:
vi / backups / backup.sh
Tambahkan yang berikut ke fail, menyesuaikan kata laluan dan kata laluan mysqldump yang diperlukan:
#! / bin / sh THEDATE = "tarikh +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / backup / files / sitebackup $ THEDATE .tar / var / www / vhosts / my-website-path / httpdocs gzip /backups/files/sitebackup$THEDATE.tar find / backups / files / site * -mtime +5 -exec rm \; mencari / sandaran / fail / db * -mtime +5 -exec rm \;
Skrip pertama akan membuat pembolehubah tarikh supaya semua fail akan dinamakan sama untuk sandaran tunggal, kemudian membuang pangkalan data, mencantumkan fail web dan gzip mereka. Perintah carian digunakan untuk mengalih keluar sebarang fail lebih lama dari 5 hari, kerana anda tidak mahu pemacu anda kehabisan ruang.
Buat skrip yang boleh dilaksanakan dengan menjalankan perintah berikut:
chmod u + x / backups / backup.sh
Seterusnya anda perlu menetapkannya untuk dijalankan secara automatik oleh cron. Pastikan anda menggunakan akaun yang mempunyai akses ke direktori sandaran.
crontab -e
Tambah baris berikut ke crontab:
1 1 * * * /backups/backup.sh
Anda boleh menguji skrip sebelum masa dengan menjalankannya semasa log masuk ke akaun pengguna. (Saya biasanya menjalankan sandaran sebagai root)
Penyegerakan Penyegerakan Luar Tapak Dengan Rsync
Sekarang bahawa anda mempunyai sandaran automatik pelayan anda berjalan, anda boleh menyegerakkannya di tempat lain dengan menggunakan utiliti rsync. Anda akan mahu membaca artikel ini tentang cara menyusun kunci ssh untuk log masuk automatik: Tambah Kunci SSH Umum kepada Pelayan Jauh dalam Command Single
Anda boleh menguji ini dengan menjalankan arahan ini pada mesin linux atau Mac di lokasi lain (saya mempunyai pelayan linux di rumah, di mana saya menjalankannya)
rsync -a [email protected]: / sandaran / fail / * / offsitebackups /
Ini akan mengambil masa yang agak lama untuk dijalankan buat kali pertama, tetapi pada akhirnya komputer tempatan anda sepatutnya mempunyai salinan direktori file dalam / offsitebackups / direktori. (Pastikan untuk mencipta direktori tersebut sebelum menjalankan skrip)
Anda boleh menjadualkan ini dengan menambahkannya ke baris crontab:
crontab -e
Tambahkan baris berikut, yang akan berjalan rsync setiap jam pada tanda 45 minit. Anda akan melihat bahawa kami menggunakan laluan penuh ke rsync di sini.
45 * * * * / usr / bin / rsync -a [email protected]: / sandaran / fail / * / offsitebackups /
Anda boleh menjadualkannya untuk berlari pada masa yang berlainan, atau hanya sekali sehari. Itu sememangnya terpulang kepada anda.
Perhatikan bahawa terdapat banyak utiliti yang akan membolehkan anda menyegerakkan melalui ssh atau ftp. Anda tidak perlu menggunakan rsync.
Keselamatan
Perkara pertama yang anda ingin lakukan ialah pastikan anda mempunyai akaun pengguna biasa untuk menggunakan melalui ssh, dan pastikan anda boleh menggunakan su untuk bertukar menjadi root. Idea yang sangat buruk untuk membolehkan log masuk terus untuk root di atas ssh.
Lumpuhkan Login Root Lebih SSH
Edit fail / etc / ssh / sshd_config, dan cari baris berikut:
#PermitRootLogin ya
Tukar baris itu untuk kelihatan seperti ini:
PermitRootLogin no
Pastikan anda mempunyai akaun pengguna biasa dan boleh su root sebelum membuat perubahan ini, jika tidak, anda mungkin mengunci diri anda.
Lumpuhkan Versi SSH 1
Tidak ada sebab untuk menggunakan apa-apa selain SSH versi 2, kerana ia lebih selamat daripada versi sebelumnya. Edit fail / etc / ssh / sshd_config, dan cari bahagian berikut:
# Protokol 2,1 Protokol 2
Pastikan bahawa anda hanya menggunakan Protokol 2 seperti yang ditunjukkan.
Restart SSH Server
Sekarang, anda perlu memulakan semula pelayan SSH untuk melaksanakannya.
/etc/init.d/sshd restart
Semak Pelabuhan Terbuka
Anda boleh menggunakan arahan berikut untuk melihat mana pelabuhan pelayan sedang mendengar:
netstat -an | grep LISTEN
Anda benar-benar tidak sepatutnya mendengar apa-apa daripada pelabuhan 22, 80, dan mungkin 8443 untuk plesk.
Menyediakan Firewall
Artikel utama: Menggunakan Iptables di Linux
Anda boleh membuat pilihan firewall iptables untuk menghalang lebih banyak sambungan. Sebagai contoh, saya biasanya menyekat akses kepada mana-mana pelabuhan lain selain dari rangkaian kerja saya. Sekiranya anda mempunyai alamat IP dinamik, anda ingin mengelakkan pilihan tersebut.
Jika anda telah mengikuti semua langkah dalam panduan ini setakat ini, mungkin tidak perlu juga menambah firewall pada campuran itu, tetapi ia adalah baik untuk memahami pilihan anda.
Lihat juga
- Menggunakan Iptables di Linux
Rujukan
- Mengoptimumkan pelayan DV anda (mediatemple.net)
- XCache