Category Archives: Lamp Stack

Lamp Stack (Linux Apaxhe Mysql php) και Virtual Hosts σε Centos 6.6

Εφόσον είδαμε πως να στήσουμε Lamp Stack σε Ubuntu και Debian και πως στήσαμε VirtualHosts σε αυτό ήρθε η ώρα να σας δείξουμε πως να το κάνετε και σε Centos 6.6 (Αν και βγήκε η έκδοση 7, λόγο ότι βγαίνει μόνο σε 64 bit και δεν έχω το κατάλληλο hardware για 64 bit VMs το έκανα σε 6.6).

Εγκατάσταση Apache Mysql php

Κατ’ αρχάς εγκαθιστούμε τον http server, την mysql, την php και κάποια php modules, χρήσιμα για ένα μέσο site, με την εντολή:

yum install httpd mysql php php-devel php-mysql php-pdo php-xml php-imap php-pear.noarch php-gd php-pear

Και μετά για δοκιμή δίνουμε:

echo "<?php phpinfo(); ?>" > /var/www/http/info.php

Και μπορούμε να δούμε αν παίζει δίνοντας στον browser http://^server_address^/info.php ή http://localhost/info.php αν στήνουμε τον server στο ίδιο μηχάνημα.

Ακόμη κάποια site θέλουν το Plugin Imagemagick που εγκαθιστάτε με τις εντολές:

yum install ImageMagick ImageMagick-devel gcc
pecl install imagick
echo "extension=imagick.so" > /etc/php.d/imagick.ini
sudo service httpd restart

 Δημιουργία VirtualHost

Για να ελέγχεται αν το configuration του apache έχει κάποιο λάθος ,που ενδεχομένως να κάνατε εσείς, κατα την διάρκεια εκτέλεσης του οδηγού δίνουμε:

sudo httpd -t

Ο τρόπος που θα δημιουργούμε τα virtualhost είναι ο ίδιος που χρησιμοποιεί το Debian/Ubuntu μόνο που θα τον στήσουμε εμείς Εξ’ αρχής.

Γι αυτό κατ’ αρχάς θα κάνουμε 2 φακέλους, έναν που θα περιέχει όλα τα vhosts και έναν που θα έχει τα «ενεργά» vhosts:

sudo mkdir -p /etc/httpd/vhosts-enabled
sudo mkdir -p /etc/httpd/vhosts-available

Στο folder /etc/httpd/vhosts/vhosts-enabled θα υπάρχουν τα virtual hosts που θα θέλουμε να σερβίρουμε και θα είναι Symbolic Links των αρχείων που θα περιγράφουν τα Vhost που θα βρίσκονται στον φάκελο /etc/httpd/vhosts/vhosts-available και θα είναι αρχεία υπό μορφή *.conf

Και για να «ενεργοποιήσουμε» ανοίγουμε με τον αγαπημένο μας editor:

sudo nano /etc/httpd/conf/httpd.conf

Αν δεν έχετε τον nano μπορείτε ή να το κάνετε με vi η να τον εγκαταστήσετε με την εντολή:

sudo yum install nano

Κάνουμε uncomment (αφαιρούμε το # από μπροστά) την γραμμή που λέει

# NameVirtualHost *:80

Και προσθέτουμε στο τέλος του αρχείου τα παρακάτω:

Include vhosts-enabled/*.conf

Και με Ctrl+O αποθηκεύουμε και με Ctrl+X βγαίνουμε από τον Editor

Και δημιουργούμε έναν φάκελο φιλοξενίας των virtual host:

sudo mkdir vhosts

Τώρα αν θέλουμε να δημιουργήσουμε ένα virtual Host δημιουργούμε έναν φάκελο στο /var/www/vhosts που θα περιέχει έναν φάκελο για τα αρχεία του site και έναν φάκελο για τα logs. Αυτό είναι δυνατόν να γίνουν με τις εντολές:


cd /var/www/vhosts
sudo mkdir ^όνομα_vhost^
sudo mkdir ^όνομα_vhost^/htdocs #Φάκελος φιλοξενίας site
sudo mkdir ^όνομα_vhost^/logs #Φάκελος logs

Όπου το ^όνομα_vhost^ ένα χαρακτηριστικό όνομα για το site σας (πχ. το url του)

Μέτα πηγαίνετε στον φάκελο /etc/httpd/vhosts-enabled με την εντολή:

cd /etc/httpd/vhosts-enabled

Με τον αγαπημένο σας editor δημιουργείτε ένα αρχείο που το όνομα θα έχει την μορφή ^όνομα_vhost^.conf

sudo nano ^όνομα_vhost^.conf

Και βάζουμε περιεχόμενο της μορφής:


<Virtualhost *:80>
ServerName ^domain_or_ip^

DocumentRoot  ^path_που_περιεχει_τα_αρχεία_του_σιτε^

DirectoryIndex index.php home.php index.html index.htm

ErrorLog ^Path_για_logs_σφαλμάτων^
CustomLog ^path_για_άλλου_είδους_logs^ combined
</Virtualhost>

Όπου:

  • ^domain_or_ip^: To domain ή η IP που θέλουμε το site να σερβίρετε.
  • ^path_που_περιεχει_τα_αρχεία_του_σιτε^: Εκεί που έχουμε τα αρχεία του site μας (στην περίπτωσή μας /var/www/vhosts/^όνομα_vhost^/htdocs )
  • ^Path_για_logs_σφαλμάτων^: Path που θα καταγράφονται ότι error υπάρχει. (συγκεκριμένη τιμή /var/www/vhosts/^όνομα_vhost^/logs/error.log)
  • ^path_για_άλλου_είδους_logs^: Path που καταγράφονται logs για το ποια IP επισκέπτεται το site. (συγκεκριμένή τιμή /var/www/vhosts/^όνομα_vhost^/logs/custom.log)

Το virtualhost το ενεργοποιούμε με τις εντολές:

sudo ln -s `pwd`/^όνομα_vhost^.conf ../vhosts-enabled/^όνομα_vhost^.conf

ή εναλλακτικά

sudo ln -s /etc/httpd/vhosts-available/^όνομα_vhost^.conf /etc/httpd/vhosts-enabled/^όνομα_vhost^.conf

Και μετά δίνεις

sudo service httpd restart

και δίνοντας http://^site_url^ στον browser σας μπορείτε να επισκεφτείτε το site σας. (Αρκεί στο /var/www/vhosts/^όνομα_vhost^/htdocs να έχετε βάλει καποιο περιεχόμενο 😉 )
 

Advertisements

Virtual Hosts στον Apache httpd server σε Ubuntu και Debian

Εφόσον είδαμε σε αυτό το άρθρο πως να στήσεις ένα lamp stack τώρα θα δούμε πως θα έχεις την δυνατότητα να στήσεις virtualhosts στον apache2 server. Με απλά λόγια το virtual host, vhost για συντομία, είναι ο μηχανισμός που σου επιτρέπει να hostάρεις παραπάνω από ένα site στον ίδιο webserver.

Σε ubuntu, debian και λοιπές διανομές βασισμένες πάνω σε αυτές το virtualhost είναι ένα απλά ένα αρχείο με κατάλληλες ρυθμίσεις στον φάκελο /etc/apache2/sites-available ενώ τα site που apache θα σερβίρει είναι στο /etc/apache2/sites-enabled. Ακόμη ο φάκελος /etc/apache2/sites-enabled περιέχει symbolic links των vhost που θέλουμε να σερβίρει.

Τώρα το εκάστοτε αρχείο virtualhost έχει την εξής δομή:

 
<VirtualHost <ip>: <port> >
ServerAdmin <email>
ServerName <ip ή domain>
ServerAlias <ip ή domain>
DocumentRoot <path>

ErrorLog <path για logs σφαλμάτων>
CustomLog <path_για_logs> combined

<Directory />
   Order allow,deny
   Allow from all
   Require all granted
</Directory>
</Virtualhost>

Όπου:

  • <ip>: η Ip της διεπαφής που θα σερβίρει το περιεχόμενο και  <port> η θύρα που θα την σερβίρει. Για ip συνήσταται το * που συμαίνει για κάθε ip και port η 80 για http και 445 για https
  • <email> : όπως και η επιλογή ServerAdmin είναι προαιρετική και σε περίπτωση λάθους ή προβλήματος δύνεται η δυνατότητα να εμφανίζει που να επικοινωνήσουν για την επίλυσή του (πχ. σφάλμα 404)
  • <ip ή domain> είναι το όνομα που θα δίνει ο χρήστης στον browser όταν θα επισκέπτεται το εξής ιστότοπο. Πχ. αν το site σας είναι το http://malakies.gr θα βάλεται malakies.gr στην θέση του <ip ή domain>
  • <path> είναι η διαδρομή του φακέλου που θα περιέχει τα αρχεία που θα σερβίρει πχ. /home/www/htdocs.
  • <path για logs σφαλμάτων>,<path_για_logs> είναι η διαδρομή των αρχείων που θα καταγράφουν τα σφάλματα. Το ένα είναι για τα σφάλματα της php ή του script που θα τρέχει και θα εμφανίζει το περιεχόμενο και του άλλου θα καταγράφει την ip του ποιος έκανε αίτημα  http.

Tο εκάστοτε αρχείο το αποθηκεύουμε με το όνομα της μορφής κάτι.conf συνήθως η ονοματολογία του κάτι είναι της μορφής αριθμός-ονομα_site και επιλέγεται η ονοματολογία αυτή λόγο ότι ο apache «σκανάρει» με αλφαβητική σειρά τα vhosts προκειμένου να σερβίρει το κατάλληλο domain.

Tα vhosts τώρα ενεργοποιούνται με την εντολή:

sudo a2ensite κάτι

Και απενεργοποιούνται με την εντολή:

sudo a2dissite κάτι

Προκειμένου να εφαρμοστούν οι αλλαγές γίνεται ΠΑΝΤΑ:

sudo service apache2 reload

πχ. Ενα έχεται κάνει ένα vhost /etc/apache2/sites-available/mitsos.conf το ενεργοποιείται με τις εντολές:

sudo a2ensite mitsos 
sudo service apache2 reload 

και το απενεργοποιείται:

 sudo a2dissite mitsos
sudo service apache2 reload 
Παράδειγμα:

Έστω ότι έχουμε 2 site ένα που όταν θα δίνουμε mitsos στον browser θα εμφανίζει «Γειά σου Μίτσο» και ένα maria που θα εμφανίζει στον browser «Γεια σου Μαρία».

Για να γίνει αυτό πρώτα θα πειροάξουμε το hosts file (προϋποθέτουμε ότι είμαστε σε linux) του υπολογιστή που θα επισκεπτόμαστε το site. Αυτό το κάνουμε γιατί δεν υπάρχει domain mitsos ή maria έτσι για τις δοκιμές μας δημιουργούμε ένα. Σε περίπτωση που χρησιμοποιείται ΠΡΑΓΜΑΤΙΚΑ domain δεν χρειάζεται καν να αγγίξεται το αρχείο /etc/hosts που θα πειράξουμε.

Δίνουμε την εντολή:

sudo nano /etc/hosts 

και εκεί βάζουμε τις γραμμές

<ip> maria
<ip> mitsos

Όπου <ip> είναι η ip του μηχανήματος που θα φιλοξενεί το site και αποθηκεύουμε με CTRL+O και με CTRL+X τερματίζουμε το nano.

Μετά δημιουργούμε τους φακέλους (προϋποθέτουμε ότι το /home/user ανήκει σε χρήστη που κάνει τις ρυθμίσεις):

mkdir -p /home/user/maria/{htdocs,errors}
chmod -R +x /home/user/maria/
mkdir -p /home/user/mitsos/{htdocs,errors}
chmod -R +x /home/user/mitsos

Και το περιεχόμενο για το εκάστοτε site:


echo "<? php ehco \"Γεια σου Μίτσο\";?>" > /home/user/mitsos/htdocs/index.php
echo "<? php ehco \"Γεια σου Μαρία\";?>" > /home/user/maria/htdocs/index.php

Εφόσον τα κάνουμε δημιουργούμε τα vhosts:

  • Για το mitsos μημιουργούμε το /usr/apache2/sites-available/000-mitsos.conf
    <VirtualHost *:80 >
    
    ServerName mitsos
    ServerAlias mitsos
    DocumentRoot /home/user/mitsos/htdocs
    
    ErrorLog /home/user/mitsos/errors/error.log
    CustomLog /home/user/mitsos/errors/access.log combined
    
    <Directory />
       Order allow,deny
       Allow from all
       Require all granted
    </Directory>
    </Virtualhost>
    
  • Για το maria δημιουρφούμε το αρχείο /usr/apache2/sites-available/000-mitsos.conf
    <VirtualHost *:80 >
    
    ServerName maria
    ServerAlias maria
    DocumentRoot /home/user/maria/htdocs
    
    ErrorLog /home/user/mitsos/errors/error.log
    CustomLog /home/user/mitsos/errors/access.log combined
    
    <Directory />
       Order allow,deny
       Allow from all
       Require all granted
    </Directory>
    </Virtualhost>

Και τα ενεργοποιούμε με τις εξής εντολές:


sudo a2ensite 000-mitsos
sudo a2ensite 000-maria
sudo service apache2 reload

Σημείωση: Στην ενεργοποίηση των vhost δίνεται το όνομα του αρχείου του vhost ΧΩΡΙΣ την κατάληξη.

Λοιπόν πλέον είστε έτοιμος για να hostaρεται τα δικά σας site με έναν server.

Στήσιμο Lamp (Linux Apache Mysql/MariaDB) Stack σε Debian και Ubuntu

Ο συνδιασμός του Apache http server της php και της mysql είναι αρκετά δημοφιλής συνδιασμός για webserver από εδώ και υπερβολικά αρκετό καιρό στο web, αυτός ο συνδιασμός είναι γνωστός και σαν LAMP stack. Έτσι θα σας δούμε βήμα – βήμα πως να στήσετε έναν webserver απλά και ωραία σε Debian/Ubuntu.

Σημείωση: παρακαλώ εάν το μηχάνημα σας δεν έχει sudo παρακαλώ να το εγκαταστήσετε.

Κατ’ αρχάς θα εγκαταστήσουμε την βάση δεδομένων μας με την εντολή:

sudo apt-get install mysql-server

Σε Ubuntu 14.04 και νεότερη μπορείτε να δώσετε την εντολή (Δεν υπάρχει σε Ubuntu 16.04):

sudo apt-get install mariadb-server-5.5

Για την εγκατάσταση της Mariadb που είναι ο αντικαταστάτης της Mysql.

Ακόμη υπάρχει και η Mariadb 10 που είναι η νεότερη έκδοση της Mariadb και μπορείτε να δείτε οδηγίες στο https://downloads.mariadb.org/mariadb/repositories ανάλογα με την διανομή και την έκδοση της διανομής σας, καθώς και οδηγίες για το πως να εγκαταστήσετε την Mariadb 5 (της προηγούμενης έκδοσης) όσο σε Ubuntu 12.04 LTS και σε Debian, και όχι μόνο σε αυτές τις διανομές. Η έκδοση 10 είναι προεπιλογή σε ubuntu 16.04 κα εγκαθιστάτε με την εντολή:

sudo apt-get install mariadb-server-10.0

Μετά εγκαθιστούμε ον apache webserver και την υποστήριξη της php:

  • Για ubuntu 14.04 και νεώτερες εκδόσεις:
    sudo apt-get install apache2 php5 libapache2-mod-php5
  • Για ubuntu 16.04 και νεώτερες εκδόσεις:
    sudo apt-get install apache2 libapache2-mod-php
    sudo a2enmod php7.0
    sudo a2dismod mpm_event
    sudo a2enmod mpm_prefork
    sudo service apache2 restart
    

Και την υποστήριξη της php με την mysql:
Για εκδόσεις 14.0 και παλαιότερες:

  • Για MariaDB και ενδεικνυόμενος τρόπος
    sudo apt-get install php5-mysqlnd
  • Εναλλακτικός τρόπος:
    sudo apt-get install php5-mysql

Σε Ubuntu 16.04:

sudo apt-get install php-mysql

Και εγκαθιστούμε και μερικά php modules που ζητούν τα περισσότερα cms (drupal, wordpress, joomla) και πλατφόρμες όπως phpBB3 και όχι μόνο κλπ κλπ.

  • Για ubuntu 14.04 και παλαιότερες
    sudo apt-get install php5-imagick php5-gd php5-curl php5-imap php5-mcrypt
  • Για ubuntu 16.04:
    sudo apt-get install php-imagick php-gd php-curl php-imap php-mcrypt

Για δοκιμή δημιουργούμε ένα αρχείο .php:

sudo bash `echo "<?php phpinfo();?> " > /var/www/html/phptest.php`

Και επισκεπτόμαστε http://localhost/phptest.php στον browser μας αν κάνουμε δοκιμές στο δικό μας μηχάνημα ή http://^διεύθυνση μηχανήματος^/phptest.php αν τρέχουμε σε απομακρυσμένο μηχάνημα ή σε εικονικό μηχάνημά με να είναι η ip η το domain name του μηχανήματός μας.

Ο Apache και η mysql (ή η mariadb αντίστοιχα) σταματάνε με τις αντίστοιχες εντολές:

sudo service apache2 stop
sudo service mysql stop

Και εκκινούν με τις αντίστοιχες εντολές:

sudo service apache2 start
sudo service mysql start

Αν δεν θέλεται να ξεκινάνε αυτόματα με την εκκίνηση δίνουμε:

  • Για την mysql/mariadb
    echo "manual" | sudo tee /etc/init/mysql.override
  • Για τον apache webserver
    sudo update-rc.d -f apache2 remove

Τέλος το περιεχόμενο που θα σερβίρει είναι στον φάκελο: /var/www. Αλλά υπάρχει η δυνατότητα να σερβίρει διαφορετικό περιεχόμενο ανάλογα με το url έτσι να φιλοξενεί περισσότερες σελίδες. Αυτό θα το δούμε σε ένα διαφορετικό άρθρο.