Tweaking Server Web Virtual Khusus
Ketika Anda mendapatkan server virtual khusus untuk menjalankan situs web Anda, kemungkinan besar itu dikonfigurasi untuk semua orang, dan tidak disesuaikan untuk memaksimalkan kinerja untuk menjalankan situs web.
Isi[menyembunyikan]
|
Ikhtisar
Ada sejumlah bidang masalah di mana kami ingin memaksimalkan kinerja:
- Konfigurasi Linux
Biasanya ada layanan yang berjalan yang tidak perlu, membuang-buang memori yang dapat digunakan untuk lebih banyak koneksi. - Konfigurasi MySQL
Seringkali pengaturan default didasarkan pada server kecil, kita dapat menambahkan beberapa perubahan kunci untuk meningkatkan kinerja. - Konfigurasi Apache
Secara default, sebagian besar penyedia hosting memasang apache dengan hampir setiap modul terpasang. Tidak ada alasan untuk memuat modul jika Anda tidak akan menggunakannya. - Konfigurasi PHP
Konfigurasi PHP default juga membengkak, biasanya ada satu ton modul tambahan yang tidak perlu diinstal. - Cache Kode PHP
Alih-alih mengizinkan PHP untuk mengkompilasi ulang skrip setiap kali, cache opcode akan men-cache skrip yang dikompilasi dalam memori untuk meningkatkan kinerja besar. - Cadangan
Seharusnya mungkin menyiapkan beberapa cadangan otomatis, karena penyedia hosting Anda tidak akan melakukannya untuk Anda. - Keamanan
Tentu saja, Linux cukup aman secara default, tetapi 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 untuk server yang menjalankan CentOS, tetapi mereka harus bekerja untuk sebagian besar server DV.
Nonaktifkan DNS
Jika penyedia hosting Anda menangani DNS untuk domain Anda (kemungkinan), maka Anda dapat menonaktifkan layanan DNS agar tidak berjalan.
menonaktifkan dns /etc/init.d/named stop chmod 644 /etc/init.d/named
Perintah 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. (Anda juga harus memeriksa Google Apps, solusi email yang jauh lebih baik)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Nonaktifkan xinetd
Proses xinetd menampung sejumlah proses lain, tidak ada yang berguna untuk server web biasa.
/etc/init.d/xinetd berhenti chmod 644 /etc/init.d/xinetd
Batasi Penggunaan Memori Plesk
Jika Anda menggunakan panel plesk, Anda dapat memaksanya untuk menggunakan lebih sedikit memori dengan menambahkan file opsi.
vi /usr/local/psa/admin/conf/httpsd.custom.include
Tambahkan baris berikut ke file:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
Perhatikan bahwa opsi ini diketahui berfungsi pada server MediaTemple DV, tetapi belum diperiksa pada yang lain. (Lihat Referensi)
Nonaktifkan atau Matikan Plesk (opsional)
Jika Anda hanya menggunakan Plesk setahun sekali, sangat sedikit alasan untuk membiarkannya tetap berjalan. Perhatikan bahwa langkah ini sepenuhnya opsional, dan sedikit lebih maju.
Jalankan perintah berikut untuk mematikan plesk:
/etc/init.d/psa berhenti
Anda dapat menonaktifkannya agar tidak berjalan saat startup dengan menjalankan perintah berikut:
chmod 644 /etc/init.d/psa
Perhatikan bahwa jika Anda menonaktifkannya, maka Anda tidak dapat memulainya secara manual tanpa mengubah kembali izin file (chmod u + x).
Konfigurasi MySQL
Aktifkan Cache Kueri
Buka file /etc/my.cnf Anda dan tambahkan baris berikut di bagian [mysqld] Anda seperti ini:
[mysqld] query-cache-type = 1 query-cache-size = 8M
Anda dapat menambahkan lebih banyak memori ke cache kueri jika Anda mau, tetapi jangan terlalu banyak menggunakan.
Nonaktifkan TCP / IP
Sejumlah host yang mengejutkan memungkinkan akses ke MySQL pada TCP / IP secara default, yang tidak masuk akal untuk situs web. Anda dapat mengetahui apakah mysql mendengarkan pada TCP / IP dengan menjalankan perintah berikut:
netstat -an | grep 3306
Untuk menonaktifkan, tambahkan baris berikut ke file /etc/my.cnf Anda:
lewati-jaringan
Konfigurasi Apache
Buka file httpd.conf Anda, sering ditemukan di /etc/httpd/conf/httpd.conf
Temukan garis yang terlihat seperti ini:
Batas waktu 120
Dan ubah ke ini:
Batas waktu 20
Sekarang temukan bagian yang menyertakan 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 hal yang perlu diingat ketika mengutak-atik server pada platform PHP adalah bahwa setiap utas apache akan memuat PHP di lokasi terpisah dalam memori. Ini berarti jika modul yang tidak digunakan menambah 256k memori ke PHP, di 40 utas apache Anda menghabiskan 10MB memori.
Hapus Modul PHP yang tidak dibutuhkan
Anda harus mencari file php.ini Anda, yang biasanya ditemukan di /etc/php.ini (Perhatikan bahwa pada beberapa distribusi, akan ada direktori /etc/php.d/ dengan sejumlah file .ini, satu untuk setiap modul.
Komentari setiap baris modul beban dengan modul-modul ini:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- ioncube-loader
- json
- imap
- lap
- ncurses
Todo: Tambahkan informasi lebih lanjut di sini.
Cache Kode PHP
Ada sejumlah cache opcode yang dapat Anda gunakan, termasuk APC, eAccelerator, dan Xcache, yang terakhir adalah preferensi pribadi saya karena stabilitas.
Unduh xcache dan ekstrak ke direktori, lalu jalankan perintah berikut dari direktori sumber xcache:
phpize ./configure --enable-xcache make make install
Buka file php.ini Anda dan tambahkan bagian baru untuk xcache. Anda harus menyesuaikan jalur jika modul php Anda dimuat dari tempat lain.
vi /etc/php.ini
Tambahkan bagian berikut ke file:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "nama pengguna" 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.tidakdata Pada xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Pada xcache.stat = Hidup xcache.optimizer = Mati
Todo: Perlu sedikit memperluas ini dan menautkan ke xcache dalam referensi.
Cadangan
Ada sedikit lebih penting daripada memiliki cadangan otomatis situs web Anda. Anda mungkin bisa mendapatkan backup snapshot dari penyedia hosting Anda, yang juga sangat berguna, tetapi saya lebih suka memiliki backup otomatis juga.
Buat Script Cadangan Otomatis
Saya biasanya memulai dengan membuat direktori / backup, dengan direktori / backup / file di bawahnya. Anda dapat menyesuaikan jalur ini jika Anda mau.
mkdir -p / backups / file
Sekarang buat skrip backup.sh di dalam direktori backup:
vi /backups/backup.sh
Tambahkan yang berikut ke file, sesuaikan jalur dan kata sandi mysqldump seperlunya:
#! / bin / sh THEDATE = "tanggal +% d% m% y% H% M" mysqldump -uadmin -padword DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / backup / file / sitebackup $ THEDATE .tar / var / www / vhosts / my-website-path / httpdocs gzip /backups/files/sitebackup$THEDATE.tar find / backups / files / site * -mtime +5 -exec rm \; find / backups / files / db * -mtime +5 -exec rm \;
Script pertama-tama akan membuat variabel tanggal sehingga semua file akan dinamai sama untuk satu backup, kemudian membuang database, mengurai file web dan gzip mereka. Perintah find digunakan untuk menghapus file yang lebih lama dari 5 hari, karena Anda tidak ingin drive Anda kehabisan ruang.
Buat skrip dapat dieksekusi dengan menjalankan perintah berikut:
chmod u + x /backups/backup.sh
Selanjutnya Anda harus menetapkannya untuk dijalankan secara otomatis oleh cron. Pastikan Anda menggunakan akun yang memiliki akses ke direktori cadangan.
crontab -e
Tambahkan baris berikut ke crontab:
1 1 * * * /backups/backup.sh
Anda dapat menguji skrip sebelumnya dengan menjalankannya saat masuk ke akun pengguna. (Saya biasanya menjalankan backup sebagai root)
Sinkronkan Cadangan di Luar Situs Dengan Rsync
Sekarang Anda memiliki cadangan otomatis dari server Anda yang berjalan, Anda dapat menyinkronkannya di tempat lain dengan menggunakan utilitas rsync. Anda akan ingin membaca artikel ini tentang cara mengatur kunci ssh untuk login otomatis: Tambahkan Kunci SSH Publik ke Server Jarak Jauh dalam Satu Perintah
Anda dapat menguji ini dengan menjalankan perintah ini di mesin linux atau Mac di lokasi lain (saya punya server linux di rumah, di mana saya menjalankan ini)
rsync -a [email protected]: / backups / files / * / offsitebackups /
Ini akan memakan waktu cukup lama untuk dijalankan pertama kali, tetapi pada akhirnya komputer lokal Anda harus memiliki salinan direktori file di direktori / offsitebackups /. (Pastikan untuk membuat direktori itu sebelum menjalankan skrip)
Anda dapat menjadwalkan ini dengan menambahkannya ke baris crontab:
crontab -e
Tambahkan baris berikut, yang akan menjalankan rsync setiap jam pada tanda 45 menit. Anda akan melihat bahwa kami menggunakan jalur lengkap untuk rsync di sini.
45 * * * * / usr / bin / rsync -a [email protected]: / backups / files / * / offsitebackups /
Anda dapat menjadwalkannya untuk berjalan pada waktu yang berbeda, atau hanya sekali sehari. Itu benar-benar terserah Anda.
Perhatikan bahwa ada banyak utilitas yang memungkinkan Anda untuk melakukan sinkronisasi melalui ssh atau ftp. Anda tidak harus menggunakan rsync.
Keamanan
Hal pertama yang ingin Anda lakukan adalah memastikan bahwa Anda memiliki akun pengguna biasa untuk digunakan melalui ssh, dan pastikan bahwa Anda dapat menggunakan su untuk beralih ke root. Itu ide yang sangat buruk untuk memungkinkan login langsung untuk root di ssh.
Nonaktifkan Root Login Melalui SSH
Edit file / etc / ssh / sshd_config, dan cari baris berikut:
#PermitRootLogin ya
Ubah baris itu menjadi seperti ini:
PermitRootLogin no
Pastikan bahwa Anda memiliki akun pengguna reguler dan dapat melakukan root sebelum Anda melakukan perubahan ini, jika tidak, Anda dapat mengunci diri.
Nonaktifkan SSH Versi 1
Tidak ada alasan untuk menggunakan selain SSH versi 2, karena lebih aman daripada versi sebelumnya. Edit file / etc / ssh / sshd_config, dan cari bagian berikut:
#Protocol 2,1 Protokol 2
Pastikan Anda hanya menggunakan Protokol 2 seperti yang ditunjukkan.
Mulai ulang Server SSH
Sekarang Anda harus me-restart server SSH untuk membuat ini berlaku.
/etc/init.d/sshd restart
Periksa Port Terbuka
Anda dapat menggunakan perintah berikut untuk melihat port mana yang didengarkan server:
netstat -an | grep DENGARKAN
Anda benar-benar tidak perlu mendengarkan apa pun selain port 22, 80, dan mungkin 8443 untuk plesk.
Siapkan Firewall
Artikel utama: Menggunakan Iptables di Linux
Anda secara opsional dapat memasang 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 opsi itu.
Jika Anda telah mengikuti semua langkah dalam panduan ini sejauh ini, mungkin tidak perlu menambahkan firewall ke dalam campuran, tetapi ada baiknya memahami opsi Anda.
Lihat juga
- Menggunakan Iptables di Linux
Referensi
- Mengoptimalkan server DV Anda (mediatemple.net)
- XCache