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]
|
Ada sejumlah area masalah di mana kami ingin memaksimalkan kinerja:
Ada cukup banyak tweak yang dapat Anda lakukan, yang akan sedikit berbeda berdasarkan pada server yang Anda gunakan. Tweak ini untuk server yang menjalankan CentOS, tetapi mereka harus bekerja untuk sebagian besar server DV.
Jika penyedia hosting Anda menangani DNS untuk domain Anda (mungkin), maka Anda dapat menonaktifkan layanan DNS dari berjalan.
nonaktifkan 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.
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 jauh lebih baik)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Proses xinetd memiliki sejumlah proses lain, tidak ada yang berguna untuk server web biasa.
/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd
Jika Anda menggunakan panel plesk, Anda dapat memaksanya 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 DV MediaTemple, tetapi belum diperiksa pada yang lain. (Lihat Referensi)
Jika Anda hanya menggunakan Plesk setahun sekali, hanya ada sedikit alasan untuk membiarkannya berjalan sama sekali. Perhatikan bahwa langkah ini sepenuhnya opsional, dan sedikit lebih maju.
Jalankan perintah berikut untuk mematikan plesk:
/etc/init.d/psa stop
Anda dapat menonaktifkannya dari berjalan saat startup dengan menjalankan perintah berikut:
chmod 644 /etc/init.d/psa
Perhatikan bahwa jika Anda menonaktifkannya, maka Anda tidak dapat memulai secara manual tanpa mengubah izin file kembali (chmod u + x).
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 query jika Anda mau, tetapi jangan gunakan terlalu banyak.
Sejumlah mengejutkan host memungkinkan akses ke MySQL pada TCP / IP secara default, yang tidak masuk akal untuk sebuah 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:
skip-networking
Buka file httpd.conf Anda, sering ditemukan di /etc/httpd/conf/httpd.conf
Temukan garis yang terlihat seperti ini:
Timeout 120
Dan ubah ke ini:
Timeout 20
Sekarang temukan bagian yang mencakup garis-garis ini, dan sesuaikan dengan sesuatu yang serupa:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
Salah satu hal yang perlu diingat ketika mengutak-atik server pada platform PHP adalah setiap utas apache akan memuat PHP di lokasi terpisah di memori. Ini berarti jika modul yang tidak digunakan menambahkan 256k memori ke PHP, di 40 thread apache Anda menghabiskan 10MB memori.
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.
Berikan komentar pada setiap baris loadmodule dengan modul-modul ini:
Todo: Tambahkan informasi lebih lanjut di sini.
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 dalam 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 = "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 = Mati xcache.readonly_protection = Pada xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Aktif xcache.stat = Hidup xcache.optimizer = Mati
Todo: Perlu memperluas ini sedikit dan link ke xcache dalam referensi.
Ada sangat sedikit lebih penting daripada memiliki backup otomatis dari situs web Anda. Anda mungkin bisa mendapatkan cuplikan cadangan dari penyedia hosting Anda, yang juga sangat berguna, tetapi saya juga lebih suka memiliki 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 / backup / 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 jika perlu:
#! / bin / sh THEDATE = "tanggal +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / backup / file / sitebackup $ THEDATE .tar / var / www / vhosts / my-website-path / httpdocs gzip /backups/files/sitbackup$THEDATE.tar temukan / backup / file / situs * -mtime +5 -exec rm \; temukan / backup / file / db * -mtime +5 -exec rm \;
Skrip akan membuat variabel tanggal terlebih dahulu sehingga semua file akan diberi nama yang sama untuk satu cadangan, lalu membuang database, mengaitkan file web dan men-gzipnya. Perintah find digunakan untuk menghapus file yang lebih lama dari 5 hari, karena Anda tidak ingin drive Anda kehabisan ruang.
Buat skrip dieksekusi dengan menjalankan perintah berikut:
chmod u + x /backups/backup.sh
Selanjutnya Anda harus menetapkannya agar berjalan secara otomatis dengan cron. Pastikan Anda menggunakan akun yang memiliki akses ke direktori backup.
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)
Setelah Anda membuat cadangan otomatis server Anda, Anda bisa menyelaraskannya di tempat lain dengan menggunakan utilitas rsync. Anda akan ingin membaca artikel ini tentang cara men-setup kunci ssh untuk login otomatis: Menambahkan Kunci SSH Publik ke Remote Server dalam Perintah Tunggal
Anda dapat menguji ini dengan menjalankan perintah ini pada linux atau mesin Mac di lokasi lain (saya memiliki server linux di rumah, yang merupakan tempat saya menjalankan ini)
rsync -a [email protected]: / backup / file / * / 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 menjadwalkannya 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]: / backup / file / * / offsitebackups /
Anda dapat menjadwalkannya untuk berjalan pada waktu yang berbeda, atau hanya satu kali per hari. Itu terserah Anda.
Perhatikan bahwa ada banyak utilitas yang akan memungkinkan Anda untuk melakukan sinkronisasi melalui ssh atau ftp. Anda tidak harus menggunakan rsync.
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. Ini adalah ide yang sangat buruk untuk memungkinkan login langsung untuk root melalui ssh.
Edit file / etc / ssh / sshd_config, dan cari baris berikut:
#PermitRootLogin ya
Ubah baris itu agar terlihat seperti ini:
PermitRootLogin no
Pastikan bahwa Anda memiliki akun pengguna biasa dan dapat su untuk membasmi sebelum Anda membuat perubahan ini, jika tidak Anda mungkin mengunci diri sendiri.
Benar-benar tidak ada alasan untuk menggunakan apa pun selain SSH versi 2, karena ini lebih aman daripada versi sebelumnya. Edit file / etc / ssh / sshd_config, dan cari bagian berikut:
Protokol #Protocol 2,1 2
Pastikan Anda hanya menggunakan Protokol 2 seperti yang ditunjukkan.
Sekarang Anda harus me-restart server SSH untuk membuat ini berlaku.
/etc/init.d/sshd restart
Anda dapat menggunakan perintah berikut untuk melihat port mana yang didengarkan oleh server:
netstat -an | grep DENGARKAN
Anda benar-benar tidak boleh mendengarkan apa pun selain port 22, 80, dan mungkin 8443 untuk plesk.
Artikel utama:Menggunakan Iptables di Linux
Anda dapat secara opsional mengatur firewall iptables untuk memblokir lebih banyak koneksi. Sebagai contoh, saya biasanya memblokir akses ke port lain selain dari jaringan kerja saya. Jika Anda memiliki alamat IP dinamis, Anda pasti ingin menghindari opsi itu.
Jika Anda telah mengikuti semua langkah dalam panduan ini sejauh ini, mungkin Anda tidak perlu menambahkan firewall ke dalam campuran, tetapi ada baiknya untuk memahami opsi Anda.