Ένα από τα πιό δημοφιλή frameworks, το laravel, έχει καταφέρει να κερδίσει την εμπιστοσύνη των developers και όχι μόνο. Καθώς όμως χρειάζεται κάποια επιπλέον εργαλεία για την λειτουργία του, η εγκατάσταση σε server με Plesk Obsidian εγκατεστημένο, απαιτεί κάποια επιπλέον βήματα. Ας δούμε πως μπορούμε να έχουμε laravel στις hosting υπηρεσίες της WebHosting|4U.
Στο Plesk Obsidian της Shared Hosting υπηρεσίας μας, έχουμε έτοιμάσει ότι χρειάζεται και απαιτείται για να εγκατασταθεί & λειτουργήσει μια ιστοσελίδα γραμμένη σε laravel framework.
To ίδιο ισχύει και αν χρησιμοποιείς κάποιον VPS ή Dedicated Server με Plesk. Μπορείς να μας ανοίξεις ένα support ticket για να σε βοηθήσουμε στις ρυθμίσεις του (χωρίς έξτρα κόστος).
Το laravel διαχειρίζεται τα dependencies και τα πακέτα του, μέσω του PHP Composer. Οπότε πριν ξεκινήσουμε να ανεβάσουμε το laravel project πρέπει να βεβαιωθούμε ότι ο php composer είναι ενεργοποιημένος στο hosting πακέτο μας.
Στην WebHosting|4U ανεξαρτήτως hosting πακέτου, o composer είναι ενεργοποιημένος χωρίς να χρειάζεται να κάνεις κάτι εσύ.
Σε αυτό το blog post, θα ανεβάσουμε ένα laravel demo μέσω ενός git repository που διαθέτουμε στο github.
Είναι ένα τυπικό frontend με mariadb βάση, όπου για τους σκοπούς μας, δεν κάνει τίποτα άλλο απ’ το να μας το παρουσιάσει.
Υποθέτουμε ότι έχετε έτοιμο το composer.json έτοιμο με τις απαραίτητες εγγραφές.
Ας ξεκινήσουμε.
Στο tab, WebSites & Domains όπου είναι και τα κύρια εργαλεία του plesk, κάνουμε κλικ στο εικονίδιο Git, μιας και θα κάνουμε pull το laravel από το repository που έχουμε φτιάξει.
Στο νέο παράθυρο που ανοίγει με τις git ρυθμίσεις, στο πεδίο “Remote Git Repository” , δηλώνουμε το url του συγκεκριμένου repo και πατάμε ΟΚ.
Στην δική μας περίπτωση είναι το https://github.com/Webhosting4U/Laravel-demo.git
Αμέσως το plesk θα κάνει git pull το repository και θα δούμε το περιεχόμενο του μέσα στον κύριο φάκελο μας /httpdocs.
Στον φακελο /httpdocs είναι ο source code του project μας, ενώ στο /httpdocs/public, είναι τα δημόσια αρχεία.
Χρειάζεται να πούμε στο plesk, να ανοίγει την ιστοσελίδα μας από αυτόν τον φάκελο /httpdocs/public.
Πάλι στο tab “Websites & Domains” επιλέγουμε τις ρυθμίσεις “Hosting Settings” και στο πεδίο “Document Root” δηλώνουμε το /httpdocs/public
Στα κύρια εργαλεία του plesk θα βρούμε το εικονίδιο του php composer. Το επιλέγουμε.
Μόλις ανοίξει, αμέσως θα ψάξει να βρεί το project και τις απαραίτητες εργασίες που πρέπει να γίνουν έτσι ώστε η ιστοσελίδα μας να είναι λειτουργική.
Θα βρεί και θα εγκαταστήσει τα απαραίτητα πακέτα.
Για το συγκεκριμένο project, χρειάζεται να εγκαταστήσουμε και τα dev packages. Αλλάζουμε στον php composer το mode από production σε development.
Ο php composer θα κάνει refresh και θα εντοπίσει όλα τα dev πακέτα, ενώ στην δεξιά στήλη, θα δούμε το status αυτών.
Για να εγκατασταθούν όλα τα πακέτα, απλά πατάμε το button “Install”
Θα γίνει ανίχνευση των πακέτων αλλά και των dependencies και θα ξεκινήσει η εγκατάσταση.
Μετά την αρχική εγκατάσταση, ο composer θα μας ενημερώσει ότι υπάρχουν και updates για τα πακέτα μας.
Επιλέγουμε το “update” για να εγκατασταθούν τα απαραίτητα update patch.
Επιστρέφουμε το mode από development σε production.
Είμαστε έτοιμοι.
To συγκεκριμένο project απαιτεί και βάση δεδομένων.
Στο root του /httpdocs χρειάζόμαστε στο .env αρχείο να ορίσουμε τα στοιχεία σύνδεσης με την βάση δεδομένων μας.
Εδώ προσθέτουμε τα στοιχεία σύνδεσης, αφού προηγουμένως έχουμε δημιουργήσει την βάση δεδομένων μέσα στο Plesk.
Πρέπει να θυμηθείτε εδώ, στην γραμμή όπου αναφέρει DB_Host, να γράψετε localhost ή το όνομα του database server και όχι 127.0.0.1.
Save για να αποθηκεύσουμε τις εγγραφές που προσθέσαμε.
Έχουμε ολοκλήρωσει ότι χρειάζεται μέσα από το plesk panel για το configuration του laravel.
Πρέπει μέσω ssh terminal να δημιουργήσουμε ένα encryption key αλλά και να γίνει populate η βάση με tables.
Η εντολή key:generate δημιουργεί και αποθηκεύεi στο .env αρχείο μας ένα random κλειδί.
Μέσω ssh terminal κάνουμε login με τον system_user του hosting λογαριασμού μας.
To root directory είναι το /var/www/vhosts/mydomain.gr
Μπαίνουμε στο httpdocs directory και εκτελούμε :
/opt/plesk/php/7.3/bin/php artisan key:generate
Θα εμφανιστεί το μήνυμα ότι η εντολή ολοκληρώθηκε επιτυχώς.
Εκτελούμε την αμέσως επόμενη εντολή για την για την δημιουργία των tables.
/opt/plesk/php/7.3/bin/php artisan migrate
Τέλος δίνουμε
/opt/plesk/php/7.3/bin/php artisan db:seed
για γίνουν populate test data μέσα στα tables της βάσης.
Όλα αυτά εξαρτώνται βέβαια, με το πώς έχει φτιαχτεί το project μας αλλά και πως έχουμε συνηθίσει να δουλεύουμε ως developers.
Τα βήματα αυτά τα αναφέρουμε ενδεικτικά για λόγους απεικόνισης & διαχείρισης ενός laravel framework.
Έχουμε ολοκληρώσει τις εργασίες μας.
Το project μας είναι live στην διεύθυνση του domain μας.
Μπορείτε να το δείτε στην διεύθυνση https://demohost.gr
Αν δεν έχει στηθεί σωστά ένας webserver είναι πολύ πιθανό κάποιος να αποκτήσει με κακόβουλες μεθόδους, πρόσβαση στο application directory του laravel.
Στο παρακάτω log μπορείτε να δείτε μια καταγραφή όπου ένας επισκέπτης προσπάθησε να δει το περιεχόμενο του composer.json, όπου δεν είναι στον public φάκελο.
Date: 2019-11-07 21:05:08
Victim domain: demohost.gr
Attacker ip: xx.xxx.xxx.xxx
—–
Url: [demohost.gr/vendor/phpunit/phpunit/composer.json] Headers: [array (
‘Host’ => ‘demohost.gr’,
‘X-Beluga-Forwarded-Host’ => ‘demohost.gr’,
‘X-Beluga-Site’ => ‘demohost.gr’,
‘User-Agent’ => ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0’,
‘Accept’ => ‘*/*’,
‘Via’ => ‘1.1 127.0.0.1:80 (NuCDN)’,
‘X-Beluga-Forwarded-Scheme’ => ‘http’,
‘X-Forwarded-For’ => ‘xx.xxx.xx.xxx’,
)] Matched: [
ModSecurity id: [930130] revision [1] msg [Restricted File Access Attempt] logdata [Matched “Operator `PmFromFile’ with parameter `restricted-files.data’ against variable `REQUEST_FILENAME’ (Value: `/vendor/phpunit/phpunit/composer.json’ )] severity [CRITICAL]Inbound Anomaly Score Exceeded (Total Inbound Score: 5 – SQLI=0,XSS=0,RFI=0,LFI=5,RCE=0,PHPI=0,HTTP=0,SESS=0): Restricted File Access Attempt] ——-
Το WAF Firewall μας, έκανε block και απέκλεισε την συγκεκριμένη ip από όλο το εύρος των ip ranges όπου διατηρούμε την υποδομή μας.
Καλή Συνέχεια!! Θα τα πούμε σύντομα στο επόμενο blog post της WebHosting|4U