Σφάλμα Σύνδεσης Με Βάση Δεδομένων Και Έλλειψη Χώρου Σε Server

Εάν ξαφνικά το site σας δεν μπορεί να συνδεθεί με τη βάση δεδομένων, υπάρχει ενδεχόμενο αυτό να οφείλεται στην έλλειψη διαθέσιμου χώρου στον server εξαιτίας του οποίου, το service MySQL δε μπορεί να ξεκινήσει.

Αφού συνδεθούμε στον σέρβερ, ελέγχουμε την κατάσταση της MySQL με την εντολή:

Θα δούμε ότι είναι «Inactive».

Στη συνέχεια, ελέγχουμε το διαθέσιμο χώρο με την εντολή:

Η εντολή θα επιστρέψει κάτι σαν το παρακάτω:

Βλέπουμε ότι στον server έχουν μείνει διαθέσιμα 12Mb και ότι χρησιμοποιείται το 100% του χώρου. Θα πρέπει να διαγράψουμε αρχεία από τον server που δε χρειαζόμαστε. Αν δε μπορούμε άμεσα να σβήσουμε αρχεία στον σέρβερ, μία καλή λύση είναι να ελέγξουμε το χώρο που καταλαμβάνουν τα logs και να τα διαγράψουμε.

Αφού κάνουμε sudo su, ελέγχουμε το χώρο που καταλαμβάνουν τα logs με την εντολή:

Θα δούμε ότι τα logs, μπορεί να φτάσουν να καταλαμβάνουν αρκετά gigabyte του δίσκου!

Για να βρούμε ποια logs έχουν μέγεθος πάνω από π.χ. 200MB, χρησιμοποιούμε την παρακάτω εντολή:

Αν υπάρχουν αρχεία με μέγεθος πάνω από 200MB τότε θα εμφανιστούν σε μία λίστα ως εξής:

Εφόσον είστε απόλυτα σίγουροι ότι οι πληροφορίες μέσα στα logs δε σας χρειάζονται, μπορείτε να τα «αδειάσετε» με την εντολή:

Το > δε διαγράφει το αρχείο αλλά διαγράφει τα περιεχόμενά του.

Μπορείτε να συνεχίσετε την ίδια διαδικασία με μικρότερα αρχεία, π.χ. 50Mb

Για να αποφύγετε στο μέλλον την εμφάνιση του προβλήματος, θα μπορούσατε να χρησιμοποιήσετε το logrotate ή να χρησιμοποιήσετε κάποιο script που θα σας στέλνει email όταν π.χ. το 90% του χώρου του σέρβερ χρησιμοποιείται.

Στη συνέχεια κάντε έναν έλεγχο για να δείτε πόσο χώρο καταλαμβάνουν τα journal logs του systemd με την εντολή:

Θα εμφανιστεί ένα μήνυμα παρόμοιο με το εξής:

Με την εντολή:

θα διαγραφούν τα logs που είνα παλαιότερα από 2 ημέρες (2d). Μπορείτε να αλλάξετε την τιμή αυτή σε άλλη της προτίμησής σας.

Κάνοντας έναν έλεγχο (πάλι με την εντολή journalctl --disk-usage) θα δούμε ότι πλέον τα systemd journal logs καταλαμβάνουν πολύ λιγότερο χώρο:

Στη συνέχεια μπορείτε να καθαρίστε την cache του apt:

Τέλος, ελέγξτε τον διαθέσιμο χώρο στον server με dh -H και κάντε εκκίνηση του mysql server με:

 

Αλλαγή Name Και Email Σε Όλα Τα Git Commits

Υπάρχουν περιπτώσεις που θα χρειαστεί να μετατρέψετε ένα private repository σε public. Αν έχετε κάνει commits με το όνομά σας και το προσωπικό σας email, ίσως να μη θέλετε αυτές οι πληροφορίες να εμφανίζονται στο log του repository που θα γίνει public.

Για να αλλάξετε όλα τα ονόματα και emails θα πρέπει να ακολουθήσετε τα παρακάτω βήματα.

Ορίζουμε τις τιμές για name και email που θέλουμε πλέον να εμφανίζονται δημόσια:

Τώρα τσεκάρουμε ποια είναι τα name και email στο git config με τις εξής εντολές:

Δημιουργήστε ένα αρχείο με το όνομα git-change-author-details.sh και βάλτε στο αρχείο αυτό τον παρακάτω κώδικα. Αλλάξτε τις τιμές για τα OLD_EMAIL, CORRECT_NAME και CORRECT_EMAIL.

Τρέχουμε το αρχείο με την εντολή bash git-change-author-details.sh και θα αλλάξουν τα στοιχεία για τον author του κάθε commit.

Με την εντολή git log βλέπουμε πλέον ότι το όνομα και το email έχει αλλάξει σε όλα τα git commits και τώρα μπορείτε να κάνετε git push στο public repository σας.

 

Σημείωση: Σε περίπτωση που χρησιμοποιείτε Github, καλό θα ήταν να δείτε τις ρυθμίσεις στη σελίδα github.com/settings/emails και να «τικάρετε» τις επιλογές «Keep my email addresses private» και «Block command line pushes that expose my email»

Πρόβλημα Με Public Key Κατά Τη Διάρκεια ‘Apt Update’

Αν όταν εκτελούμε updates σε σύστημα Linux με:

εμφανιστεί το σφάλμα:

The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY ΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧ

τότε, αντιγράφουμε το public key (το ΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧ) και πληκτρολογούμε:

Πλέον όταν κάνουμε apt-get update τα updates θα προχωρήσουν χωρίς πρόβλημα.

Διαβάστε το υπόλοιπο άρθρο »

Webhosting Στην DigitalOcean

Κάντε εύκολα deploy έναν SSD cloud server στην DigitalOcean μέσα σε 55 δευτερόλεπτα. Χρησιμοποιήστε τον σύνδεσμο https://m.do.co/t/5b5dc69cc29c για να κερδίσετε credit $10 που ισοδυναμεί με δωρεάν φιλοξενία για 2 μήνες στο μικρό αλλά καλό πακέτο της εταιρείας.

Ενεργοποίηση PHP Error Logging

Για ενεργοποίηση του PHP error logging σε έναν Apache server ακολουθούμε τα παρακάτω βήματα:

Στο αρχείο ‘/etc/php/7.2/apache2/php.ini’ βρίσκουμε και αντικαθιστούμε το error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT με το error_reporting = E_COMPILE_ERROR | E_RECOVERABLE_ERROR | E_ERROR | E_CORE_ERROR.

Βρίσκουμε και αντικαθιστούμε το ;error_log = php_errors.log με το error_log = /var/log/php/error.log.

Δημιουργούμε το directory /var/log/php με sudo:

Αλλάζουμε owner και group του directory /var/log/php με:

Και κάνουμε επανεκκίνηση του server με:

Πλέον, όποτε μια εφαρμογή γραμμένη σε PHP παρουσιάζει σφάλματα, μπορούμε πλέον να τα βλέπουμε με:

Πρόβλημα Με Ελληνικούς Χαρακτήρες Στη Βάση Δεδομένων

Πολλές φορές συμβαίνει ελληνικοί χαρακτήρες να είναι αποθηκευμένοι στη βάση δεδομένων με τη μορφή:

Με τα βινεµÎκΠ»Î¬ÎºÎ¹Î± κινε²Î¹Îίστε και

Αυτό το πρόβλημα είναι γνωστό και ως «double encoded UTF-8 data». Συνήθως οφείλεται σε λανθασμένο collation της βάσης δεδομένων, σε λανθασμένο encoding της εφαρμογής/ιστοσελίδας που αποθηκεύει τα δεδομένα στη βάση, σε μη ορθό migration δεδομένων από μια βάση σε άλλη κλπ.

Προκειμένου να διορθώσουμε το πρόβλημα, κάνουμε χρήση του παρακάτω SQL query μέσα από το PhpMyAdmin ή στο command line του MySQL:

Αντικαθιστούμε το db_table με το όνομα του table της βάσης δεδομένων μας και το db_column με το όνομα της στήλης(column) της βάσης που έχει τους προβληματικούς χαρακτήρες. Αφού τρέξουμε το query, οι ακαταλαβίστικοι χαρακτήρες θα μετατραπούν πάλι σε αναγνώσιμους ελληνικούς χαρακτήρες. 🙂

Πιστοποιητικό SSL Με «A Rating»

Αφού εγκαταστήσουμε πιστοποιητικό SSL από το Let’s Encrypt, ελέγχουμε την ποιότητα του certificate στο site της Qualys.

Αν η τελική βαθμολογία που πάρουμε είναι B εξαιτίας του σφάλματος «The server does not support Forward Secrecy with the reference browsers»  τότε ακολουθούμε τα παρακάτω βήματα για να πάρουμε A rating.

Στο αρχείο /etc/apache2/apache2.conf προσθέτουμε τις εξής γραμμές:

Κάνουμε επανεκκίνηση του server με:

Και κάνουμε ξανά έλεγχο του certificate. Αυτή τη φορά το SSL Labs θα πρέπει να μας δώσει «A rating».

Διαβάστε το υπόλοιπο άρθρο »

Διαγραφή Git Index Μετά Από Αλλαγές Στο .gitignore

Όταν σε ένα git repository κάνουμε αλλαγές στο .gitignore αρχείο, τότε το git «αγνοεί» τις αλλαγές που αφορούν αρχεία τα οποία έχουμε ήδη κάνει ‘git add’ σε κάποιο παλαιότερο commit. Στην περίπτωση αυτή ακολουθούμε τα παρακάτω βήματα.

Απομακρύνουμε όλα τα αρχεία του τρέχοντος directory από το index του git με:

Και μετά τα προσθέτουμε πάλι με:

Με τον τρόπο αυτό, βγάλαμε όλα τα αρχεία από το index του git και στη συνέχεια, όταν κάναμε το ‘add’ το git πλέον ακολούθησε τις οδηγίες του νέου ‘.gitignore’ και αγνόησε τα αρχεία που προηγουμένως είχαμε προσθέσει στο repository.

Webhosting Στη Linode

Για αξιόπιστη φιλοξενία ιστοσελίδας το DevBlog.gr σας προτείνει τη Linode. Η Linode προσφέρει SSD Cloud Hosting με τιμές που ξεκινούν από $5/μήνα για σέρβερ με 1GB RAM, 20 GB SSD Storage, 1 TB Transfer. Αποκτείστε ένα οικονομικό πακέτο φιλοξενίας στην Linode τώρα! 🙂

Μετατροπή Δυναμικού Site Σε Στατικό Με Wget

Ένας τρόπος για να μετατρέψετε ένα δυναμικό site σε στατικό, είναι να «κατεβάσετε» τοπικά ολόκληρο το site με τη βοήθεια της εντολής wget:

Επεξήγηση:

  • ––recursive: κατεβάζει ολόκληρο το site
  • ––no-clobber: δεν κάνει overwrite αρχεία που ήδη έχετε κατεβάσει
  • ––page-requisites: κατεβάζει όλα τα αρχεία που συνθέτουν κάθε σελίδα (εικόνες, CSS, JS κλπ)
  • ––html-extension: αποθηκεύει τα αρχεία ως .html
  • ––wait=3: περιμένει πχ «3» δευτερόλεπτα ανάμεσα σε κάθε αίτημα για κατέβασμα αρχείου
  • ––limit-rate: βάζει όριο στον ρυθμό κατεβάσματος αρχείων. π.χ. 60K είναι 60 kilobytes/second που ισούται με 480Kbps
  • ––convert-links: μετατρέπει τα links ώστε να δουλεύει το site τοπικά (offline)
  • ––restrict-file-names=windows: μετέτρεψε τα αρχεία ώστε να λειτουργούν σωστά και σε Windows
  • ––domains example.com: δίνει εντολή να μην κατεβούν αρχεία που δεν ανήκουν στο domain example.com

Διαβάστε το υπόλοιπο άρθρο »