Σε αυτό το άρθρο θα καλύψω τη φιλοξενία μιας εφαρμογής Node.js σε κοινόχρηστους διακομιστές φιλοξενίας Namecheap με χρήση cPanel. Δεν θα συζητήσω τη ρύθμιση του διακομιστή βάσης δεδομένων ή της διεπαφής React για την εφαρμογή ιστού σας σε αυτό το άρθρο. Αντίθετα, θέλω να εστιάσω στις προκλήσεις που μπορεί να αντιμετωπίσετε με την εκτέλεση μιας εφαρμογής Node σε ένα κοινόχρηστο περιβάλλον φιλοξενίας. == Μην καθυστερείτε, φιλοξενήστε σήμερα! == Προτού προχωρήσετε πολύ στην πορεία ανάπτυξης της εφαρμογής Ιστού σας, είναι καλή ιδέα να τοποθετήσετε μια σταθερή έκδοση στο διαδίκτυο. Αυτό θα μπορούσε να είναι στο περιβάλλον παραγωγής σας ή σε ένα περιβάλλον σκηνής που είναι παρόμοιο με το περιβάλλον παραγωγής σας. Οι περισσότεροι άνθρωποι θα περιμένουν έως ότου ολοκληρωθεί σχεδόν η εφαρμογή τους πριν τη φιλοξενήσουν στο διαδίκτυο και αυτό έκανα όταν ανέπτυξα την πρώτη μου εφαρμογή Ιστού React και Node. Ωστόσο, σε εκείνο το σημείο είχα πολλές προκλήσεις για την εκτέλεση του διακομιστή Node API μου και έπρεπε επίσης να κάνω πολλές αλλαγές στην εφαρμογή React μου. Αυτός είναι ο λόγος που συνιστώ να βάλετε μια έκδοση online από νωρίς, ώστε να μπορείτε να κάνετε προσαρμογές πριν γράψετε πάρα πολύ κώδικα. == Χρήση κοινής υπηρεσίας φιλοξενίας == Οι κοινόχρηστοι διακομιστές φιλοξενίας Namecheap χρησιμοποιούν cPanel ως διεπαφή πίνακα ελέγχου για τη διαχείριση του διακομιστή Apache. Αυτές οι οδηγίες θα πρέπει επίσης να βοηθήσουν οποιονδήποτε χρησιμοποιεί μια κοινόχρηστη υπηρεσία φιλοξενίας με cPanel όπως το A2 Hosting και το GoDaddy. Έχω επίσης ρυθμίσει τον διακομιστή Namecheap με πιστοποιητικό SSL και το cPanel από προεπιλογή ανακατευθύνει όλη την κίνηση HTTP στο HTTPS. Έτσι, όλη η κίνηση προς τον διακομιστή μου είναι ασφαλής. Θα βρείτε πολλούς οδηγούς που σας καθοδηγούν για το πώς να φιλοξενήσετε μια εφαρμογή Node σε μια υπηρεσία φιλοξενίας VPS (Virtual Private Server) όπως το DigitalOcean. Εάν ξεκινάτε από το μηδέν, τότε η φιλοξενία χρησιμοποιώντας μια τέτοια υπηρεσία θα σας δώσει περισσότερο έλεγχο. Αλλά είναι συνήθως πιο ακριβό από την κοινή φιλοξενία. Και στην περίπτωσή μου είχα ήδη πληρώσει για μια κοινή υπηρεσία φιλοξενίας Namecheap. Μερικά πλεονεκτήματα της χρήσης cPanel και κοινόχρηστης φιλοξενίας: - Η διαχείριση γίνεται με μια απλή κονσόλα διαχείρισης ιστού - Εύκολο στη διαμόρφωση - Φθηνό, ειδικά αν φιλοξενείτε ήδη έναν ιστότοπο/τομέα - Μπορείτε να δημιουργήσετε εύκολα δυναμικούς ιστότοπους χρησιμοποιώντας άλλες τεχνολογίες όπως PHP κ.λπ., εάν εξερευνάτε διαφορετικές τεχνολογίες Μερικά μειονεκτήματα: - Λιγότερο ελέγχετε καθώς δεν έχετε πρόσβαση στο υποκείμενο λειτουργικό σύστημα - Μη επεκτάσιμο == Πού πάνε όλα; == Πρώτα πρέπει να δημιουργήσετε έναν φάκελο για όλα τα αρχεία προέλευσης για τις εφαρμογές σας Node. Δημιούργησα έναν φάκελο που ονομάζεται âÃÂÃÂnodejsâÃÂàστον κατάλογο /home/username και μέσα σε αυτόν τον φάκελο δημιουργώ έναν υποφάκελο για κάθε εφαρμογή. Τώρα μεταφορτώστε όλα τα αρχεία προέλευσης σε αυτόν τον υποφάκελο. Βεβαιωθείτε ότι έχετε συμπεριλάβει και το αρχείο package.json. Δεν ανεβάζετε το φάκελο "node_modules", καθώς θα δημιουργηθεί με τον διαχειριστή πακέτων αργότερα. Θυμηθείτε ότι απλώς φιλοξενούμε τον διακομιστή Node API στο παράδειγμα αρχιτεκτονικής εφαρμογών ιστού. Δεν θα φιλοξενήσουμε την εφαρμογή React χρησιμοποιώντας το Node (περισσότερα για αυτό το θέμα στο επόμενο άρθρο). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg Η διάταξη φακέλου εμφανίζει τα αρχεία προέλευσης Node στον φάκελο /home/username/nodejs/mynodeapi και υπάρχει ένα .htaccess στο φάκελο /home/username/public_html/myapi == Το πρόβλημα: Η εφαρμογή Node δεν μπορεί να έχει πρόσβαση στις θύρες == Η μεγαλύτερη πρόκληση ήταν η εκτέλεση της εφαρμογής Node API μου. Το ζήτημα ήταν ότι το δείγμα κώδικα που δόθηκε στην τεκμηρίωση υποστήριξης του Namecheap δεν λειτούργησε! Προσπαθεί να δημιουργήσει έναν διακομιστή https για ακρόαση στη θύρα 80 και έναν διακομιστή http **s** στη θύρα 443. Ωστόσο, πάντα έπαιρνα ένα σφάλμα EACCESS που έλεγε ότι δεν είχα άδεια για να χρησιμοποιήσετε αυτές τις θύρες. == Η λύση "Ο κόμβος"δεν χρειάζεται πρόσβαση στη θύρα! == Τελικά βρήκα τη λύση διαβάζοντας ένα σχόλιο του χρήστη SibProgrammer σε ένα νήμα σχετικά με το Plesk, έναν άλλο πίνακα ελέγχου φιλοξενίας. Το cPanel χρησιμοποιεί διακομιστή εφαρμογών Phusion Passenger για να φιλοξενήσει εφαρμογές Node, όπως και το Plesk. Συνοψίζοντας: Όταν στέλνετε ένα αίτημα από το πρόγραμμα περιήγησής σας, πηγαίνει στον διακομιστή Apache, μετά στο Phusion Passenger και μετά στην εφαρμογή Node. Η εφαρμογή Node σας δεν χρειάζεται να είναι κάτοχος της θύρας, καθώς γίνεται περαιτέρω ανάντη από τους διακομιστές εφαρμογών Apache και Phusion Passenger. Αυτό απλοποιεί τον κώδικα για τη δημιουργία του διακομιστή https στο αρχείο σας www.js (ή app.js): * www.js * Δοκιμή της δημιουργίας του διακομιστή http για το Namecheap. * Dave */ const http = require('http http.createServer(function(request, response) { answer.writeHead(200, {'Content-Type': 'text/html answer.endh1>Hello Worldh1 listen(process.env .PORT); console.log('Η εφαρμογή εκτελείται Μερικά πράγματα που πρέπει να σημειώσετε: - Ακούστε στο process.env.PORT (αντί να ρυθμίσετε με μη αυτόματο τρόπο το 80 ή το 443). Κατά τη δοκιμή παρατήρησα ότι το process.env.PORT είναι απροσδιόριστο! Αλλά είναι ενδιαφέρον ότι αυτό δεν έχει σημασία σε αυτή την περίπτωση. - Χρησιμοποιήστε έναν διακομιστή http ακόμη και αν έχετε ρυθμίσει το SSL. Το cPanel έχει διαμορφώσει τον Apache ώστε να ανακατευθύνει όλη την κίνηση HTTP στο HTTPS και, κατά συνέπεια, να ανταποκρίνεται σε όλα τα αιτήματα από το HTTPS. Δεν χρειάζεται να διαμορφώσετε με μη αυτόματο τρόπο την εφαρμογή Node για να ρυθμίσετε έναν διακομιστή https και να διαβάσετε στα πιστοποιητικά SSL σας. == Τελικά βήματα για τον διακομιστή Node API == Τώρα θα πρέπει να είναι η σχετικά απλή διαδικασία να ακολουθήσετε τις οδηγίες για να ρυθμίσετε την εφαρμογή κόμβου σας. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Στιγμιότυπο οθόνης της σελίδας διαμόρφωσης του cPanelâÃÂÃÂs Node.js - Επιλέξτε την κατάλληλη έκδοση του Node.js και τη λειτουργία εφαρμογής (Συνιστάται η παραγωγή). - Η εφαρμογή "root"της εφαρμογής θα είναι ο φάκελος όπου ανεβάσατε νωρίτερα τα αρχεία προέλευσης (α. nodejs/mynodeapiâÃÂàστο παραπάνω παράδειγμα). - Η διεύθυνση URL της εφαρμογής θα είναι η διεύθυνση URL που χρησιμοποιείται για την πρόσβαση στο API σας (α. ¢ÃÂàστο παράδειγμα). Το όνομα που δίνετε σε αυτό το πλαίσιο θα χρησιμοποιηθεί για τη δημιουργία ενός υποφάκελου στο φάκελο /home/username/public_html. Δεν χρειάζεται να είναι το ίδιο όνομα με τον φάκελο ρίζας της εφαρμογής (αλλά συχνά θα είναι). - Το αρχείο εκκίνησης της εφαρμογής θα είναι www.js ή app.js ανάλογα με τον τρόπο που δημιουργήσατε την εφαρμογή Node. - Εξαρτάται από εσάς πώς θέλετε να διαμορφώσετε το αρχείο καταγραφής επιβατών. - Μόλις δημιουργήσετε την εφαρμογή, θα δείτε το κουμπί για Εκτέλεση NPM Install. ¢ÃÂÃÂ. Εκτελέστε αυτό και θα δημιουργήσει το φάκελο "node_modules"με όλες τις εξαρτημένες λειτουργικές μονάδες που χρειάζεται η εφαρμογή σας. Μόλις ρυθμίσετε την εφαρμογή Node και την ξεκινήσετε, θα δημιουργήσει τον υποφάκελο στον φάκελο /home/public_html. Θα πρέπει τώρα να μεταβείτε σε αυτόν τον φάκελο και να επεξεργαστείτε το αρχείο .htaccess και να προσθέσετε στην ακόλουθη γραμμή: RewriteEngine απενεργοποιημένο Αυτό εμποδίζει τον διακομιστή Apache να ξαναγράψει (ή να ανακατευθύνει) οποιαδήποτε από τα αιτήματα που πρέπει να μεταβούν άθικτα στον διακομιστή API σας. Και αυτό είναι! Τώρα η εφαρμογή Node API θα πρέπει να λειτουργεί και να ανταποκρίνεται στις κλήσεις API σας. == Λοιπόν, τι είναι το επόμενο; == Τώρα που έχουμε ρυθμίσει τον διακομιστή Node API, θα μπορούσαμε να αλλάξουμε τη διεπαφή του React στο περιβάλλον ανάπτυξης μας ώστε να οδηγεί σε αυτόν τον διακομιστή API. Ή θα μπορούσαμε να χρησιμοποιήσουμε τον Postman για να δοκιμάσουμε τις κλήσεις API μας. Στο επόμενο άρθρο θα εξετάσουμε τη φιλοξενία της εφαρμογής React στο Namecheap και στο cPanel.