12Sep
Bila Anda mendapatkan server virtual khusus untuk menjalankan situs web Anda, kemungkinan besar itu dikonfigurasi untuk semua orang, dan tidak disesuaikan untuk memaksimalkan kinerja menjalankan situs web.
Daftar Isi[hide]
|
Ikhtisar
Ada sejumlah area masalah dimana kita memudart untuk memaksimalkan kinerja:
- Konfigurasi Linux
Biasanya ada layanan yang berjalan yang tidak perlu, membuang-buang memori yang bisa digunakan untuk koneksi yang lebih banyak. Konfigurasi - MySQL
Seringkali pengaturan default didasarkan pada server kecil, kita dapat menambahkan beberapa perubahan kunci untuk meningkatkan kinerja. - Konfigurasi Apache
Secara default kebanyakan penyedia hosting menginstal apache dengan hampir setiap modul yang terpasang. Tidak ada alasan untuk memuat modul jika Anda tidak pernah menggunakannya. Konfigurasi PHP -
Konfigurasi PHP default juga membengkak, biasanya ada satu ton modul ekstra yang tidak perlu terpasang. - PHP Opcode Cache
Alih-alih membiarkan PHP mengkompilasi ulang skrip setiap saat, cache opcode akan meng-cache skrip yang dikompilasi di memori karena peningkatan kinerja yang besar. - Backup
Mungkin perlu menyiapkan beberapa backup otomatis, karena penyedia hosting Anda tidak akan melakukannya untuk Anda. - Security
Tentu, Linux cukup aman secara default, tapi biasanya ada beberapa masalah keamanan yang mencolok yang dapat Anda perbaiki dengan beberapa pengaturan cepat. Konfigurasi Linux
Ada cukup banyak tweak yang dapat Anda lakukan, yang akan sedikit berbeda berdasarkan server yang Anda gunakan. Tweak ini adalah untuk server yang menjalankan CentOS, namun mereka harus bekerja untuk sebagian besar server DV.
Nonaktifkan DNS
Jika penyedia hosting Anda menangani DNS untuk domain Anda( mungkin), maka Anda dapat menonaktifkan layanan DNS agar tidak berjalan.
menonaktifkan dns /etc/init.d/ bernama stop chmod 644 /etc/init.d/ bernamaPerintah chmod menghapus izin eksekusi dari skrip, menghentikannya agar tidak berjalan saat startup.
Nonaktifkan SpamAssassain
Jika Anda tidak menggunakan akun email di server Anda sendiri, Anda tidak perlu repot-repot menjalankan alat anti-spam.(Juga Anda harus memeriksa Google Apps, solusi email yang lebih baik)
/etc/init.d/ psa-spamassassin menghentikan chmod 644 /etc/init.d/ psa-spamassassinNonaktifkan xinetd
Proses xinetd menampung sejumlah proses lainnya, tidak ada yang berguna untuk server web biasa.
/etc/init.d/ xinetd stop chmod 644 /etc/init.d/ xinetdBatasi Penggunaan Memori Plesk
Jika Anda menggunakan panel plesk, Anda dapat memaksanya menggunakan lebih sedikit memori dengan menambahkan file pilihan.
vi /usr/local/psa/admin/conf/ httpsd.custom.includeTambahkan baris berikut ke file:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5Perhatikan bahwa opsi ini diketahui bekerja pada server MediaTemple DV, namun belum diperiksa pada orang lain.(Lihat Referensi)
Nonaktifkan atau Nonaktifkan Plesk( opsional)
Jika Anda hanya menggunakan Plesk setahun sekali, hanya ada sedikit alasan untuk membiarkannya berjalan sama sekali. Perhatikan bahwa langkah ini benar-benar opsional, dan sedikit lebih maju.
Jalankan perintah berikut untuk mematikan plesk:
/etc/init.d/ psa stopAnda dapat menonaktifkannya agar tidak berjalan saat startup dengan menjalankan perintah berikut:
chmod 644 /etc/init.d/ psaPerhatikan bahwa jika Anda menonaktifkannya, Anda tidak dapat memulainya secara manual tanpamengubah hak akses file kembali( chmod u + x).
Konfigurasi MySQL
Aktifkan Query Cache
Buka file my.cnf /etc/ Anda dan tambahkan baris berikut di bagian [mysqld] Anda seperti ini:
[mysqld] query-cache-type = 1 query-cache-size = 8MAnda dapattambahkan lebih banyak memori ke cache kueri jika Anda mau, tapi jangan gunakan terlalu banyak.
Nonaktifkan TCP / IP
Sejumlah host yang mengejutkan memungkinkan akses ke MySQL pada TCP / IP secara default, yang tidak masuk akal untuk sebuah situs web. Anda bisa mengetahui apakah mysql sedang mendengarkan TCP / IP dengan menjalankan perintah berikut:
netstat -an |grep 3306Untuk menonaktifkan, tambahkan baris berikut ke file my.cnf /etc/ Anda:
skip-networkingKonfigurasi Apache
Buka file httpd.conf Anda, sering ditemukan di /etc/httpd/conf/ httpd.conf
Temukan baris yang terlihat seperti ini:
Timeout 120Dan ubah menjadi ini:
Timeout 20Sekarang temukan bagian yang menyertakan garis ini, dan sesuaikan dengan yang serupa:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000Konfigurasi PHP
Salah satu hal untukPerlu diingat ketika tweaker server pada platform PHP adalah bahwa setiap thread apache tunggal akan memuat PHP di lokasi yang terpisah di memori. Ini berarti jika modul yang tidak digunakan menambahkan 256k memori ke PHP, di 40 benang apache Anda menghabiskan 10MB memori.
Hapus Modul PHP yang Tidak Diperlukan
Anda harus menemukan file php.ini Anda, yang biasanya ditemukan di /etc/ php.ini( Perhatikan bahwa pada beberapa distro, akan ada direktori /etc/php.d/ dengan sejumlah file. ini, satu untuksetiap modul
Mengomentari setiap baris loadmodule dengan modul ini:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- ldap
- ncurses
Todo: Tambahkan lebih banyak informasi di sini.
PHP Opcode Cache
There Thereadalah sejumlah cache opcode yang dapat Anda gunakan, termasuk APC, eAccelerator, dan Xcache, yang terakhir menjadi preferensi pribadi saya karena stabilitas.
Download xcache dan ekstrak ke dalam sebuah direktori, kemudian jalankan perintah berikut dari sumber xcache.direktori:
phpize. /configure --enable-xcache buat make installBuka file php.ini anda dantambahkan bagian baru untuk xcache. Anda harus menyesuaikan jalur jika modul php Anda dimuat dari tempat lain.
vi /etc/ php.iniTambahkan bagian berikut ke file:
[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 ukuran cache opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0;Ubah xcache.var_size untuk menyesuaikan ukuran cache variabel 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 = Nonaktifkan xcache.readonly_protection =Pada xcache.mmap_path = "/tmp/ xcache" xcache.coredump_directory = "" xcache.cacher = Pada xcache.stat = Pada xcache.optimizer = OffTodo: Perlu untuk memperluas ini sedikit dan link ke xcache di referensi.
Backup
Ada sedikit lebih penting daripada memiliki backup otomatis dari situs Anda. Anda mungkin bisa mendapatkan backup snapshot dari penyedia hosting Anda, yang juga sangat berguna, tapi saya lebih memilih untuk melakukan backup otomatis juga.
Buat Skrip Backup Otomatis
Saya biasanya memulai dengan membuat direktori / backup, dengan direktori file /backups/ di bawahnya. Anda dapat menyesuaikan jalur ini jika Anda mau.
mkdir -p /backups/ fileSekarang buat skrip backup.sh di dalam direktori backup:
vi /backups/ backup.shTambahkan yang berikut ke file, sesuaikan jalur dan kata sandi mysqldump seperlunya:
#!/bin/ sh THEDATE = `date +% 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-website-path / httpdocs gzip /backups/files/ sitebackup $ THEDATE.tar temukan situs /backups/files/ * -mtime +5 -exec rm{ } \;temukan /backups/files/ db * -mtime +5 -exec rm{ } \;Script pertama akan membuat variabel tanggal sehingga semua file akan diberi nama yang sama untuk satu cadangan, lalu membuang database, memasang file web dan gzip mereka. Perintah find digunakan untuk menghapus file yang lebih tua dari 5 hari, karena Anda tidak ingin drive Anda kehabisan ruang.
Buat skrip dieksekusi dengan menjalankan perintah berikut:
chmod u + x /backups/ backup.shSelanjutnya Anda harus menetapkannya untuk dijalankan secara otomatis oleh cron. Pastikan Anda menggunakan akun yang memiliki akses ke direktori backup.
crontab -eTambahkan baris berikut ke crontab:
1 1 * * * /backups/ backup.shAnda dapat menguji skrip sebelumnya dengan menjalankannya saat masuk ke akun pengguna.(Saya biasanya menjalankan backup sebagai root)
Sync Backup Off-Site Dengan Rsync
Sekarang setelah backup otomatis server Anda berjalan, Anda dapat menyinkronkannya di tempat lain dengan menggunakan utilitas rsync. Anda akan ingin membaca artikel ini tentang cara men-setup tombol ssh untuk login otomatis: Tambahkan Kunci SSH Publik ke Server Jauh dalam Command Tunggal
Anda dapat menguji ini dengan menjalankan perintah ini pada mesin linux atau Mac di lokasi lain( Imemiliki server linux di rumah, di situlah saya menjalankan ini)
rsync -a [email protected]: /backups/files/ * /offsitebackups/Ini akan memakan waktu cukup lama untuk dijalankan pertama kali, namun pada akhirnya komputer lokal Anda harus memiliki salinandari direktori file dalam direktori /offsitebackups/.(Pastikan untuk membuat direktori itu sebelum menjalankan skrip)
Anda dapat menjadwalkan ini dengan menambahkannya ke baris crontab:
crontab -eTambahkan baris berikut, yang akan menjalankan rsync setiap jam pada tanda 45 menit. Anda akan melihat bahwa kita menggunakan path lengkap untuk rsync di sini.
45 * * * * /usr/bin/ rsync -a [email protected]: /backups/files/ * /offsitebackups/Anda bisa menjadwalkannya untuk berjalan pada waktu yang berbeda, atau hanya sekali per hari. Itu benar-benar terserah Anda.
Perhatikan bahwa ada banyak utilitas yang memungkinkan Anda melakukan sinkronisasi via ssh atau ftp. Anda tidak perlu menggunakan rsync.
Security
Hal pertama yang ingin Anda lakukan adalah memastikan bahwa Anda memiliki akun pengguna biasa untuk digunakan melalui ssh, dan pastikan Anda dapat menggunakan su untuk beralih ke root. Ini adalah ide yang sangat buruk untuk memungkinkan login langsung untuk root over ssh.
Nonaktifkan Login Root Melalui SSH
Edit file /etc/ssh/ sshd_config, dan cari baris berikut:
#PermitRootLogin yesUbah baris itu agar terlihat seperti ini:
PermitRootLogin noPastikan Anda mempunyai akun pengguna biasa dan dapat melakukan su keAkar sebelum Anda membuat perubahan ini, jika tidak, Anda bisa mengunci diri Anda sendiri.
Nonaktifkan SSH Versi 1
Sebenarnya tidak ada alasan untuk menggunakan versi selain SSH 2, karena lebih aman dari versi sebelumnya. Edit file sshd_config /etc/ssh/, dan cari bagian berikut:
#Protocol 2,1 Protokol 2Pastikan Anda hanya menggunakan Protokol 2 seperti yang ditunjukkan.
Restart SSH Server
Sekarang Anda perlu me-restart server SSH untuk membuat ini berlaku.
/etc/init.d/ sshd restartPeriksa Port Buka
Anda dapat menggunakan perintah berikut untuk melihat port mana yang didengarkan server:
netstat -an |grep DENGARKANAnda seharusnya tidak mendengarkan apapun selain port 22, 80, dan mungkin 8443 untuk plesk.
Setup Firewall
Artikel Utama: Menggunakan Iptables di Linux
Anda dapat secara opsional mensetup firewall iptables untuk memblokir lebih banyak koneksi. Misalnya, saya biasanya memblokir akses ke port lain selain dari jaringan kerja saya. Jika Anda memiliki alamat IP dinamis, Anda ingin menghindari pilihan itu.
Jika Anda telah mengikuti semua langkah dalam panduan ini sejauh ini, mungkin Anda juga tidak perlu menambahkan firewall ke dalam campuran, tapi ada baiknya untuk memahami pilihan Anda.
Lihat Juga
- Menggunakan Iptables di Linux
Referensi
- Mengoptimalkan server DV Anda( mediatemple.net)
- XCache