GNU/Linux >> Linux Esercitazione >  >> Debian

Come configurare Symfony 4 su Debian 9 Server

Symfony è la scelta preferita degli sviluppatori PHP per la creazione di applicazioni su piccola e larga scala. Con ogni nuova versione, Symfony si evolve in un toolkit migliore per gli sviluppatori. Symfony consente processi di sviluppo rapido delle applicazioni in modo che gli sviluppatori possano creare API su vasta scala, piattaforme di e-commerce, fintech e app di contabilità ecc. Dall'altro lato dello spettro, gli sviluppatori potrebbero creare semplici siti Web con l'aiuto del motore di modelli Twig.

Symfony 4 ha un sistema di ricette intelligente e una struttura di directory semplificata che non sovraccarica i file di codice nel tuo progetto. Symfony Flex è lì per installare librerie con nomi alias e registrarle automaticamente nelle configurazioni del bundle. La nuova versione introduce anche un sistema di routing veloce alleggerimento che utilizza ricerche su mappe hash per rotte statiche ed espressioni regolari combinate per rotte con segnaposto.

Data la popolarità di Symfony 4, ho deciso di configurare e impostare questa versione su una macchina Debian 9. In questo articolo, ti mostrerò come configurare uno Stack Symfony completo per eseguire le applicazioni Symfony. Il processo include passaggi relativi a permessi, webroot e server web.

Crea un server DigitalOcean

Oggi puoi trovare un certo numero di provider di hosting cloud sul mercato e la scelta dipende davvero dal tuo mix di requisiti di prestazioni e budget.

Ai fini di questo articolo, andrò con DigitalOcean, un provider di hosting cloud molto amato dagli sviluppatori. Puoi facilmente creare un account DigitalOcean e scegliere la distribuzione, le dimensioni e il data center del tuo server, come mostrato nella seguente GIF:

Ora, il passaggio successivo è avviare il terminale SSH. Se sei un utente Linux o Mac, lo ottieni per impostazione predefinita sulla tua macchina. Se sei un utente Windows, devi scaricare PuTTY. La buona notizia è che Windows 10 viene fornito con il proprio PowerShell che è possibile utilizzare ai fini di questo articolo.

Dopo aver avviato il droplet, sono necessari i seguenti tre elementi per accedere al terminale SSH:

  • Indirizzo IP del server

  • Nome utente

  • Password o chiave SSH

Dato che sto usando Windows, userò PuTTY per tutte le attività relative a SSH. Annotare gli elementi di cui sopra dal droplet e accedere al terminale SSH. In PuTTY, quando inserisci l'indirizzo IP e premi Invio, il server ti chiederà di memorizzare nella cache la chiave. Semplice colpo Sì.

Successivamente, inserisci le credenziali e accederai al tuo droplet DigitalOcean con accesso root.

Lo stack di Symfony LAMP

Symfony si basa su un tipico stack LAMP composto da PHP, Apache/Nginx, MySQL e una distribuzione Linux. È necessario prima installare tutti questi componenti software, quindi configurare Apache/Nginx in base ai requisiti di Symfony. Fortunatamente tutti i componenti per la creazione dello stack Symfony sono open source, quindi devi solo eseguire i comandi e installarli tramite SSH sul tuo server.

Symfony ha anche definito la configurazione del server web per Nginx e Apache nella loro documentazione, quindi tratterò le impostazioni principali qui  e potresti leggere il resto lì.

Aggiorna i pacchetti su Debian

Il primo elemento di azione nell'elenco è aggiornare i pacchetti sulla macchina Debian.

Inizia controllando la versione di Debian sul server eseguendo il comando seguente:

cat /etc/debian_version

Quindi ho Debian 9.4 sul mio server DigitalOcean.

Quindi, esegui i seguenti comandi per aggiornare i pacchetti tramite SSH:

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

Una volta che tutto è stato aggiornato, sono pronto per installare il server web.

Installa Apache2 per Symfony 4

Vai al terminale SSH e installa prima Apache2 con il seguente comando:

apt-get install apache2 -y

Una volta terminato il comando, accedi all'IP del tuo server e vedrai la pagina di benvenuto di Apache:

Prossimo. entrare nella struttura delle sottodirectory con il comando:

cd /etc/apache2/sites-available/

Abilita rapidamente l'opzione mod_rewrite prima con questo comando:

a2enmod rewrite

Ora apri 000-default.conf file e aggiungi quanto segue per configurare l'host web in 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>

Ora, Apache2 è configurato per eseguire il progetto da /var/www/html cartella. Ma puoi anche estendere la configurazione con poche altre opzioni che meglio si adattano a Symfony 4. Ecco un esempio:

<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:[email protected]:3306/db_name"
</VirtualHost>

Puoi anche utilizzare le ultime opzioni di Apache come Richiedi tutto concesso e configurare le variabili di ambiente nelle impostazioni precedenti. Ora ricarica il server Apache con il seguente comando in modo che le nuove impostazioni possano avere effetto:

service apache2 reload

Installa Nginx per Symfony 4

Se non desideri utilizzare Apache, Nginx è un'ottima opzione per un server web. Il processo è praticamente simile.

Inizia installando Nginx con il seguente comando:

apt-get update
apt-get install nginx -y

Ora esegui cd /etc/nginx/conf.d e configura il file come:

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:[email protected]: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;
}

Ora ricarica il server eseguendo il seguente comando:

service nginx reload

Installa PHP 7.2 per Symfony 4

Un'importante dipendenza di Symfony 4 è PHP 7.1.3 (o superiore) sul server. Per installare la versione richiesta, devo aggiornare/installare alcuni pacchetti su Debian 9 per installare PHP 7.2. Vai al terminale SSH (e assicurati di essere nella root)  ed esegui i seguenti comandi:

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

Ora nel passaggio successivo, esegui questi comandi:

sudo apt update
sudo apt install php7.2

Dopo una corretta installazione, controlla la versione PHP:

php -v

Ho anche bisogno di installare alcune altre librerie per assicurarmi che PHP 7.2 funzioni correttamente sul server. Eseguire il comando seguente per installare le librerie richieste:

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

Le librerie verranno installate e PHP 7.2 sarà configurato correttamente per Symfony 4.

Installa MySQL per configurare i database

Installiamo velocemente il database MySQL.

Inizia eseguendo il comando seguente:

apt-get install mysql-server

Il processo si interromperà per chiedere il tuo permesso. Digita (y ) e premere Invio. Nella finestra successiva, imposta la password per l'utente root di MySQL.

Il processo termina in pochi minuti.

Successivamente, configurerò MySQL in base ai requisiti dello stack LAMP. Per questo, inserisci il seguente comando:

mysql_secure_installation

A questo punto, la configurazione del server è completa secondo i requisiti di Symfony 4. Ora mi concentrerò sull'installazione del framework stesso.

Installa Composer su Debian 9

Installare Composer a livello globale è una buona idea perché in questo modo ogni utente può usarlo facilmente. Quindi, lo installerò in /user/local/bin directory.

Per prima cosa copiamo il programma di installazione in /tmp directory:

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

Quindi, esegui il comando seguente per eseguire il file Composer e installarlo a livello globale:

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

Ora che Composer è installato, procederò con l'effettiva installazione di Symfony 4.

Infine, installa Symfony 4 sul server Debian 9

A questo punto, ho configurato il server Apache per la webroot fornendo l'URL:/var/www/html/symfony4/public.

Accedi all'html cartella ed eseguire il seguente comando Composer per installare Symfony 4:

composer create-project symfony/skeleton symfony4

Il framework verrà installato in pochi secondi. Poiché Symfony 4 è molto ottimizzato con una piccola base di codice e dipendenze, non richiederà alcuna credenziale durante l'installazione. Una volta terminato, è necessario configurare il database.

Al termine del processo, accedi all'IP del tuo server e vedrai la pagina di benvenuto:

Successivamente, aggiungerò le credenziali del database a .env file di Symfony.

 

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

 

Parole finali

Symfony 4 è stato ampiamente adottato e apprezzato dagli sviluppatori PHP ed è già stato scaricato a milioni. Puoi anche usare le versioni standard di Symfony 3.x (basta aggiornare il comando per installare la versione specifica):

Per Symfony 3.0:

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

Per Symfony 3.1:

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

Se hai bisogno di aiuto per installare e configurare Symfony 4 su macchine Debian 9, fammelo sapere nei commenti.


Debian
  1. Come abilitare SSH su Debian 9 o 10

  2. Come configurare il server Rsyslog su Debian 11

  3. Come installare Redis Server su Debian 11

  4. Come installare MySQL 8.0 / 5.7 su Debian 11 / Debian 10

  5. Come configurare un server SFTP su Debian 11 Server

Come installare Todoman sul server Debian 11

Come impostare un Cron Job in Debian 10

Come installare FastPanel su Debian 11

Come installare I2P su Debian Server:

Come configurare il server OpenLDAP su Debian 10

Procedura:configurazione iniziale del server Debian 8.2