Εγκατασταση Symfony σε Ubuntu 16.04 με LEMP Stack

Symfony
Symfony

Το Symfony είναι ένα από τα πιο διαδεδομένα PHP frameworks. Με τη χρήση του, μπορούμε να να δημιουργήσουμε εύκολα και γρήγορα εφαρμογές σε PHP χωρίς να χρειάζεται να ανακαλύψουμε τον τροχό κάθε φορά για την υλοποίηση απλών αναγκών.

Παράδειγμα εφαρμογής με τη χρήση του Symfony είναι το Drupal CMS. Επίσης το Laravel χρησιμοποιεί πακέτα του Symfony.

Σε αυτό το άρθρο θα δούμε πως μπορούμε να εγκαταστήσουμε Symfony σε ένα μηχάνημα που τρέχει Ubuntu 16.04 με LEMP Stack χρησιμοποιώντας τα Blocks του Nginx.

Αν δεν έχετε εγκατεστημένο το LEMP Stack μπορείτε να το εγκαταστήσετε ακολουθώντας αυτόν εδώ τον οδηγό: Εγκατάσταση LEMP stack Σε Ubuntu 16.04 (Nginx, PHP, MariaDB)

Επίσης θα χρειαστούμε ένα domain το οποίο έχει ρυθμιστεί για να δείχνει στο server μας. Αν δεν έχετε κάποιο Domain μπορείτε να αποκτήσετε ένα νέο δωρεάν και να το ρυθμίσετε με τον αυτόν τον οδηγό: Απόκτηση και ρύθμιση δωρεάν domain name για χρήση στην Ιστοσελίδα μας.
Για να ολοκληρώσουμε με επιτυχία αυτόν τον οδηγό χρειαζόμαστε ένα λογαριασμό με δικαιώματα χρήσης της εντολής sudo

Για την ολοκλήρωση του οδηγού θα χρησιμοποιήσουμε το example.com. Εσείς σε όλα τα βήματα θα χρειαστεί να το αντικαταστήσετε με το δικό σας domain.

Βήμα 1, Δημιουργία της δομής φακέλων και αρχείων.

Η θέση των αρχείων του Symfony θα είναι στο /var/www/example.com/ , θα πρέπει να δημιουργήσουμε αυτούς του φακέλους:

sudo mkdir -p /var/www/example.com/

Επειδή δεν μπορούμε να γράψουμε sudo cd χωρίς να πάρουμε error θα αποκτήσουμε μόνιμα δικαιώματα υπερχρήστη για τη συνεχεία του οδηγού:

sudo su

Επίσης θα ενεργοποιήσουμε το mcrypt module της PHP που είναι απαραίτητο για τη λειτουργία του Symfony.

sudo phpenmod mcrypt

Θα περάσουμε τον Installer του Symfony για να δημιουργούμε τις νέες μας εφαρμογές:

sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony
sudo chmod a+x /usr/local/bin/symfony

Μετακινούμαστε στο φάκελο που φτιάξαμε προηγουμένως και δημιουργούμε μία νέα εφαρμογή Symfony. Τη νέα μας εφαρμογή θα την ονομάσουμε blog, μπορείτε να το αλλάξετε με όποιο όνομα επιθυμείτε:

cd /var/www/example.com/
symfony new blog

Μόλις τελειώσει με την εγκατάσταση θα μας εμφανήσει ένα ενημερωτικό μήνυμα:

symfony installer
symfony installer

Ο Installer εγκαθιστά όλα τα απαραίτητα αρχεία του Sympony μέσα στο φάκελο blog που είναι το όνομα της εφαρμογής μας.
Αν κάνουμε ls -la στο φάκελο που βρισκόμαστε θα πρέπει να δούμε το φάκελο blog:

list directory
list directory

Μέσα στο φάκελο blog θα πρέπει να έχουμε όλη τη δομή αρχείων του Sympony:

Symfony files
Symfony files

Το επόμενο που θα χρειαστεί να κάνουμε είναι να αλλάξουμε κάτοχο και δικαιώματα των αρχείων για να μπορεί να τα διαβάζει ο Nginx. Ο χρήστης με τον οποίο εκτελείτε ο Nginx σε Ubuntu είναι ο www-data:

chown -R www-data:www-data /var/www/
chmod -R 755 /var/www/

Βήμα 2, Δημιουργία αρχείου ρυθμίσεων για για το Server block.

Ο Nginx έχει τα αρχεία ρυθμίσεων για τα block στο φάκελο /etc/nginx/sites-available/ όπου μπορούμε να δημιουργήσουμε ένα αρχείο για κάθε site που θέλουμε να φιλοξενήσουμε στον ιδιο server, δημιουργούμε ένα νέο αρχείο με το όνομα του example.com:

nano /etc/nginx/sites-available/example.com

Από τα αρχεία του Sympony που εγκαταστήσαμε μόνο ο φάκελος /var/www/example.com/blog/web χρειάζεται να είναι προσβάσιμος από τo Internet. Προσθέτουμε μέσα στο αρχείο:

server {
server_name example.com www.example.com;
root /var/www/example.com/blog/web;

location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
# DEV
# This rule should only be placed on your development environment
# In production, don’t include this and don’t deploy app_dev.php or config.php
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP’s OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP’s OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}

# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don’t want to be accessible.
location ~ \.php$ {
return 404;
}

error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}

Πατάμε Ctrl+X για έξοδο και Υ για αποθήκευση.

Θα πρέπει να ενεργοποιήσουμε το Server block που φτιάξαμε. Το κάνουμε δημιουργώντας ένα σύνδεσμο για το αρχείο config που δημιουργήσαμε στο φάκελο sites-available:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

θα επιβεβαιώσουμε ότι δεν έχουμε στον Nginx συντακτικά λάθη:

nginx -t

θα μας επιστρέψει το παρακάτω κείμενο που θα μας ενημερώνει ότι δεν υπάρχουν λάθη:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
και τέλος θα κάνουμε restart στον Nginx για να διαβάσει τις αλλαγές:

systemctl restart nginx

Αν πληκτρολογήσουμε στο φυλλομετρητή το domain μας, θα πρέπει να μας εμφανιστεί η αρχική σελίδα του Symfony.

symfony default page
symfony default page

Έχουμε τελειώσει με την εγκατάσταση και μπορούμε συνεχίσουμε τη παραμετροποίηση της σελίδας μας, Ο χρόνος ολοκλήρωσης του παραπάνω οδηγού σε ένα μηχάνημα με εγκατεστημένο LEMP υπολογίζεται περίπου στα 20 λεπτά.

Μην διστάσετε να αφήσετε σχόλιο για οποιαδήποτε απορία ή παρατήρηση που μπορεί να έχετε.

Site Footer