Laravel для ларадроч..айников. Первый запуск

Exception - не горобець, без try-catch не впіймаєш!

В житті кожного PHP-розробника наступає момент, коли йому доводиться обирати той, чи інший фреймворк. Так-так, як би ми не старались використовувати виключно власні напрацювання, CMS, чи інші засоби для розробки, іноді готове рішення, розроблене іншими програмістами, буває значно кориснішим, ніж власні.

Незважаючи на те, що фреймворків для PHP не так вже й багато, існує немало суперечок на тему вибору того самого фреймворку для роботи, і вже досвідчені розробники часто негативно відгукуються за будь-які з них. Але, як свідчить практика, це все лише питання того моменту, коли один з таких девелоперів (звісно ж, в цілях анонімності, ми не розголошуватимемо ім’я Віталіка) не поставить собі один з існуючих фреймворків та не оцінить всі зручності, що він надає.

Звісно ж, жарти-жартами, але, якщо ви читаєте цю статтю, то, швидше за все, ви або обираєте фреймворк, або вже визначились з вибором і тепер вас цікавлять виключно технічні нюанси. Саме тому, пропоную перейти до ознайомлення з одним із PHP-фреймворків під назвою Laravel.

Що таке Laravel?

Laravel – це безкоштовний фреймворк для PHP з відкритим вихідним кодом, структура якого базується на архітектурній моделі MVC (Model, View, Controller). Подейкують, що при розробці фреймворку, Тейлор Отвел - основоположник Laravel, був натхненний присутніми принципами і підходами до розробки в Ruby.

Сам фреймворк був випущений 11 червня 2011 року - Laravel 1, і з того часу досягнув неабиякої популярності.

На момент написання статті, останньою версією фреймворку є Laravel 5.6.

Встановлення

Перед тим як перейти до безпосереднього встановлення фреймворку, нам потрібно буде налаштувати наше робоче середовище. В статті буде описано встановлення Laravel 5.6 для Ubuntu 16.04.

Встановлення та налаштування власного веб-серверу.

На офіційному сайті Laravel описані наступні вимоги для встановлення останньої версії фреймворку (5.6), які повинні обов’язково бути враховані при встановленні:

  • PHP >= 7.1.3
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension
  • Ctype PHP Extension
  • JSON PHP Extension

Якщо у вас ще не встановлений веб-сервер, рекомендую переглянути нашу статтю - “Встановлення Apache2 + php + mysql + phpmyadmin на Ubuntu 16.04” з наступними поправками:

  • Замість встановлення PHP-версії 5.6, нам, згідно з вимогами офіційної документації, потрібна буде версія 7.1. Саме тому, замість команди
    sudo apt-get install php5.6
    нам потрібна буде команда
    sudo apt-get install php7.1
  • Замість старого переліку модулів:
    sudo apt-get install php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml
    Використаємо наступний перелік:
    sudo apt-get install php7.1-mbstring php7.1-mcrypt php7.1-mysql php7.1-xml php7.1-json php7.1-curl

У випадку, якщо у вас вже є встановлений веб-сервер, переконайтесь, що він відповідає усім вимогам, зазначеним вище.

Встановлення Composer

Composer – менеджер залежностей для мови PHP, що дозволяє легко і просто встановлювати пакети (одним з яких і буде Laravel).

Якщо у вас вже встановлений Composer, ви можете пропустити цей пункт та переходити до безпосереднього встановлення фреймворку.

Для того щоб встановити Composer, вам потрібно відкрити термінал (Ctrl+Alt+T), та почергово ввести наступні команди (бажано, щоб у вас були всі права на директорію, в якій ви знаходитесь, до прикладу, ви можете перейти в директорію поточного користувача за допомогою команди cd ~):​

  • Завантажуємо composer-інсталятор:
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
  • Перевіряємо SHA-384 хеш інсталятора. Перед тим як запускати команду, переконайтесь, що SHA-384 хеш наданий на сайті Composer відповідає тому, що вказаний в команді нижче:
    php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    В результаті маємо отримати наступне:
    Installer veryfied
  • Встановлюємо Composer в директорію /usr/local/bin та робимо його глобально-доступним через команду composer:
    sudo php composer-setup.php --install-dir=/usr/local/bin –filename=composer
    В результаті, маємо отримати наступне:
    All settings correct for using
    
    	Composer Downloading 1.1.1...
    
    	Composer successfully installed to: /usr/local/bin/composer
    
    	Use it: php /usr/local/bin/composer
  • Видаляємо інсталятор:
    php -r "unlink('composer-setup.php');"

Якщо все пройшло успішно, перевірити себе можна простою командою composer -v, котра виведе список всіх доступних команд Composer'a.

Встановлення Laravel 5.6

Якщо під час налаштування свого веб-серверу ви слідували нашій інструкції, то у вас, напевно, вже мала б бути присутня папка для вашого першого сайту, в іншому випадку, її потрібно створити та прописати налаштування віртуальних хостів, а також в файлі hosts.

Для встановлення Laravel версії нам потрібно буде перейти в директорію, де розміщені наші сайти (частіш за все це - /var/www), та виконати команду:

composer create-project laravel/laravel your-project-name

де your-project-name - назва директорії, в якій буде розміщено ваш сайт, наприклад laravel.loc

За допомогою команди вище, буде встановлена остання на поточний момент версія Laravel. Якщо ви бажаєте встановити старішу версію, тоді ви можете використати наступну команду:

composer create-project laravel/laravel your-project-name "5.5.*"

де 5.5.* - версія Laravel

Результат успішного виконання вищезазначених команд можна побачити на скрінах нижче:

P.S. Якщо в кінці у вас автоматично не виконалась команда php artisan key:generate, її потрібно буде виконати вручну. Для цього:

  • Перейдіть в директорію з вашим проектом (наприклад - cd /var/www/your-project-name) та виконайте команду
    php artisan key:generate
    
  • В результаті ви маєте отримати наступну відповідь (згенерований ключ буде відрізнятись):
    Application key [base64:QvUmKVPwpBtSm6XtS1Tv8UwiIJ+WgQMUrFPJ1n+Mpcw=] set successfully.
    

Налаштування .htaccess

Без попереднього налаштування .htaccess, ваша індексна сторінка буде доступна за посиланням your-domain/public. Якщо вас це не влаштовує, цю проблему можна вирішити в декілька простих дій:

  • В кореневій директорії сайту (стандартно - cd /var/www/your-project-name) додаємо файл .htaccess
  • В новостворений файл додаємо наступне:
    
        RewriteEngine On
    
        RewriteRule ^(.*)$ public/$1 [L]
    

Після  кількох простих кроків, всі запити будуть автоматично переадресовуватись на your-domain/public і тепер будь-яка сторінка буде доступна за звичною адресою, наприклад - your-domain/example-page

Виправлення помилок, пов'язаних з правами доступу

Напевно, кожен користувач Ubuntu зіштовхувався з проблемами доступу до окремих директорій або файлів. Якщо ваш сайт встановлений в директорію /var/www, то, майже з 99% ймовірністю можна сказати, що ваш перший проект на Laravel зустріне вас схожою помилкою:

"The stream or file "/var/www/your-project-name/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied"

Якщо ви щойно встановили проект, тоді, швидше за все, у помилки вище є як мінімум 2 причини:

  • Не налаштовані авторизаційні дані для підключення до бази даних;
  • Всі помилки, що виникають в Laravel, фреймворк намагається записувати в файл laravel.log, але, як повідомляє нам дебагер, у нього немає доступу до цього файлу - Permission denied

Налаштування підключення до бази даних ми розглянемо трохи нижче, а от помилку з правами доступу спробуємо вирішити прямо зараз. 

Всі свої дії PHP-скрипт виконує через стандартного користувача Ubuntu - www-data, проте, під час встановлення проекту, всі наші файли були записані під поточним користувачем. Саме тому, нам потрібно змінити його для певних файлів проекту (не варто робити заміну користувача для усіх файлів, оскільки після ви не зможете вільно їх редагувати).

Системними директоріями, що потрібні для нормального функціонування Laravel є bootstrap & storage, саме для них ми й будемо змінювати власника за допомогою наступних команд:

sudo chown -R www-data:www-data storage/
sudo chown -R www-data:www-data bootstrap/

Налаштування підключення до БД

Кінцевим етапом встановлення Laravel буде налаштування підключення до бази даних. Для цього вам потрібно буде:

  • За допомогою PHPMyAdmin або інших інструментів для роботи з БД створити саму базу даних, наприклад - laravel
  • Знайти в кореневому каталозі файл .env (якщо такого файлу немає, перейменуйте присутній файл .env.example в .env) та відкрийте його за допомогою будь-якого текстового редактора
  • Файл .env являє собою перелік основних налаштувань вашого проекту. Для налаштування підключення до бази даних, нас цікавитиме виключно наступне:
    DB_CONNECTION=mysql //тип підключення до БД
    DB_HOST=127.0.0.1 // хост БД
    DB_PORT=3306 // порт для підключення БД
    DB_DATABASE=homestead //назва БД 
    DB_USERNAME=homestead // користувач БД 
    DB_PASSWORD=secret // пароль від БД 
    

Результат

Якщо ви успішно пройшли всі вищезазначені кроки, необіхнідні для встановлення PHP-фреймворку Laravel, в результаті, на своєму сайті ви побачите наступне:

Успіхів вам у розгортанні ваших проектів, та нехай береже вас Git :)

Корисні посилання

Расскажите нам о своем проекте!