Όταν έχετε έναν αποκλειστικό εικονικό διακομιστή για την εκτέλεση του ιστότοπού σας, οι πιθανότητες είναι καλές ότι είναι διαμορφωμένος για όλους και δεν είναι προσαρμοσμένος για μεγιστοποίηση της απόδοσης για την εκτέλεση ενός ιστότοπου.
Περιεχόμενα[ κρύβω ]
|
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Υπάρχουν αρκετοί προβληματικοί τομείς όπου θέλουμε να μεγιστοποιήσουμε την απόδοση:
-
Διαμόρφωση Linux
Συνήθως εκτελούνται υπηρεσίες που δεν χρειάζεται, σπατάλη μνήμης που θα μπορούσε να χρησιμοποιηθεί για περισσότερες συνδέσεις. -
Διαμόρφωση MySQL
Συχνά οι προεπιλεγμένες ρυθμίσεις βασίζονται σε έναν μικρό διακομιστή, μπορούμε να προσθέσουμε μερικές βασικές αλλαγές για να αυξήσουμε την απόδοση πολύ. -
Διαμόρφωση Apache
Από προεπιλογή οι περισσότεροι πάροχοι φιλοξενίας εγκαθιστούν apache με σχεδόν κάθε μονάδα εγκατεστημένη. Δεν υπάρχει λόγος φόρτωσης ενοτήτων εάν δεν πρόκειται να τις χρησιμοποιήσετε ποτέ. -
Διαμόρφωση PHP
Η προεπιλεγμένη διαμόρφωση PHP είναι παρόμοια φουσκωμένη, συνήθως υπάρχουν τόνοι περιττών επιπλέον μονάδων εγκατεστημένων. -
Cache Opcode PHP
Αντί να επιτρέπει στην PHP να μεταγλωττίζει εκ νέου τα σενάρια κάθε φορά, μια κρυφή μνήμη opcode θα αποθηκεύει προσωρινά τα μεταγλωττισμένα σενάρια στη μνήμη για τεράστιες βελτιώσεις στην απόδοση. -
Δημιουργία αντιγράφων ασφαλείας
Θα πρέπει πιθανώς να ρυθμίσετε ορισμένα αυτοματοποιημένα αντίγραφα ασφαλείας, καθώς ο πάροχος φιλοξενίας σας δεν πρόκειται να το κάνει για εσάς. -
Ασφάλεια
Σίγουρα, το Linux είναι αρκετά ασφαλές από προεπιλογή, αλλά υπάρχουν συνήθως ορισμένα προβλήματα ασφαλείας που μπορείτε να επιλύσετε με μερικές γρήγορες ρυθμίσεις.
Διαμόρφωση Linux
Υπάρχει αρκετός αριθμός τροποποιήσεων που μπορείτε να κάνετε, οι οποίες θα διαφέρουν ελαφρώς ανάλογα με τον διακομιστή που χρησιμοποιείτε. Αυτές οι τροποποιήσεις προορίζονται για διακομιστή που εκτελεί το CentOS, αλλά πρέπει να λειτουργούν για την πλειονότητα των διακομιστών DV.
Απενεργοποίηση DNS
Εάν ο πάροχος φιλοξενίας σας χειρίζεται το DNS για τον τομέα σας (πιθανότατα), τότε μπορείτε να απενεργοποιήσετε την εκτέλεση της υπηρεσίας DNS.
απενεργοποίηση dns /etc/init.d/ ονομαστική στάση chmod 644 /etc/init.d/named
Η εντολή chmod καταργεί την άδεια εκτέλεσης από το σενάριο, εμποδίζοντας την εκτέλεση κατά την εκκίνηση.
Απενεργοποιήστε το SpamAssassin
Εάν δεν χρησιμοποιείτε λογαριασμούς email στον ίδιο τον διακομιστή σας, δεν πρέπει να ασχοληθείτε με την εκτέλεση εργαλείων κατά των ανεπιθύμητων μηνυμάτων. (Επίσης, πρέπει να δείτε τις Εφαρμογές Google, πολύ καλύτερη λύση ηλεκτρονικού ταχυδρομείου)
/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin
Απενεργοποίηση xinetd
Η διαδικασία xinetd φιλοξενεί πολλές άλλες διαδικασίες, καμία από τις οποίες δεν είναι χρήσιμη για έναν τυπικό διακομιστή ιστού.
/etc/init.d/xinetd στάση chmod 644 /etc/init.d/xinetd
Περιορίστε τη χρήση μνήμης Plesk
Εάν χρησιμοποιείτε τον πίνακα plesk, μπορείτε να τον αναγκάσετε να χρησιμοποιήσει λιγότερη μνήμη προσθέτοντας ένα αρχείο επιλογών.
vi / usr/local/psa/admin/conf/httpsd.custom.include
Προσθέστε τις ακόλουθες γραμμές στο αρχείο:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 Μέγιστοι πελάτες 5
Σημειώστε ότι αυτή η επιλογή είναι γνωστό ότι λειτουργεί σε διακομιστές MediaTemple DV, αλλά δεν έχει ελεγχθεί σε κανέναν άλλο. (Βλέπω βιβλιογραφικές αναφορές )
Απενεργοποίηση ή απενεργοποίηση του Plesk (προαιρετικό)
Εάν χρησιμοποιείτε το Plesk μόνο μία φορά το χρόνο, δεν υπάρχει κανένας λόγος να το αφήσετε να λειτουργεί καθόλου. Σημειώστε ότι αυτό το βήμα είναι εντελώς προαιρετικό και ελαφρώς πιο προηγμένο.
Εκτελέστε την ακόλουθη εντολή για να απενεργοποιήσετε το plesk:
/etc/init.d/psa στάση
Μπορείτε να το απενεργοποιήσετε κατά την εκκίνηση εκτελώντας την ακόλουθη εντολή:
chmod 644 /etc/init.d/psa
Λάβετε υπόψη ότι εάν το απενεργοποιήσετε, τότε δεν μπορείτε να το ξεκινήσετε χειροκίνητα χωρίς να αλλάξετε τα δικαιώματα αρχείου πίσω (chmod u + x).
Διαμόρφωση MySQL
Ενεργοποίηση προσωρινής μνήμης ερωτήματος
Ανοίξτε το αρχείο /etc/my.cnf και προσθέστε τις ακόλουθες γραμμές στην ενότητα [mysqld] ως εξής:
[mysqld] query-cache-type = 1 query-cache-size = 8M
Εάν θέλετε, μπορείτε να προσθέσετε περισσότερη μνήμη στην προσωρινή μνήμη του ερωτήματος, αλλά να μην χρησιμοποιήσετε πάρα πολύ.
Απενεργοποίηση TCP / IP
Ένας εκπληκτικός αριθμός κεντρικών υπολογιστών επιτρέπει την πρόσβαση στη MySQL σε TCP / IP από προεπιλογή, κάτι που δεν έχει νόημα για έναν ιστότοπο. Μπορείτε να μάθετε εάν το mysql ακούει σε TCP / IP εκτελώντας την ακόλουθη εντολή:
netstat -an | grep 3306
Για απενεργοποίηση, προσθέστε την ακόλουθη γραμμή στο αρχείο /etc/my.cnf:
παράλειψη δικτύωσης
Διαμόρφωση Apache
Ανοίξτε το αρχείο httpd.conf, που βρίσκεται συχνά στο /etc/httpd/conf/httpd.conf
Βρείτε τη γραμμή που μοιάζει με αυτήν:
Λήξη 120
Και αλλάξτε το σε αυτό:
Λήξη 20
Τώρα βρείτε την ενότητα που περιλαμβάνει αυτές τις γραμμές και προσαρμόστε σε κάτι παρόμοιο:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 Μέγιστοι πελάτες 100 MaxRequestsPerChild 4000
Διαμόρφωση PHP
Ένα από τα πράγματα που πρέπει να θυμάστε όταν τροποποιείτε έναν διακομιστή στην πλατφόρμα PHP είναι ότι κάθε νήμα apache πρόκειται να φορτώσει την PHP σε ξεχωριστή τοποθεσία στη μνήμη. Αυτό σημαίνει ότι εάν μια αχρησιμοποίητη μονάδα προσθέσει 256k μνήμης στο PHP, σε 40 νήματα apache σπαταλάτε 10MB μνήμης.
Αφαιρέστε τις ανεπιθύμητες μονάδες PHP
Θα χρειαστεί να εντοπίσετε το αρχείο php.ini, το οποίο συνήθως βρίσκεται στο /etc/php.ini (Σημειώστε ότι σε ορισμένες διανομές, θα υπάρχει ένας κατάλογος /etc/php.d/ με αριθμό αρχείων .ini, ένα για κάθε ενότητα.
Σχολιάστε τυχόν γραμμές φορτίου με αυτές τις ενότητες:
- odbc
- snmp
- pdo
- odbc pdo
- μυκλί
- φορτωτής ioncube
- Τζόνσον
- χαρτογραφώ
- ldap
- καταγγέλλει
Todo: Προσθέστε περισσότερες πληροφορίες εδώ.
Cache Opcode PHP
Υπάρχουν πολλές κρυφές μνήμες opcode που μπορείτε να χρησιμοποιήσετε, συμπεριλαμβανομένων των APC, eAccelerator και Xcache, με την τελευταία να είναι η προσωπική μου προτίμηση λόγω σταθερότητας.
Κατεβάστε το xcache και εξαγάγετε το σε έναν κατάλογο και, στη συνέχεια, εκτελέστε τις ακόλουθες εντολές από τον κατάλογο προέλευσης xcache:
phpize ./configure --enable-xcache φτιαχνω, κανω κάντε εγκατάσταση
Ανοίξτε το αρχείο php.ini και προσθέστε μια νέα ενότητα για το xcache. Θα πρέπει να προσαρμόσετε τις διαδρομές εάν οι λειτουργικές μονάδες php σας φορτώνονται από κάπου αλλού.
vi /etc/php.ini
Προσθέστε την ακόλουθη ενότητα στο αρχείο:
[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "όνομα χρήστη" xcache.admin.pass = "putanmd5hashhere" [xcache] ; Αλλάξτε το xcache.size για να συντονίσετε το μέγεθος της κρυφής μνήμης opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8Κ xcache.ttl = 0 xcache.gc_interval = 0 ; Αλλάξτε το xcache.var_size για να ρυθμίσετε το μέγεθος της μεταβλητής προσωρινής μνήμης xcache.var_size = 1 εκατ xcache.var_count = 1 xcache.var_slots = 8Κ xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 xcache.test = Απενεργοποίηση xcache.readonly_protection = Ενεργό xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Ενεργό xcache.stat = Ενεργό xcache.optimizer = Απενεργοποίηση
Todo: Πρέπει να το αναπτύξετε λίγο και να συνδεθείτε με το xcache στις αναφορές.
Δημιουργία αντιγράφων ασφαλείας
Υπάρχουν πολύ λίγα πιο σημαντικά από το να έχετε αυτοματοποιημένα αντίγραφα ασφαλείας του ιστότοπού σας. Ίσως μπορείτε να λάβετε αντίγραφα ασφαλείας στιγμιότυπου από τον πάροχο φιλοξενίας σας, τα οποία είναι επίσης πολύ χρήσιμα, αλλά προτιμώ να έχω και αυτοματοποιημένα αντίγραφα ασφαλείας.
Δημιουργία αυτόματου εφεδρικού σεναρίου
Συνήθως ξεκινώ δημιουργώντας έναν κατάλογο / backups, με έναν κατάλογο / backups / αρχεία κάτω από αυτόν. Μπορείτε να προσαρμόσετε αυτές τις διαδρομές αν θέλετε.
mkdir -p / αντίγραφα ασφαλείας / αρχεία
Τώρα δημιουργήστε ένα σενάριο backup.sh στον κατάλογο αντιγράφων ασφαλείας:
vi / backups/backup.sh
Προσθέστε τα ακόλουθα στο αρχείο, προσαρμόζοντας τις διαδρομές και τον κωδικό πρόσβασης mysqldump όπως απαιτείται:
#! / bin / sh
ΗΜΕΡΟΜΗΝΙΑ = "ημερομηνία +% d% m% y% H% M"
mysqldump -uadmin -pPASSWORD DATABASENAME> /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
εύρεση / δημιουργία αντιγράφων ασφαλείας / αρχεία / ιστότοπος * -mtime +5 -exec rm {} \;
εύρεση / δημιουργία αντιγράφων ασφαλείας / αρχεία / db * -mtime +5 -exec rm {} \;
Το σενάριο θα δημιουργήσει πρώτα μια μεταβλητή ημερομηνίας, ώστε όλα τα αρχεία να έχουν το ίδιο όνομα για ένα εφεδρικό αντίγραφο, στη συνέχεια να απορρίπτουν τη βάση δεδομένων, να καταργούν τα αρχεία ιστού και να τα μεταφέρουν. Οι εντολές εύρεσης χρησιμοποιούνται για την κατάργηση οποιωνδήποτε αρχείων παλαιότερων των 5 ημερών, καθώς δεν θέλετε ο χώρος σας να εξαντλείται.
Κάντε το σενάριο εκτελέσιμο εκτελώντας την ακόλουθη εντολή:
chmod u + x /backups/backup.sh
Στη συνέχεια θα πρέπει να το αντιστοιχίσετε για να εκτελείται αυτόματα από το cron. Βεβαιωθείτε ότι χρησιμοποιείτε έναν λογαριασμό που έχει πρόσβαση στον κατάλογο αντιγράφων ασφαλείας.
crontab -e
Προσθέστε την ακόλουθη γραμμή στο crontab:
1 1 * * * /βάσκυψ/βασκοπ.ση
Μπορείτε να δοκιμάσετε το σενάριο εκ των προτέρων εκτελώντας το ενώ είστε συνδεδεμένοι στο λογαριασμό χρήστη. (Συνήθως τρέχω τα αντίγραφα ασφαλείας ως root)
Συγχρονισμός αντιγράφων ασφαλείας εκτός ιστότοπου με Rsync
Τώρα που εκτελούνται αυτοματοποιημένα αντίγραφα ασφαλείας του διακομιστή σας, μπορείτε να τα συγχρονίσετε κάπου αλλού χρησιμοποιώντας το βοηθητικό πρόγραμμα rsync. Θα θέλατε να διαβάσετε αυτό το άρθρο σχετικά με τον τρόπο ρύθμισης των κλειδιών ssh για αυτόματη σύνδεση: Προσθήκη δημόσιου κλειδιού SSH στον απομακρυσμένο διακομιστή με μία εντολή
Μπορείτε να το δοκιμάσετε εκτελώντας αυτήν την εντολή σε έναν υπολογιστή Linux ή Mac σε άλλη τοποθεσία (Έχω έναν διακομιστή linux στο σπίτι, όπου είναι αυτό που τρέχω)
rsync -a [email protected]: / αντίγραφα ασφαλείας / αρχεία / * / offsitebackups /
Θα χρειαστεί αρκετός χρόνος για να εκτελεστεί η πρώτη φορά, αλλά στο τέλος ο τοπικός υπολογιστής σας θα πρέπει να έχει ένα αντίγραφο του καταλόγου αρχείων στον κατάλογο / offsitebackups /. (Βεβαιωθείτε ότι έχετε δημιουργήσει αυτόν τον κατάλογο πριν εκτελέσετε το σενάριο)
Μπορείτε να το προγραμματίσετε προσθέτοντάς το σε μια γραμμή crontab:
crontab -e
Προσθέστε την ακόλουθη γραμμή, η οποία θα εκτελεί rsync κάθε ώρα στο σημάδι 45 λεπτών. Θα παρατηρήσετε ότι χρησιμοποιούμε την πλήρη διαδρομή για rsync εδώ.
45 * * * * / usr / bin / rsync -a [email protected]: / αντίγραφα ασφαλείας / αρχεία / * / offsitebackups /
Θα μπορούσατε να προγραμματίσετε να εκτελείται σε διαφορετική ώρα ή μόνο μία φορά την ημέρα. Αυτό εξαρτάται πραγματικά από εσάς.
Σημειώστε ότι υπάρχουν πολλά βοηθητικά προγράμματα που θα σας επιτρέψουν να συγχρονίσετε μέσω ssh ή ftp. Δεν χρειάζεται να χρησιμοποιήσετε το rsync.
Ασφάλεια
Το πρώτο πράγμα που θέλετε να κάνετε είναι να βεβαιωθείτε ότι έχετε έναν κανονικό λογαριασμό χρήστη για χρήση μέσω του ssh και βεβαιωθείτε ότι μπορείτε να χρησιμοποιήσετε το su για μετάβαση στο root. Είναι πολύ κακή ιδέα να επιτρέψετε την απευθείας σύνδεση για root μέσω ssh
Απενεργοποίηση σύνδεσης ρίζας μέσω SSH
Επεξεργαστείτε το αρχείο / etc / ssh / sshd_config και αναζητήστε την ακόλουθη γραμμή:
#PermitRootLogin ναι
Αλλάξτε αυτή τη γραμμή ώστε να μοιάζει με αυτό:
PermitRootLogin αρ
Βεβαιωθείτε ότι έχετε έναν κανονικό λογαριασμό χρήστη και μπορείτε να κάνετε root πριν κάνετε αυτήν την αλλαγή, διαφορετικά ενδέχεται να κλειδώσετε τον εαυτό σας.
Απενεργοποίηση SSH Έκδοση 1
Δεν υπάρχει κανένας λόγος να χρησιμοποιήσετε οτιδήποτε άλλο από την έκδοση 2 SSH, καθώς είναι πιο ασφαλές από τις προηγούμενες εκδόσεις. Επεξεργαστείτε το αρχείο / etc / ssh / sshd_config και αναζητήστε την ακόλουθη ενότητα:
# Πρωτόκολλο 2,1 Πρωτόκολλο 2
Βεβαιωθείτε ότι χρησιμοποιείτε μόνο το πρωτόκολλο 2 όπως φαίνεται.
Επανεκκινήστε τον διακομιστή SSH
Τώρα θα πρέπει να κάνετε επανεκκίνηση του διακομιστή SSH για να τεθεί σε ισχύ.
/etc/init.d/sshd επανεκκίνηση
Ελέγξτε για ανοιχτές θύρες
Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να δείτε σε ποιες θύρες ακούει ο διακομιστής:
netstat -an | grep ΑΚΡΟΑΣΗ
Πραγματικά δεν πρέπει να έχετε τίποτα άλλο να ακούει εκτός από τις θύρες 22, 80 και πιθανώς 8443 για το plesk.
Ρύθμιση τείχους προστασίας
Μπορείτε προαιρετικά να ρυθμίσετε ένα τείχος προστασίας iptables για να αποκλείσετε περισσότερες συνδέσεις. Για παράδειγμα, συνήθως αποκλείω την πρόσβαση σε άλλες θύρες εκτός από το δίκτυο εργασίας μου. Εάν έχετε μια δυναμική διεύθυνση IP, θα θέλετε να αποφύγετε αυτήν την επιλογή.
Εάν έχετε ήδη ακολουθήσει όλα τα βήματα σε αυτόν τον οδηγό μέχρι στιγμής, πιθανώς δεν είναι απαραίτητο να προσθέσετε ένα τείχος προστασίας στο μείγμα, αλλά είναι καλό να κατανοήσετε τις επιλογές σας.
Δείτε επίσης
- Χρησιμοποιώντας Iptables σε Linux