Avís
Aquest article és antic i és possible que part de la informació estigui desactualitzada o ja no sigui vàlida actualment.
Si tens cap dubte o necessites confirmar algun detall, et recomanem contactar amb el nostre equip de suport per rebre informació actualitzada i assistència personalitzada.
En una instal·lació per defecte de VestaCP no és possible allotjar projectes web desenvolupats amb el framework de Laravel. Tanmateix, fent alguns canvis en la configuració de VestaCP és possible allotjar un web Laravel.
A continuació us mostrem detalladament els passos que cal seguir per poder allotjar un web Laravel i comprovar que funciona correctament.
Crear una plantilla nova per utilitzar Laravel a VestaCP
Per poder treballar amb Laravel hem de crear plantilles per a Apache i Nginx. Per fer-ho, hem d'anar a la ruta següent, on s'emmagatzemen les plantilles amb les configuracions d' Apache2 que s'utilitzen en crear o editar un domini allotjat al nostre VestaCP:
# cd /usr/local/vesta/data/templates/web/apache2I creem els fitxers següents:
# touch laravel.{tpl,stpl}
Editem laravel.tpl:
# vi laravel.tplI hi afegim el contingut següent:
<VirtualHost %ip%:%web_port%>
ServerName %domain_idn%
%alias_string%
ServerAdmin %email%
DocumentRoot %docroot%/public/
ScriptAlias /cgi-bin/ %home%/%user%/web/%domain%/cgi-bin/
Alias /vstats/ %home%/%user%/web/%domain%/stats/
Alias /error/ %home%/%user%/web/%domain%/document_errors/
#SuexecUserGroup %user% %group%
CustomLog /var/log/%web_system%/domains/%domain%.bytes bytes
CustomLog /var/log/%web_system%/domains/%domain%.log combined
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
<Directory %docroot%/public/>
AllowOverride All
Options +Includes -Indexes +ExecCGI
</Directory>
<Directory %home%/%user%/web/%domain%/stats>
AllowOverride All
</Directory>
<IfModule mod_ruid2.c>
RMode config
RUidGid %user% %group%
RGroups www-data
</IfModule>
<IfModule itk.c>
AssignUserID %user% %group%
</IfModule>
IncludeOptional %home%/%user%/conf/web/%web_system%.%domain%.conf*
</VirtualHost> Editem laravel.stpl:
# vi laravel.stplI hi afegim el contingut següent:
<VirtualHost %ip%:%web_ssl_port%>
ServerName %domain_idn%
%alias_string%
ServerAdmin %email%
DocumentRoot %sdocroot%/public/
ScriptAlias /cgi-bin/ %home%/%user%/web/%domain%/cgi-bin/
Alias /vstats/ %home%/%user%/web/%domain%/stats/
Alias /error/ %home%/%user%/web/%domain%/document_errors/
#SuexecUserGroup %user% %group%
CustomLog /var/log/%web_system%/domains/%domain%.bytes bytes
CustomLog /var/log/%web_system%/domains/%domain%.log combined
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
<Directory %sdocroot%/public/>
AllowOverride All
SSLRequireSSL
Options +Includes -Indexes +ExecCGI
</Directory>
<Directory %home%/%user%/web/%domain%/stats>
AllowOverride All
</Directory>
SSLEngine on
SSLVerifyClient none
SSLCertificateFile %ssl_crt%
SSLCertificateKeyFile %ssl_key%
%ssl_ca_str%SSLCertificateChainFile %ssl_ca%
<IfModule mod_ruid2.c>
RMode config
RUidGid %user% %group%
RGroups www-data
</IfModule>
<IfModule itk.c>
AssignUserID %user% %group%
</IfModule>
IncludeOptional %home%/%user%/conf/web/s%web_system%.%domain%.conf*
</VirtualHost>
Ara hem de crear les plantilles per a Nginx i, per fer-ho, anem a:
# cd /usr/local/vesta/data/templates/web/nginxI creem els fitxers següents:
# touch laravel.tpl
# touch laravel.stpl
Editem laravel.tpl:
# vi laravel.tplI hi afegim el contingut següent:
server {
listen %ip%:%proxy_port%;
server_name %domain_idn% %alias_idn%;
error_log /var/log/%web_system%/domains/%domain%.error.log error;
location / {
proxy_pass http://%ip%:%web_port%;
location ~* ^.+\.(%proxy_extentions%)$ {
root %docroot%/public/;
access_log /var/log/%web_system%/domains/%domain%.log combined;
access_log /var/log/%web_system%/domains/%domain%.bytes bytes;
expires max;
try_files $uri @fallback;
}
}
location /error/ {
alias %home%/%user%/web/%domain%/document_errors/;
}
location @fallback {
proxy_pass http://%ip%:%web_port%;
}
location ~ /\.ht {return 404;}
location ~ /\.svn/ {return 404;}
location ~ /\.git/ {return 404;}
location ~ /\.hg/ {return 404;}
location ~ /\.bzr/ {return 404;}
include %home%/%user%/conf/web/nginx.%domain%.conf*;
} Editem laravel.stpl:
# vi laravel.stplI hi afegim el contingut següent:
server {
listen %ip%:%proxy_ssl_port%;
server_name %domain_idn% %alias_idn%;
ssl on;
ssl_certificate %ssl_pem%;
ssl_certificate_key %ssl_key%;
error_log /var/log/%web_system%/domains/%domain%.error.log error;
location / {
proxy_pass https://%ip%:%web_ssl_port%;
location ~* ^.+\.(%proxy_extentions%)$ {
root %sdocroot%/public/;
access_log /var/log/%web_system%/domains/%domain%.log combined;
access_log /var/log/%web_system%/domains/%domain%.bytes bytes;
expires max;
try_files $uri @fallback;
}
}
location /error/ {
alias %home%/%user%/web/%domain%/document_errors/;
}
location @fallback {
proxy_pass https://%ip%:%web_ssl_port%;
}
location ~ /\.ht {return 404;}
location ~ /\.svn/ {return 404;}
location ~ /\.git/ {return 404;}
location ~ /\.hg/ {return 404;}
location ~ /\.bzr/ {return 404;}
include %home%/%user%/conf/web/snginx.%domain%.conf*;
}En aquest punt ja tenim les plantilles creades per treballar amb Laravel. Per comprovar que les plantilles creades estan disponibles, obrim el tauler d'administració de VestaCP i editem el domini que volem que utilitzi Laravel.
A plantilla web(Apache2) i plantilla proxy(Nginx) hem de seleccionar la plantilla creada "Laravel" i fem clic a guardar per aplicar els canvis.
Amb aquests passos hem vist com crear les plantilles necessàries per a Laravel a VestaCP.
Provar el funcionament correcte de Laravel amb el CMS MaguttiCMS
Un cop tenim VestaCP preparat per poder funcionar amb Laravel, és important comprovar que el funcionament és correcte. A continuació, a tall d'exemple, allotjarem el CMS MaguttiCMS, que està desenvolupat amb Laravel 7 i Bootstrap 4.5 .
El primer pas que hem de fer per treballar amb Laravel és instal·lar Composer, que ens ajudarà amb la instal·lació de Laravel:
# apt-get install composerTot seguit descarreguem l'instal·lador de Laravel amb Composer:
# composer global require laravel/installer
Using version ^3.2 for laravel/installer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 19 installs, 0 updates, 0 removals
- Installing symfony/polyfill-php80 (v1.17.1): Downloading (100%)
- Installing symfony/process (v5.1.2): Downloading (100%)
- Installing symfony/polyfill-ctype (v1.17.1): Downloading (100%)
- Installing symfony/filesystem (v5.1.2): Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.17.1): Downloading (100%)
- Installing symfony/polyfill-intl-normalizer (v1.17.1): Downloading (100%)
- Installing symfony/polyfill-intl-grapheme (v1.17.1): Downloading (100%)
- Installing symfony/string (v5.1.2): Downloading (100%)
- Installing psr/container (1.0.0): Downloading (100%)
- Installing symfony/service-contracts (v2.1.3): Downloading (100%)
- Installing symfony/polyfill-php73 (v1.17.1): Downloading (100%)
- Installing symfony/console (v5.1.2): Downloading (100%)
- Installing psr/http-message (1.0.1): Downloading (100%)
- Installing psr/http-client (1.0.1): Downloading (100%)
- Installing ralouphie/getallheaders (3.0.3): Downloading (100%)
- Installing guzzlehttp/psr7 (1.6.1): Downloading (100%)
- Installing guzzlehttp/promises (v1.3.1): Downloading (100%)
- Installing guzzlehttp/guzzle (7.0.1): Downloading (100%)
- Installing laravel/installer (v3.2.0): Downloading (100%)
symfony/service-contracts suggests installing symfony/service-implementation ()
symfony/console suggests installing symfony/event-dispatcher ()
symfony/console suggests installing symfony/lock ()
symfony/console suggests installing psr/log (For using the console logger)
guzzlehttp/psr7 suggests installing zendframework/zend-httphandlerrunner (Emit PSR-7 responses)
guzzlehttp/guzzle suggests installing psr/log (Required for using the Log middleware)
Writing lock file
Generating autoload filesAnem al directori public_html del nostre web. L'arrel de documents del nostre web és la carpeta public del projecte Laravel, com podem veure a les plantilles creades anteriorment:
# cd /home/admin/web/prueba.com/public_html/Descarreguem el CMS de Magutti des del seu repositori de Github:
# git clone https://github.com/marcoax/maguttiCms.gitAccedim al directori "maguttiCms":
# cd maguttiCms
Perquè funcioni amb les plantilles creades per a Laravel hem de moure el contingut de la carpeta "maguttiCms" a la carpeta "public_html"
# mv * .* ../
# cd ..Assignem els permisos i el propietari correctes als fitxers i directoris:
# find ./ -type f -exec chmod 644 {} ";"
# find ./ -type d -exec chmod 755 {} ";"
# chown -R admin:admin ./Ara hem de copiar el fitxer .env.example a .env per editar les variables d'entorn. En aquest cas, per configurar la connexió a la base de dades:
# cp .env.example .envAbans de començar a editar el fitxer .env caldrà crear una base de dades. Per fer-ho, accedim al tauler d'administració de VestaCP https://ip_publica:8083 i anem a bases de datos > añadir.
Ara assignem un nom a la base de dades, un usuari i una contrasenya i fem clic a añadir. A l'exemple utilitzem "maguttiCMS".
Tingues en compte que VestaCP afegeix el prefix "admin_" al nom de la base de dades i de l'usuari.
Tornem ara a la línia d'ordres i executem l'ordre següent per editar les variables d'entorn:
# vi .envEn aquest fitxer hem d'editar la configuració de la connexió a Mysql que utilitzarà MaguttiCMS:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=admin_maguttiCms
DB_USERNAME=admin_maguttiCms
DB_PASSWORD=maguttiCms
Tot seguit procedim a instal·lar el CMS amb l'ordre següent:
# composer installUn cop instal·lat, hem de generar les claus:
# php artisan key:generateL'últim pas que ens queda és importar la base de dades de MaguttiCMS que es troba dins de la carpeta "db":
# cd db
# mysql -u root -p admin_maguttiCms < framework_base.sqlAra accedim al nostre CMS "http://nombre_dominio" i veurem que el CMS ja està disponible.
Informació
En algunes ocasions és possible veure un error que indica que la Key no s'ha generat. Per tant, tornarem a executar:
# php artisan key:generate
Per accedir al tauler d'administració accedim per l'URL "http://nombre_dominio/admin" amb l'usuari "cmsadmin@magutti.com" i la contrasenya "password".
Amb aquests últims passos hem pogut comprovar que el nostre VestaCP està preparat per treballar amb Laravel.