Si të konfiguroni Symfony 4 në serverin Debian 9


Symfony është një zgjedhje e preferuar e zhvilluesit të PHP për ndërtimin e aplikacioneve në shkallë të vogël dhe të madhe. Me çdo version të ri, Symfony zhvillohet në një paketë mjetesh më të mira për zhvilluesit. Symfony lejon procese të shpejta të zhvillimit të aplikacioneve në mënyrë që zhvilluesit të mund të ndërtojnë API në shkallë të plotë, platforma të tregtisë elektronike, aplikacione fintech dhe kontabiliteti etj. në anën tjetër të spektrit, zhvilluesit mund të krijojnë uebsajte të thjeshta me ndihmën e motorit të modelimit Twig.

Symfony 4 ka një sistem recetash inteligjente dhe strukturë të thjeshtuar të drejtorive që nuk i mbingarkon skedarët e kodit në projektin tuaj. Symfony Flex është atje për të instaluar biblioteka me emra pseudonimi dhe për t'i regjistruar ato automatikisht në konfigurimet e paketës. Versioni i ri prezanton gjithashtu një sistem lehtësimi të shpejtë të rrugëtimit duke përdorur kërkime të hartës hash për rrugët statike dhe shprehje të rregullta të kombinuara për rrugët me mbajtës të vendeve.

Duke pasur parasysh popullaritetin e Symfony 4, vendosa të konfiguroj dhe konfiguroj këtë version në një makinë Debian 9. Në këtë artikull, unë do t'ju tregoj se si mund të konfiguroni një Symfony Stack të plotë për të ekzekutuar aplikacionet Symfony. Procesi përfshin hapa në lidhje me lejet, webroots dhe serverin e uebit.

Krijoni një server DigitalOcean

Sot, ju mund të gjeni një numër ofruesish të pritjes së cloud në treg sot dhe zgjedhja varet vërtet në përzierjen tuaj të kërkesave të performancës dhe buxhetit.

Për qëllimin e këtij artikulli, unë do të shkoj me DigitalOcean, një ofrues i pritjes së cloud që është shumë i dashur nga zhvilluesit. Mund të regjistroheni lehtësisht për një llogari DigitalOcean dhe të zgjidhni shpërndarjen, madhësinë dhe qendrën e të dhënave të serverit tuaj, siç tregohet në GIF-in e mëposhtëm:

Tani, hapi tjetër është nisja e terminalit SSH. Nëse jeni përdorues Linux ose Mac, e merrni atë si parazgjedhje në kompjuterin tuaj. Nëse jeni përdorues i Windows, duhet të shkarkoni PuTTY. Lajmi i mirë është se Windows 10 vjen me PowerShell-in e vet që mund ta përdorni për qëllimet e këtij artikulli.

Pas nisjes së pikës, ju nevojiten tre artikujt e mëposhtëm për t'u identifikuar në terminalin SSH:

Adresa IP e serverit Emri i përdoruesit Fjalëkalimi ose çelësi SSH

Meqenëse jam duke përdorur Windows, do të përdor PuTTY për të gjitha aktivitetet që lidhen me SSH. Shënoni artikujt e mësipërm nga pika dhe identifikohuni në terminalin SSH. Në PuTTY, kur futni adresën IP dhe shtypni Enter, serveri do t'ju pyesë për ruajtjen e çelësit. Goditje e thjeshtë Po.

Më pas, futni kredencialet dhe do të identifikoheni në pikën tuaj DigitalOcean me qasje rrënjësore.

Symfony LAMP Stack

Symfony mbështetet në një pirg tipik LAMP që përbëhet nga PHP, Apache/Nginx, MySQL dhe një shpërndarje Linux. Së pari duhet të instaloni të gjithë këta komponentë softuerësh dhe më pas të konfiguroni Apache/Nginx sipas kërkesave të Symfony. Për fat të mirë, të gjithë komponentët për krijimin e stek Symfony janë me burim të hapur, kështu që ju duhet vetëm të ekzekutoni komandat dhe t'i instaloni ato nëpërmjet SSH në serverin tuaj.

Symfony ka përcaktuar gjithashtu konfigurimin e serverit të uebit për Nginx dhe Apache në dokumentacionin e tyre, kështu që unë do të mbuloj cilësimet kryesore këtu  dhe ju mund të lexoni pjesën tjetër atje.

Përditësoni paketat në Debian

Artikulli i parë i veprimit në listë është përditësimi i paketave në makinën Debian.

Filloni duke kontrolluar versionin Debian në server duke ekzekutuar komandën e mëposhtme:

cat /etc/debian_version

Kështu që unë kam Debian 9.4 në serverin tim DigitalOcean.

Më pas, ekzekutoni komandat e mëposhtme për të përditësuar paketat përmes SSH:

apt-get update
apt-get upgrade
apt-get dist-upgrade

Pasi të jetë përditësuar gjithçka, unë jam gati të instaloj serverin në internet.

Instaloni Apache2 për Symfony 4

Shkoni te terminali SSH dhe së pari instaloni Apache2 me komandën e mëposhtme:

apt-get install apache2 -y

Pasi komanda të përfundojë, hyni në IP të serverit tuaj dhe do të shihni faqen e mirëseardhjes së Apache:

Tjetra. shkoni në strukturën e nëndirektorisë me komandën:

cd /etc/apache2/sites-available/

Aktivizoni shpejt opsionin mod_rewrite së pari me këtë komandë:

a2enmod rewrite

Tani hapni skedarin 000-default.conf dhe shtoni sa vijon për të konfiguruar web hostin në Apache 2:

<VirtualHost *:80>
   ServerName domain.tld
   ServerAlias www.domain.tld
 
   DocumentRoot /var/www/html/symfony4/public
   <Directory /var/www/html/symfony4/public>
       Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
       Allow from All
   </Directory>
 
   # uncomment the following lines if you install assets as symlinks
   # or run into problems when compiling LESS/Sass/CoffeeScript assets
   # <Directory /var/www/html>
   #  Options FollowSymlinks
   # </Directory>
 
   ErrorLog /var/log/apache2/project_error.log
   CustomLog /var/log/apache2/projec_access.log combined
</VirtualHost>

Tani, Apache2 është konfiguruar për të ekzekutuar projektin nga dosja /var/www/html. Por ju gjithashtu mund ta zgjeroni konfigurimin me disa opsione të tjera që i përshtaten më mirë Symfony 4. Këtu është një shembull:

<VirtualHost *:80>
   ServerName domain.tld
   ServerAlias www.domain.tld
 
   DocumentRoot /var/www/html/symfony4/public
   <Directory /var/www/html/symfony4/public>
       AllowOverride None
       Require all granted
       Allow from All
 
       <IfModule mod_rewrite.c>
           Options -MultiViews
           RewriteEngine On
           RewriteCond %{REQUEST_FILENAME} !-f
           RewriteRule ^(.*)$ index.php [QSA,L]
       </IfModule>
   </Directory>
 
   # uncomment the following lines if you install assets as symlinks
   # or run into problems when compiling LESS/Sass/CoffeeScript assets
   # <Directory /var/www/crvfakeexample.com>
   #  Options FollowSymlinks
   # </Directory>
 
   # optionally disable the RewriteEngine for the asset directories
   # which will allow apache to simply reply with a 404 when files are
   # not found instead of passing the request into the full symfony stack
   <Directory /var/www/crvfakeexample.com/public/bundles>
       <IfModule mod_rewrite.c>
           RewriteEngine Off
       </IfModule>
   </Directory>
   ErrorLog /var/log/apache2/crvfakeexample.com_error.log
   CustomLog /var/log/apache2/crvfakeexample.com_access.log combined
 
   # optionally set the value of the environment variables used in the application
   #SetEnv APP_ENV prod
   #SetEnv APP_SECRET <app-secret-id>
   #SetEnv DATABASE_URL "mysql://db_user::3306/db_name"
</VirtualHost>

Ju gjithashtu mund të përdorni opsionet më të fundit të Apache si Kërkoni të gjitha të dhëna dhe të konfiguroni variablat e mjedisit në cilësimet e mësipërme. Tani ringarkoni serverin Apache me komandën e mëposhtme në mënyrë që cilësimet e reja të mund të hyjnë në fuqi:

service apache2 reload

Instaloni Nginx për Symfony 4

Nëse nuk dëshironi të përdorni Apache, Nginx është një opsion i shkëlqyeshëm për një server në internet. Procesi është shumë i ngjashëm.

Filloni duke instaluar Nginx me komandën e mëposhtme:

apt-get update
apt-get install nginx -y

Tani ekzekutoni cd /etc/nginx/conf.d dhe konfiguroni skedarin si:

server {
   server_name domain.tld www.domain.tld;
   root /var/www/html/symfony4/public;
 
   location / {
       # try to serve file directly, fallback to index.php
       try_files $uri /index.php$is_args$args;
   }
   location ~ ^/index\.php(/|$) {
       fastcgi_pass unix:/var/run/php7.1-fpm.sock;
       fastcgi_split_path_info ^(.+\.php)(/.*)$;
       include fastcgi_params;
 
       # optionally set the value of the environment variables used in the application
       # fastcgi_param APP_ENV prod;
       # fastcgi_param APP_SECRET <app-secret-id>;
       # fastcgi_param DATABASE_URL "mysql://db_user::3306/db_name";
 
       # 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/index.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;
}

Tani ringarkoni serverin duke ekzekutuar komandën e mëposhtme:

service nginx reload

Instaloni PHP 7.2 për Symfony 4

Një varësi e rëndësishme e Symfony 4 është PHP 7.1.3 (ose më e madhe) në server. Për të instaluar versionin e kërkuar, më duhet të përditësoj/instaloj disa paketa në Debian 9 për të instaluar PHP 7.2. Shkoni te terminali SSH (dhe sigurohuni që jeni në rrënjë)  dhe ekzekutoni komandat e mëposhtme:

sudo apt install ca-certificates apt-transport-https
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
sudo echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list

Tani në hapin tjetër, ekzekutoni këto komanda:

sudo apt update
sudo apt install php7.2

Pas instalimit të suksesshëm, kontrolloni versionin PHP:

php -v

Më duhet gjithashtu të instaloj disa biblioteka të tjera për t'u siguruar që PHP 7.2 funksionon siç duhet në server. Ekzekutoni komandën e mëposhtme për të instaluar bibliotekat e kërkuara:

sudo apt install php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-xml libapache2-mod-php7.2

Bibliotekat do të instalohen dhe PHP 7.2 është konfiguruar siç duhet për Symfony 4.

Instaloni MySQL për të konfiguruar bazat e të dhënave

Le të instalojmë shpejt bazën e të dhënave MySQL.

Filloni duke ekzekutuar komandën e mëposhtme:

apt-get install mysql-server

Procesi do të ndalet për të kërkuar lejen tuaj. Shkruani (y) dhe shtypni Enter. Në dritaren tjetër, vendosni fjalëkalimin për përdoruesin rrënjë të MySQL.

Procesi përfundon në pak minuta.

Më pas, do të konfiguroj MySQL sipas kërkesave të stivës LAMP. Për këtë, futni komandën e mëposhtme:

mysql_secure_installation

Në këtë pikë, konfigurimi i serverit është i plotë sipas kërkesave të Symfony 4. Tani do të fokusohem në instalimin e vetë kornizës.

Instaloni Composer në Debian 9

Instalimi i Composer globalisht është një ide e mirë sepse në këtë mënyrë, çdo përdorues mund ta përdorë lehtësisht. Pra, do ta instaloj në drejtorinë /user/local/bin.

Le të kopjojmë fillimisht instaluesin në drejtorinë /tmp:

php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"

Më pas, ekzekutoni komandën e mëposhtme për të ekzekutuar skedarin Composer dhe për ta instaluar atë globalisht:

sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

Tani që është instaluar Composer, do të vazhdoj me instalimin aktual të Symfony 4.

Më në fund, instaloni Symfony 4 në serverin Debian 9

Në këtë pikë, unë kam konfiguruar serverin Apache për webroot duke dhënë URL-në: /var/www/html/symfony4/public.

Shkoni në dosjen html dhe ekzekutoni komandën e mëposhtme të Composer për të instaluar Symfony 4:

composer create-project symfony/skeleton symfony4

Korniza do të instalohet brenda pak sekondash. Për shkak se Symfony 4 është shumë i optimizuar me një bazë të vogël kodesh dhe varësi, nuk do të kërkojë asnjë kredencial gjatë instalimit. Pasi të keni mbaruar, duhet të konfiguroni bazën e të dhënave.

Pasi të përfundojë procesi, hyni në IP-në e serverit tuaj dhe do të shihni faqen e mirëseardhjes:

Më pas, unë do të shtoj kredencialet e bazës së të dhënave në skedarin .env të Symfony.

###> doctrine/doctrine-bundle ###
APP_ENV=dev
APP_DEBUG=1
APP_SECRET=bd4d4fxxxx035a97fxxxed13f18646f
 
# customize this line!
DATABASE_URL="mysql://db_user::3306/db_name"
###< doctrine/doctrine-bundle ###

Fjalët e fundit

Symfony 4 është miratuar dhe vlerësuar gjerësisht nga zhvilluesit e PHP dhe tashmë është shkarkuar në miliona. Ju gjithashtu mund të përdorni versionet standarde të Symfony 3.x (ju duhet vetëm të përditësoni komandën për të instaluar versionin specifik):

Për Symfony 3.0:

composer create-project symfony/framework-standard-edition your_project_name "3.0.*"

Për Symfony 3.1:

composer create-project symfony/framework-standard-edition your_project_name "3.1.*"

Nëse keni nevojë për ndihmë në instalimin dhe konfigurimin e Symfony 4 në makinën Debian 9, më njoftoni në komente.