Beranda » bagaimana » Tweaking Server Web Virtual Khusus

    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]

    • 1 Ikhtisar
    • 2 Konfigurasi Linux
      • 2.1 Nonaktifkan DNS
      • 2.2 Nonaktifkan SpamAssassain
      • 2.3 Nonaktifkan xinetd
      • 2.4 Batasi Penggunaan Memori Plesk
      • 2.5 Nonaktifkan atau Matikan Plesk (opsional)
    • 3 Konfigurasi MySQL
      • 3.1 Aktifkan Cache Kueri
      • 3.2 Nonaktifkan TCP / IP
    • 4 Konfigurasi Apache
    • 5 Konfigurasi PHP
      • 5.1 Hapus Modul PHP yang Tidak Diinginkan
      • 5.2 Cache Kode PHP
    • 6 Cadangan
      • 6.1 Buat Script Cadangan Otomatis
      • 6.2 Sinkronisasi Backup Di Luar Situs Dengan Rsync
    • 7 Keamanan
      • 7.1 Nonaktifkan Root Login Melalui SSH
      • 7.2 Nonaktifkan SSH Versi 1
      • 7.3 Mulai ulang Server SSH
      • 7.4 Periksa untuk Port Terbuka
      • 7.5 Mengatur Firewall
    • 8 Lihat Juga
    • 9 Referensi

    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