Deploy ruby on rails

Ruby, Ruby on Rails, Sinatra, ...

Συντονιστές: WebDev Moderators, Super-Moderators, Ruby Moderators

Απάντηση
Άβαταρ μέλους
grigorakis4
Δημοσιεύσεις: 126
Εγγραφή: 16 Οκτ 2012 14:15
Τοποθεσία: ATHENS
Επικοινωνία:

Deploy ruby on rails

Δημοσίευση από grigorakis4 » 23 Νοέμ 2015 10:45

Γεια σας, έχω φτιάξει ένα application με το rails τοπικά και θέλω να το ανεβασω σε production vps αλλά με ότι έχω ψάξει μου φαίνεται αρκετά δύσκολο.

Εάν γνωρίζει κάποιος κ έχει χρόνο να μου πει τι ειναι καλυτερο:

1) να στησω τον σέρβερ να κάνω εγκατάσταση όλων των πακέτων κ να συνδεθω με sftp μέσω filezilla και να περάσω τα αρχεία μου.

2) να εγκαταστησω το git και να κάνω ένα git clone στον σέρβερ μου.


Επίσης δεν έχω καταλάβει τι πρέπει να αλλάξω στο rails για να γυρισει από development σε production env και πως το γυρναω να παίζει σε url το domain σκέτο χωρίς το port 3000.
Εικόνα

Άβαταρ μέλους
Kainourios
Ruby Moderator
Δημοσιεύσεις: 504
Εγγραφή: 18 Μάιος 2005 16:20
Τοποθεσία: Κορυδαλλός
Επικοινωνία:

Deploy ruby on rails

Δημοσίευση από Kainourios » 23 Νοέμ 2015 11:48

Υπάρχουν διάφοροι τρόποι για να κάνεις deploy, γενικά επειδή μια web application δεν είναι απλά "πέταξα τα αρχεία επάνω και παίζει", το ftp / sftp δεν είναι ιδανικό. Μπορεί να χρειάζεται και διάφορα άλλα... Π.χ. επανεκίννηση του sidekiq που είναι υπεύθυνο για background jobs, τρέξιμο των αλλαγών της βάσης (migrations), ενημέρωση πιθανών cronjobs, να κρατάς backup των προηγούμενων releases για γρήγορη επαναφορά αν υπάρξει οποιοδήποτε θέμα, να έχεις κάποια folders shared και να γίνονται link μετά το deploy, όπως τα configuration files (database κλπ.), τα logs κλπ.

Οπότε όλα τα παραπάνω, αναλαμβάνει να τα φέρει σε πέρας το capistrano όπου είναι ψιλο-standar επιλογή μιας και το setάρεις και έχεις one-command deploys και κάνει όλα τα πάραπάνω με έτοιμες εντολές (συνδέεται με ssh και τρέχει τις εντολές). Μπορείς επίσης πολύ εύκολα να διατηρείς διαφορετικά environments (π.χ. staging και production) και γενικά σου λύνει τα χέρια μιας και υπάρχουν τα πάντα και αναλαμβάνει να τρέχει οτιδήποτε άλλο ενδέχεται να χρειαστείς. Βέβαια θέλει διάβασμα και λίγο tweaking οπότε θα σου πρότεινα δύο λύσεις πριν πας κατευθείαν να παίξεις με την αυτοματοποίηση του deploy.

Α και εννοείται να το βάλεις σε git το project σου... αν δε θες να είναι public ο κώδικας, φτιάξε ένα account στο bitbucket για να έχεις private repository.

Οπότε για να παίξεις και να δεις πώς είναι το deploy:
1) Δοκίμασε να το κάνεις deploy στο heroku όπου απλά κάνεις push στο git repository και αναλαμβάνει το heroku να εντοπίσει οτι είναι rails app και να κάνει οτι είναι απαραίτητο. Βέβαια μπορείς να το κάνεις και αρκετά configured αν χρειαστεί και έχεις το πλεονέκτημα οτι δεν έχεις την άμεση ευθύνη του server (updates κλπ.). Για αρχή είναι το πιο εύκολο και γρήγορο, επίσης είναι δωρεάν για εφαρμογές που δεν έχουν μεγάλο traffic.

2) Σε VPS το ευκολότερο θα έλεγα οτι είναι να δοκιμάσεις να εγκαταστήσεις τον phusion passenger σαν module του nginx ή του apache. Εδώ έχει ένα guide ή αν έχεις ubuntu, ένα παρόμοιο guide είναι και αυτό. Έχει οδηγίες για το τι χρειάζεται να εγκαταστήσεις, πώς βάζεις τα vhosts, ενεργοποιείς τον passenger και του λες το environment που θέλεις να τρέχει η rails. Θέλει να εγκαταστήσεις ruby κλπ.

3) Να χρησιμοποιήσεις docker, υπάρχει ένα ωραίο course στο nettuts όπου σε καθοδηγεί και σε μαθαίνει ταυτόχρονα και τι είναι το docker. Είναι πολύ ενδιαφέρον αν και πρέπει να πληρώσεις για να το δεις. Δεν το προτείνω βέβαια για εντελώς αρχάριους αλλά έχει ενδιαφέρον.

Γενικά υπάρχουν πολλές στρατηγικές για το πώς κάνεις deploy και πώς ας πούμε πετυχαίνεις zero-downtime deployments και δεν είναι τόσο απλό πάντα, π.χ. πώς γίνεται zero-downtime deploy μεταφέροντας μια αλλαγή που έχει γίνει στο όνομα ενός πεδίου της βάσης σε μια high-traffic εφαρμογή;

Γι'αυτό και χρειαζόμαστε πολλές φορές τη βοήθεια από system administrators και καλή συνεργασία... όπως και γνώση στην επιλογή των application servers (π.χ. σου πρότεινα τον passenger μιας και είναι πανεύκολος να τον setάρεις, αλλά υπάρχουν διάφοροι άλλοι όπως ο puma ή ο unicorn και ο καθένας έχει πλεονεκτήματα και μειονεκτήματα... και συνήθως υπάρχει μια ιδιαίτερη προτίμηση στον unicorn). Ελπίζω να βοήθησα :)

Άβαταρ μέλους
grigorakis4
Δημοσιεύσεις: 126
Εγγραφή: 16 Οκτ 2012 14:15
Τοποθεσία: ATHENS
Επικοινωνία:

Deploy ruby on rails

Δημοσίευση από grigorakis4 » 25 Νοέμ 2015 00:19

Ευχαριστώ για τον πλήρη οδηγό! Ναι όντως έκανα ένα deploy με passenger και είναι εύκολο αλλά από ότι διαβάσα το capistrano σου στήνει και τον σέρβερ κανονικά κ με εψησε πολύ...

Σαν πόρους και ταχύτητα νομίζω ότι υστερούν λίγο σε performance ή εγώ ακόμα δεν ξέρω τεχνικές;;
Εικόνα

Άβαταρ μέλους
Kainourios
Ruby Moderator
Δημοσιεύσεις: 504
Εγγραφή: 18 Μάιος 2005 16:20
Τοποθεσία: Κορυδαλλός
Επικοινωνία:

Deploy ruby on rails

Δημοσίευση από Kainourios » 25 Νοέμ 2015 10:57

Δεν υστερούν σε πόρους, έχω στήσει μικρούς servers (micro instances στο amazon) με nginx και passenger, χωρίς configuration από τη μεριά μου και πάνε σφαίρα. Τώρα για τον λόγο που ίσως αντιμετωπίζεις μια καθυστέρηση στην εφαρμογή σου, μπορεί να οφείλεται σε πολλούς παράγοντες και δεν μπορώ να σου πω χωρίς να το δω, μπορεί να φταίει από το οτι δεν το τρέχεις σε production ή οτι κάνεις πολλά queries χωρίς να τα έχεις κάνει optimize.

Απάντηση

Επιστροφή στο “Ruby & frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες