Как да подкараме Laravel апликация на споделен хостинг

По принцип не се гледа с добро око на споделените хостинг планове, когато става дума за Laravel…

Има няколко причини за това, като сред тях са:

  • ограничените ресурси, с които се ползва даден план;
  • по-ниската сигурност и перформънса;
  • липсата на SSH достъп, който драстично усложнява деплоймънта и лишава разработчика от Composer и Artisan.

Колкото по-голяма и натоварена е дадена апликация, толкова повече тези недостатъци натежават, но според мен при малки проекти от сорта на блог или фирмен сайт, тяхната роля е пренебрежима.

Т.е. можем да се възползваме от цялата сила на Laravel.

Именно за това става дума в следващите няколко реда:

  • Как да качим файловете на апликацията си на сървъра
  • Как да настроим публичната папка
  • Как да настроим конфигурациите, така че да се възползваме от кешираните routes, configurations & views.
  • И в крайна сметка – как да подкараме проекта си без никакви проблеми.

Ще се постаря да не отплесвам в излишни дейтайли, но все пак този пост ще е малко по-дълъг от обикновено…

Ако хостинг планът ви позволява SSH достъп до сървъра, тогава можете спокойно да спрете да четете още сега. Освен, разбира се, ако не ви е любопитно как се случват нещата без тази „екстра“.

Как да качим файловете на сървъра

Стъпка 1. През FTP клиент създаваме папка, която е извън публичната. В нея ще се намира всичко, освен публичната папка на проекта.

Стъпка 2. Копираме папките и файловете, като спокойно можем да пропуснем папката node_modules.

Тъй като не можем да компилираме javascript файлове директно на сървъра, тя не е нужна. А пък и ще спестим доста inodes, високата бройка на които има потенциал да ни докара проблеми.

Стъпка 3. Копираме публичната папка в public_html или както се казва root директорията в конкретния случай.

Стъпка 4. Отваряме public_html/index.php и сменяме пътищата. Няма нужда да пипаме .htaccess.

Стъпка 5. Създаваме база данни през PHPMyAdmin и импортваме таблиците си. (Няма как да изпозлваме миграциите, кофти!)

В един идеален свят…

Написаното дотук би трябвало да е достатъчно, за да подкараме апликацията си на споделен хостинг.  В реалността обаче, възникват следните проблеми:

  • Тъй като нямаме SSH достъп, трябва да кешираме на локалния сървър – така пътищата към директориите се оказват грешни.
  • Ако сме писали апликацията в Уиндоус среда, тогава има потенциален проблем със сепарторите – колкото и да внимавате Laravel все някак си ще вмъкне някъде backslash и според конфигурацията на сървъра ви, това може да е проблем, а може и да не е. (При Superhosting.bg е проблем…)

Решението на тези казуси е следното:

Стъпка 1. Задаваме ръчно на Laravel директорията за съхранение на файлове.

Най-бързият вариант е да добавим следния код в bootstrap/app.php

// new storage path

$path_storage = '/path/to/storage';

# override already $app->storagePath using the function

$app->useStoragePath($path_storage);

Най-правилният вариант е да създадем настройка за пътя в .env, която после можем да сменяме, според средата, но това го оставям на вашата фантазия, за да не разтягам локуми.

Стъпка 2. Кешираме наново

php artisan optimize 

composer dump-autoload -o

Стъпка 3. Ако сте писали под Windows

След като качите апликацията, отворете bootstrap/cache/config.php и се уверете, че всички кеширани пътища са коректни, като внимавате особено много за пътищата към views, защото при тях има тенденцията да си запазват директориите на локалния сървър, въпреки стъпка 1.

Общо взето, това е всичко…

Не гарантирам, че ще минете само с описаното дотук, когато се опитвате да подкарате Laravel апликация на споделен хостинг, но определено е един добър старт, който ще ви спести половин ден мислене и търсене с Google, ако досега не сте имали подобен опит.

Но едно е ясно -> SSH достъпът трябва да е ключов фактор за избиране на споделен хостинг план, когато става дума за Laravel.

Вашият коментар