Ελαχιστοποίηση ενός Dedicated Virtual Web Server
Όταν αποκτήσετε ένα ειδικό εικονικό διακομιστή για να εκτελέσετε τον ιστότοπό σας, οι πιθανότητες είναι καλές που έχουν ρυθμιστεί για όλους, και δεν είναι προσαρμοσμένες ώστε να μεγιστοποιούν την απόδοση για την εκτέλεση ενός ιστότοπου.
Περιεχόμενα[κρύβω]
|
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Υπάρχουν ορισμένοι προβληματικοί τομείς στους οποίους θέλουμε να μεγιστοποιήσουμε την απόδοση:
- Διαμόρφωση Linux
Συνήθως λειτουργούν υπηρεσίες που δεν χρειάζεται να είναι, χάνοντας μνήμη που θα μπορούσε να χρησιμοποιηθεί για περισσότερες συνδέσεις. - Διαμόρφωση MySQL
Συχνά οι προεπιλεγμένες ρυθμίσεις βασίζονται σε ένα μικρό διακομιστή, μπορούμε να προσθέσουμε μερικές βασικές αλλαγές για να αυξήσουμε την απόδοση πολύ. - Διαμόρφωση Apache
Από προεπιλογή, οι περισσότεροι πάροχοι φιλοξενίας εγκαθιστούν apache με σχεδόν κάθε εγκατεστημένη λειτουργική μονάδα. Δεν υπάρχει κανένας λόγος για φόρτωση ενότητες αν δεν πρόκειται ποτέ να τις χρησιμοποιήσετε. - Διαμόρφωση PHP
Η προεπιλεγμένη διαμόρφωση PHP είναι ομοιόμορφα φουσκωμένη, υπάρχει συνήθως ένας τόνος περιττών πρόσθετων ενοτήτων εγκατεστημένων. - PHP Cache Opcode
Αντί να επιτρέπεται στην PHP να επανασυναρμολογήσει τις δέσμες ενεργειών κάθε φορά, μια προσωρινή μνήμη opcode θα αποθηκεύσει προσωρινά τα σελιδοποιημένα σενάρια στη μνήμη για τεράστια αύξηση των επιδόσεων. - Δημιουργία αντιγράφων ασφαλείας
Θα πρέπει πιθανώς να ρυθμίσετε κάποια αυτοματοποιημένα αντίγραφα ασφαλείας, δεδομένου ότι ο πάροχος φιλοξενίας σας δεν πρόκειται να το κάνει για εσάς. - Ασφάλεια
Σίγουρα, το Linux είναι αρκετά ασφαλές από προεπιλογή, αλλά συνήθως υπάρχουν κάποιες λαμπρές δυσκολίες ασφαλείας που μπορείτε να διορθώσετε με μερικές γρήγορες ρυθμίσεις.
Διαμόρφωση Linux
Υπάρχει αρκετός αριθμός τσιμπήματα που μπορείτε να κάνετε, τα οποία θα διαφέρουν ελαφρώς ανάλογα με τον διακομιστή που χρησιμοποιείτε. Αυτά τα tweaks είναι για ένα διακομιστή που εκτελεί CentOS, αλλά θα πρέπει να δουλέψουν για την πλειοψηφία των DV servers.
Απενεργοποιήστε το DNS
Εάν ο πάροχος φιλοξενίας χειρίζεται το DNS για τον τομέα σας (πιθανό), τότε μπορείτε να απενεργοποιήσετε την υπηρεσία DNS.
απενεργοποιήστε το dns /etc/init.d/named stop chmod 644 /etc/init.d/named
Η εντολή chmod καταργεί το δικαίωμα εκτέλεσης από τη δέσμη ενεργειών, εμποδίζοντας την εκτέλεσή της κατά την εκκίνηση.
Απενεργοποιήστε το SpamAssassain
Αν δεν χρησιμοποιείτε λογαριασμούς ηλεκτρονικού ταχυδρομείου στον ίδιο τον κεντρικό υπολογιστή σας, δεν πρέπει να ενοχλείτε τα εργαλεία αντιμετώπισης ανεπιθύμητης αλληλογραφίας. (Επίσης, πρέπει να ελέγξετε το Google Apps, πολύ καλύτερη λύση ηλεκτρονικού ταχυδρομείου)
/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
Χρήση μνήμης Limit Plesk
Εάν χρησιμοποιείτε τον πίνακα plesk, μπορείτε να τον αναγκάσετε να χρησιμοποιήσετε λιγότερη μνήμη προσθέτοντας ένα αρχείο επιλογών.
vi /usr/local/psa/admin/conf/httpsd.custom.include
Προσθέστε τις ακόλουθες γραμμές στο αρχείο:
MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5
Σημειώστε ότι αυτή η επιλογή είναι γνωστό ότι λειτουργεί σε διακομιστές MediaTemple DV, αλλά δεν έχει ελεγχθεί σε άλλα. (Βλ. Αναφορές)
Απενεργοποίηση ή απενεργοποίηση του Plesk (προαιρετικό)
Εάν χρησιμοποιείτε μόνο Plesk μία φορά το χρόνο, υπάρχει πολύ λίγοι λόγοι να το αφήσετε να λειτουργήσει καθόλου. Σημειώστε ότι αυτό το βήμα είναι εντελώς προαιρετικό και λίγο πιο προηγμένο.
Εκτελέστε την ακόλουθη εντολή για να απενεργοποιήσετε το plesk:
/etc/init.d/psa stop
Μπορείτε να την απενεργοποιήσετε από την εκτέλεση κατά την εκκίνηση εκτελώντας την ακόλουθη εντολή:
chmod 644 /etc/init.d/psa
Σημειώστε ότι αν την απενεργοποιήσετε, τότε δεν μπορείτε να την ξεκινήσετε με το χέρι χωρίς να αλλάξετε τα δικαιώματα των αρχείων πίσω (chmod u + x).
Διαμόρφωση MySQL
Ενεργοποιήστε την προσωρινή μνήμη ερωτημάτων
Ανοίξτε το αρχείο /etc/my.cnf και προσθέστε τις παρακάτω γραμμές στην ενότητα [mysqld] όπως παρακάτω:
[mysqld] ερώτημα-cache-type = 1 query-cache-size = 8M
Μπορείτε να προσθέσετε περισσότερη μνήμη στην προσωρινή μνήμη ερωτημάτων αν θέλετε, αλλά μην χρησιμοποιείτε πάρα πολύ.
Απενεργοποιήστε το TCP / IP
Ένας εκπληκτικός αριθμός κεντρικών υπολογιστών επιτρέπει την πρόσβαση σε MySQL σε TCP / IP από προεπιλογή, κάτι που δεν έχει νόημα για έναν ιστότοπο. Μπορείτε να υπολογίσετε εάν το mysql ακούει στο TCP / IP εκτελώντας την ακόλουθη εντολή:
netstat -an | grep 3306
Για να απενεργοποιήσετε, προσθέστε την ακόλουθη γραμμή στο αρχείο /etc/my.cnf:
skip-networking
Διαμόρφωση Apache
Ανοίξτε το αρχείο httpd.conf που βρίσκεται συχνά στο /etc/httpd/conf/httpd.conf
Βρείτε τη γραμμή που μοιάζει με αυτή:
Χρονικό όριο 120
Και να το αλλάξετε σε αυτό:
Χρονικό όριο 20
Τώρα βρείτε την ενότητα που περιλαμβάνει αυτές τις γραμμές και προσαρμόστε σε κάτι παρόμοιο:
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000
Διαμόρφωση PHP
Ένα από τα πράγματα που πρέπει να θυμάστε όταν τροποποιείτε ένα διακομιστή στην πλατφόρμα PHP είναι ότι κάθε νήμα apache πρόκειται να φορτώσει την PHP σε μια ξεχωριστή θέση στη μνήμη. Αυτό σημαίνει ότι εάν μια αχρησιμοποίητη λειτουργική μονάδα προσθέτει 256k μνήμη στην PHP, σε 40 threads apache χάνετε 10MB μνήμης.
Κατάργηση μη απαραίτητων ενοτήτων PHP
Θα πρέπει να εντοπίσετε το αρχείο php.ini, το οποίο συνήθως βρίσκεται στο /etc/php.ini (Σημειώστε ότι σε ορισμένες διανομές θα υπάρχει ένας κατάλογος /etc/php.d/ με ένα αριθμό αρχείων .ini, ένα για κάθε ενότητα.
Σχολιάστε τυχόν γραμμές φόρτωσης με αυτές τις ενότητες:
- odbc
- snmp
- pdo
- odbc pdo
- mysqli
- φορτωτή ιόντων
- json
- imap
- ldap
- ncurses
Todo: Προσθέστε περισσότερες πληροφορίες εδώ.
PHP Cache Opcode
Υπάρχουν ορισμένες κρυφές μνήμες 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 = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache]; Αλλάξτε το xcache.size για να συντονιστείτε το μέγεθος της προσωρινής μνήμης opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Αλλάξτε το xcache.var_size για να προσαρμόσετε το μέγεθος της μεταβλητής cache 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 = Απενεργοποίηση xcache.readonly_protection = Σε xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = Σε κατάσταση xcache.stat = Σε xcache.optimizer = Όχι
Todo: Πρέπει να επεκτείνετε αυτό το κομμάτι και να συνδεθείτε στο xcache στις αναφορές.
Δημιουργία αντιγράφων ασφαλείας
Είναι πολύ λιγότερο σημαντικό από το να έχετε αυτοματοποιημένα αντίγραφα ασφαλείας του ιστότοπού σας. Ενδέχεται να έχετε τη δυνατότητα δημιουργίας αντιγράφων ασφαλείας από τον παροχέα φιλοξενίας σας, οι οποίοι είναι επίσης πολύ χρήσιμοι, αλλά προτιμώ να έχετε και αυτοματοποιημένα αντίγραφα ασφαλείας.
Δημιουργία αυτοματοποιημένου Script Backup
Ξεκινώ συνήθως δημιουργώντας ένα / backups directory, με έναν κατάλογο / backups / files κάτω από αυτόν. Μπορείτε να προσαρμόσετε αυτές τις διαδρομές, αν θέλετε.
mkdir -p / αντίγραφα ασφαλείας / αρχεία
Τώρα δημιουργήστε ένα script backup.sh μέσα στον κατάλογο backup:
vi /backups/backup.sh
Προσθέστε τα ακόλουθα στο αρχείο, προσαρμόζοντας τις διαδρομές και τον κωδικό πρόσβασης mysqldump όπως είναι απαραίτητο:
#! / bin / sh THEDATE = "ημερομηνία +% d% m% y% H% M" mysqldump -uadmin -password 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 βρείτε / backupups / files / site * -mtime +5 -exec rm \; βρείτε / backupups / αρχεία / db * -mtime +5 -exec rm \;
Το σενάριο θα δημιουργήσει πρώτα μια μεταβλητή ημερομηνίας, ώστε όλα τα αρχεία να ονομάζονται τα ίδια για ένα μόνο αντίγραφο ασφαλείας, στη συνέχεια θα απορρίψει τη βάση δεδομένων, θα καταγράψουν τα αρχεία ιστού και θα τα βρει. Οι εντολές εύρεσης χρησιμοποιούνται για την κατάργηση όλων των αρχείων παλαιότερων από 5 ημέρες, αφού δεν θέλετε να εξαντληθεί η μονάδα δίσκου σας.
Κάντε τη δέσμη ενεργειών εκτελέσιμη εκτελώντας την ακόλουθη εντολή:
chmod u + x /backups/backup.sh
Στη συνέχεια θα χρειαστεί να την εκχωρήσετε για αυτόματη εκτέλεση από το cron. Βεβαιωθείτε ότι χρησιμοποιείτε έναν λογαριασμό που έχει πρόσβαση στον κατάλογο αντιγράφων ασφαλείας.
crontab -e
Προσθέστε την ακόλουθη γραμμή στο crontab:
1 1 * * * /backups/backup.sh
Μπορείτε να δοκιμάσετε τη δέσμη ενεργειών μπροστά από το χρόνο, εκτελώντας την, ενώ είστε συνδεδεμένοι στο λογαριασμό χρήστη. (Συνήθως τρέχω τα αντίγραφα ασφαλείας ως root)
Συγχρονισμός αντιγράφων ασφαλείας εκτός χώρου με το Rsync
Τώρα που έχετε δημιουργήσει αυτοματοποιημένα αντίγραφα ασφαλείας του διακομιστή σας, μπορείτε να τα συγχρονίσετε κάπου αλλού χρησιμοποιώντας το βοηθητικό πρόγραμμα rsync. Θα χρειαστεί να διαβάσετε αυτό το άρθρο σχετικά με τον τρόπο ρύθμισης των πλήκτρων ssh για αυτόματη σύνδεση: Προσθέστε το δημόσιο κλειδί SSH στον απομακρυσμένο διακομιστή σε μια ενιαία εντολή
Μπορείτε να το δοκιμάσετε τρέχοντας αυτή την εντολή σε ένα linux ή Mac σε άλλη θέση (έχω ένα διακομιστή linux στο σπίτι, όπου τρέχω αυτό)
rsync -a [email protected]: / backups / αρχεία / * / offsitebackups /
Αυτό θα διαρκέσει αρκετή ώρα για να τρέξει την πρώτη φορά, αλλά στο τέλος ο τοπικός σας υπολογιστής θα πρέπει να έχει ένα αντίγραφο του αρχείου καταλόγου αρχείων στον κατάλογο / offsitebackups /. (Βεβαιωθείτε ότι έχετε δημιουργήσει αυτόν τον κατάλογο πριν εκτελέσετε το σενάριο)
Μπορείτε να προγραμματίσετε αυτό προσθέτοντάς το σε μια γραμμή crontab:
crontab -e
Προσθέστε την ακόλουθη γραμμή, η οποία θα εκτελεί το rsync κάθε ώρα στο σημάδι των 45 λεπτών. Θα παρατηρήσετε ότι χρησιμοποιούμε την πλήρη διαδρομή στο rsync εδώ.
45 * * * * / usr / bin / rsync - χρήστη@website.com: / backups / αρχεία / * / offsitebackups /
Θα μπορούσατε να το προγραμματίσετε να εκτελείται σε διαφορετικό χρόνο ή μόνο μία φορά την ημέρα. Αυτό εξαρτάται από εσάς.
Σημειώστε ότι υπάρχουν πολλά βοηθητικά προγράμματα που θα σας επιτρέψουν να συγχρονίσετε μέσω ssh ή ftp. Δεν χρειάζεται να χρησιμοποιήσετε το rsync.
Ασφάλεια
Το πρώτο πράγμα που θέλετε να κάνετε είναι να βεβαιωθείτε ότι έχετε έναν κανονικό λογαριασμό χρήστη για χρήση μέσω του ssh και βεβαιωθείτε ότι μπορείτε να χρησιμοποιήσετε το su για να μεταβείτε στη ρίζα. Είναι πολύ κακή ιδέα να επιτρέπετε την άμεση σύνδεση για το root πάνω από ssh.
Απενεργοποίηση σύνδεσης ρίζας μέσω SSH
Επεξεργαστείτε το αρχείο / etc / ssh / sshd_config και αναζητήστε την ακόλουθη γραμμή:
#PermitRootLogin ναι
Αλλάξτε αυτή τη γραμμή για να μοιάζετε με αυτό:
PermitRootLogin όχι
Βεβαιωθείτε ότι έχετε έναν κανονικό λογαριασμό χρήστη και μπορείτε να το root πριν κάνετε αυτή την αλλαγή, διαφορετικά μπορεί να κλειδώσετε τον εαυτό σας.
Απενεργοποιήστε την έκδοση SSH 1
Δεν υπάρχει κανένας λόγος να χρησιμοποιήσετε οτιδήποτε άλλο εκτός από την έκδοση SSH 2, καθώς είναι πιο ασφαλής από τις προηγούμενες εκδόσεις. Επεξεργαστείτε το αρχείο / etc / ssh / sshd_config και αναζητήστε την παρακάτω ενότητα:
# Πρωτόκολλο 2,1 Πρωτόκολλο 2
Βεβαιωθείτε ότι χρησιμοποιείτε μόνο το πρωτόκολλο 2 όπως φαίνεται.
Επανεκκινήστε τον SSH Server
Τώρα θα χρειαστεί να κάνετε επανεκκίνηση του διακομιστή SSH για να γίνει αυτό το αποτέλεσμα.
/etc/init.d/sshd επανεκκίνηση
Ελέγξτε για τις ανοιχτές θύρες
Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να δείτε τις θύρες στις οποίες ο διακομιστής ακούει:
netstat -an | grep LISTEN
Πραγματικά δεν πρέπει να ακούτε τίποτα εκτός από τις θύρες 22, 80 και πιθανώς το 8443 για το plesk.
Ρυθμίστε ένα τείχος προστασίας
Κύριο άρθρο: Χρησιμοποιώντας το Iptables σε Linux
Μπορείτε να ρυθμίσετε προαιρετικά ένα τείχος προστασίας iptables για να αποκλείσετε περισσότερες συνδέσεις. Για παράδειγμα, συνήθως αποκλείω την πρόσβαση σε άλλες θύρες εκτός από το δίκτυο εργασίας μου. Εάν έχετε μια δυναμική διεύθυνση IP, θα θέλετε να αποφύγετε αυτήν την επιλογή.
Αν έχετε ήδη ακολουθήσει όλα τα βήματα σε αυτόν τον οδηγό μέχρι στιγμής, ίσως δεν είναι απαραίτητο να προσθέσετε ένα τείχος προστασίας στο μίγμα, αλλά είναι καλό να κατανοήσετε τις επιλογές σας.
Δείτε επίσης
- Χρησιμοποιώντας το Iptables σε Linux
βιβλιογραφικές αναφορές
- Βελτιστοποίηση του διακομιστή DV σας (mediatemple.net)
- XCache