Πολλοί webservers ένα Configuration ένα Web Application

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Παρακαλώ να επιλέξετε, με προσοχή, την άδεια που θέλετε να έχουν οι οδηγοί που συγγράφετε.
Πληροφορίες για τις άδειες μπορείτε να βρείτε εδώ.
Άμα επιθυμείτε κάποια άλλη άδεια επικοινωνήστε με κάποιο Διαχειριστή είτε Συντονιστή.

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

Πολλοί webservers ένα Configuration ένα Web Application

Δημοσίευσηαπό pc_magas » 07 Ιούλ 2015, 19:52

Όσοι είναι της web developent "πιάτσας" θα έχουν το εξής πρόβλημα:
Ο αγαπημένος μας developer κάνει την σούπερ ουάου εφαρμογή μετά κόπου, καφεΐνης , νικοτίνης και ιδρώτα :P αλλά είναι δύσκολο να πρέπει να αλλάζεις κάθε 3 και λίγο τα <beep> configurations για την Database και όχι μόνο. Ειδικά αν είναι και scallable εφαρμογή και τρέχει πίσω από load balancer με ένα αξιοσημείωτο αριθμό servers μάλλον καταλαβαίνεις το πλούσιο λεξιλόγιο που έχει η Ελληνική μας γλώσσα δια τα λεγόμενα του developer. :lol:

Βάλε και την κρίση άστα να πάνε βλέπουμε μάλλον τον developer κατά δαφνί μεριά. :lol:

Γι αυτό φίλτατε συνάδελφε σου έχω την λύση:

Μπορείς στο virtualhost ή στο .htaccess του server να ορίζεις enviromental variables που θα αντιστοιχούν μόνο και μόνο στην εφαρμογή σου.

Για να γίνει αυτό πρώτα δίνουμε την εντολή:
Κώδικας: Επιλογή όλων
sudo a2enmod env


Ειδάλλως αν είμαστε σε shared hosting ελέγχουμε αν το mod_env είναι ενεργοποιημένο.

Τα enviromental Variables τώρα στο apache ορίζονται ως:
Κώδικας: Επιλογή όλων
SetEnv ^όνομα^ ^τιμή^

πχ.
Κώδικας: Επιλογή όλων
SetEnv DIMOPSIFISMA 2015


Για να λειτουργήσει πρέπει ΠΡΙΝ από αυτό να έχουμε βάλει την ρύθμιση (Είτε στο VirtualHost είτε στο .htaccess):
Κώδικας: Επιλογή όλων
AllowOveride all


Έτσι το μόνο που έχετε να κάνετε είναι να ορίσετε μια φορά τα enviromental variables στους υπολογιστές όπου τρέχει η εφαρμογή σας και μετά να μην ξαναασχοληθείτε να αλλάζεται τα configurations.

Για καλύτερη εμπέδωση θα ακολουθήσουμε ένα σενάριο που καλύπτει 2 συχνές περιπτώσεις:
  • Χρήση σε VirualHost.
  • Development Χρήση.

Για το παράδειγμα μας υποθέτουμε ότι υπάρχουν 2 μηχανήματα:
  1. Ένα VPS με apache σε ubuntu.
  2. Ένα Ubuntu development μηχάνημα.

Ο VPS είναι ένα μηχάνημα που τρέχει το web app μας σε virtualhost. Και το Developent μηχάνημα ένα μηχάνημα που έχει ένα κατάλογο που έχει διάφορα projects και θέλουμε κάθε ένα από αυτά να έχει διαφορετικά Enviromental variables.

Έχουμε ένα απλό κομμάτι κώδικα που εμφανίζει την enviromental variable hello:
Κώδικας: Επιλογή όλων
<?php var_dump(getenv("hello")); ?>


Και θέλουμε σε κάθε διαφορετικό server να δείχνει διαφορετική τιμή του hello.

Ουσιαστικά οι γραμμές ρύθμισης που θα ορίζουν το enviromental variable είναι:
Κώδικας: Επιλογή όλων
AllowOveride all
Setenv hello ^μια_τιμή_όποια_και_να_ναι^


Στον Server το βάζουμε εντός του Virtualhost που είναι ένα αρχείο στο /etc/apache2/sites-available και μπαίνει μεταξύ του
Κώδικας: Επιλογή όλων
<VistualHost>
</Virtualhost>


Στο Development περιβάλλον έχουμε τις επιλογές:
  1. Αυτές οι γραμμές να μπούν στο .htaccess
  2. Ο Χρήστης να έχει ένα virtual host για το localhost και να σερβίρει έναν φάκελο με όλα τα project που κάνει development.
  3. Να χρησιμοποιεί το default vhost και να παίζει στο /var/www/html .

Για το πρώτο δεν νομίζω να χρειάζεται και παραπάνω πληροφορίες.

Για το δεύτερο απλά στο virtualhost που έχει ορίσει βάζει τις γραμμές στο:
Κώδικας: Επιλογή όλων
<Directory ^πλήρες path του φακέλου που αντιστοιχεί στο project^>
</Directory>

Όπου ^πλήρες path του φακέλου που αντιστοιχεί στο project^ είναι το path του φακέλου που έχει την μια γραμμή κώδικα. Πχ. αν το path του αρχείου είναι το /home/mitsos/htdocs/index.php τότε το ^πλήρες path του φακέλου που αντιστοιχεί στο project^ έχει την τιμή /home/mitsos/htdocs/ .

Στην τρίτη περίπτωση απλά είτε στο /etc/apache2/apache2.conf είτε στο /etc/apache2/sites-available/000-default.conf βάζουμε τις παραπάνω γραμμές. Ειδικά στο /etc/apache2/sites-available/000-default.conf το βάζουμε όπως βάζουμε τα enviromental variables σε virtualhost.

Bonus Round:
Spoiler: show
Όσοι έχουν XAMPP και τα Τρισμισητά Παραθύρια ο οδηγός μπορεί να παίξει βάζοντας τις παραπάνω γραμμές στο (για την δεύτερη και τρίτη περίπτωση) στο C:\\xampp\apache\conf\extra\httpd-xampp.conf (Εαν το Xampp το βάλατε στο προεπιλεγμένο path εγκατάστασης)
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2598
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Επιστροφή στο Οδηγοί - How to - Tutorials