Статьи

Laravel настройка і запуск під Apache, Nginx, OpenServer

  1. У чому буде полягати настройка Laravel
  2. Установка Laravel на OpenServer
  3. Налаштування Laravel проекту на різних веб-серверах
  4. Налаштування Laravel для Apache
  5. Налаштування Laravel проекту на Nginx сервері
  6. Налаштування локалей і з'єднань з БД в Laravel

Всім Хеллоу 🙂   Ми продовжуємо цикл публікацій, присвячених самостійному створенню сайтів на Laravel 5 Всім Хеллоу 🙂

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

Сьогодні ж ми поговоримо про те, як налаштувати Laravel для запуску реальних проектів на його базі.

Чи не розумієте, про яку налаштування йде мова? Тоді просто спробуйте запустити Laravel в браузері після його установки - думаю, що всі питання відпадуть самі собою 🙂

А про те, як виправити цю ситуацію - читайте далі.

У чому буде полягати настройка Laravel

Ну, ось ми і зробили установку Laravel . Тепер, здавалося б, залишається радіти життю і починати роботу над реальними проектами ... Але, не тут-то було 🙂

Файлова структура Laravel має одну дратівливою для новачків особливістю - файл index.php, який розпізнається web-серверами як точка входу на сайт, розташований не в корені проекту, а в папці «public».

Тому після установки Laravel на ваш веб-сервер і введення в браузері доменного імені сайту замість очікуваної стартової сторінки ви побачите тільки список файлів.

Сайт, звичайно, можна запустити, якщо вбити URL сайту в форматі «http: //localhost/laravel.corp/public», але ви тільки подивіться на цю адресу ... Скільки букв, а це всього лише адреса кореня сайту 🙂

Працювати з такою простирадлом в майбутньому буде вкрай незручно і ні про яке ЧПУ навіть і думати не доводиться.

Для того, щоб повідомити сервер, що точка входу знаходиться не в корені сайту, а в його директорії public, нам необхідно або змінити налаштування самого сервера, або, якщо ви використовуєте Web-сервер Apache, відредагувати файл .htaccess.

А ще, крім чистих веб-серверів існують різні збірки ПЗ для комфортної роботи веб розробників. Вони називаються LAMP, WAMP, MAMP, XAMP.

Перша буква даних абревіатур означає ОС, на якій збірка буде працювати (Linux, Windows, MacOS, X- будь-яка). А останні три - це великі літери основних програм для створення сайтів , Що входять в дистрибутив (Apache, MySQL, PHP).

Про себе можу сказати, що я фанат таких рішень і користуюся ними практично з самого початку своєї професійної кар'єри веб-розробника.

І, хоча, сьогодні активно застосовуються і інші засоби для швидкого старту веб проектів - віртуалізатор і віртуальні середовища розробки, про які я згадував у попередній статті про установку Laravel, я все так само є прихильником використання * AMP збірок.

Сам я веду розробку під ОС Windows і користуюся WAMP-складанням OpenServer, про що вже неодноразово говорив в статтях на даному блозі.

До речі, продукт, незважаючи на свої можливості, безкоштовний і розвивається виключно силами його творця. Тому настійно рекомендую вам також спробувати OpenServer, якщо ви ще не користуєтеся їм, і допомогти проекту , Якщо він вас вразив.

Ну, а оскільки я почав розповідати про OpenServer, то і настройку Laravel для повноцінного запуску проектів почну на його прикладі.

Установка Laravel на OpenServer

Перш за все, хочу сказати, що використання OpenServer значно спрощує запуск Laravel проектів, тому що вам не потрібно робити ніяких маніпуляцій в консолі і витрачати свій час на додаткові налаштування серверного ПЗ, необхідні для коректної взаємодії один з одним.

Для всього цього в OpenServer є вже все необхідне. Потрібно тільки знати, де і що клацати 🙂

Отже, після установки OpenServer і його запуску нам потрібно налаштувати Laravel для запуску проекту по прямому запитом до його доменному імені, а не до папки public.

Перед цим дією передбачається, що Laravel ви вже встановили і розмістили його файли в папці domains на OpenServer, яка призначена саме для майбутніх сайтів, що запускаються за допомогою сервера. У моєму прикладі Laravel знаходиться по шляху «C: \ openserver \ domains \ localhost \ laravel.corp».

Запустити в браузері я його зараз можу тільки надіславши запит на URL «http: //localhost/laravel.corp/public», що вкрай незручно. Отже, щоб позбутися від цієї неприємності, насамперед нам потрібно зайти в налаштування OpenServer, що можна зробити в такий спосіб:

Отже, щоб позбутися від цієї неприємності, насамперед нам потрібно зайти в налаштування OpenServer, що можна зробити в такий спосіб:

У вікні, переходимо на вкладку «Домени» і в списку «Управління доменами» вибираємо пункт «Ручне управління» або «Ручне + Автопошук», щоб можна було ставити своїм проектам довільні доменні імена.

Як приклад я використовував перший варіант, але все ж рекомендую останній, тому що він дозволяє як додавати довільні доменні імена, так і запускати проекти з папки «openserver / domains», звертаючись до них за їх назвами каталогів.

При ручному управлінні ви зможете запускати тільки ті сайти, доменні імена яких будуть прописані на сервері з посиланнями на відповідні папки:

При ручному управлінні ви зможете запускати тільки ті сайти, доменні імена яких будуть прописані на сервері з посиланнями на відповідні папки:

Отже, для додавання нового домену пропишіть його ім'я в поле «Ім'я домену», а в полі «Папка домену» виберіть каталог з файлами сайту. Після цього не забудьте натиснути кнопку «Додати», а потім «Зберегти», після чого сервер увімкнеться знову.

До речі! При цьому варіанті додавання нових сайтів на сервер файли ресурсу можуть бути розташовані в будь-якому місці, не обов'язково в «openserver / domains».

Якщо ви все зробили правильно, то при введенні в браузері доменного імені (laravel.portfolio в моєму випадку), яке ви додали, ви побачите стандартну сторінку вітання Laravel:

portfolio в моєму випадку), яке ви додали, ви побачите стандартну сторінку вітання Laravel:

Вітаю, на цьому установка Laravel на OpenServer підійшла до кінця. Сайт запрацював, причому тепер зникла необхідність звертатися до папки public!

Перш за все, хотів би порекомендувати вам зробити бекап робочого сайту на випадок, що ви щось зробите неправильно і знадобиться швидко повернутися до вихідної точки.

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

Також не зайвим буде зробити Git репозиторій для зберігання списку змін і швидкого їх відновлення в майбутньому.

Якщо ви працюєте самостійно (я маю на увазі, не в офісі) і у вас немає власного Git сервера , То можете розгорнути його на своїй робочій машині, зробивши в окремій директорії bare-репозиторій, або залити зміни на GitHub (думаю, що для ваших локальних цілей цілком вистачить публічного сховища, тому що приватний платний).

Як бачите, сайт на Laravel з коробки виглядає так собі 🙂 Загалом-то, сторінку вітання назвати сайтом можна при наявності певної частки сміливості і фантазії.

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

У той час, як фреймворк лише дає можливість такої побудувати

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

А ми з вами почнемо займатися безпосередньо розробкою вже в наступній статті, де я покажу вам, як «натягнути» чистий HTML-шаблон на фреймворк, на базі якого ми надалі створимо повнофункціональний сайт-візитку з адмінкой і можливістю ведення блогу.

Тому підписуйтесь на оновлення проекту, щоб не пропустити найцікавіше 🙂

Отже, для фанатів Windows і OpenServer ми Laravel налаштували. А як же бути тим, хто користується Linux-дистрибутивами або MacOS, на яких OpenServer не працює?

Колись переді мною стояла подібна задача - налаштувати Laravel на Ubuntu сервері.

На stackoverflow.com яких тільки способів я не знаходив ... аж до зміни файлової структури самого Laravel проекту (спосіб хоч і робочий, але не рекомендую ним користуватися, щоб у інших розробників, побачивши «цього творіння» не вставали дибки волосся) 🙂

Як же бути?

Гідним уваги є налагодження віртуальних хостів, коренем яких буде папка public вашого Laravel проекту (по суті, це ми і зробили під час запуску Laravel на OpenServer). Але, цей варіант підійде тільки для локального використання і на виділених серверах.

При використанні shared-хостингів, якими сьогодні користуються власники більшості дрібних проектів, такий варіант буде складно реалізувати, тому краще і простіше буде повідомляти сервера правила запуску сайту безпосередньо.

Розглянемо дані операції для різних веб-серверів.

Налаштування Laravel проекту на різних веб-серверах

Оскільки найпоширенішими програмними веб серверами на сьогодні є Nginx і Apache, то розгляну даний процес для них.

Налаштування Laravel для Apache

Для Apache настройка Laravel може бути проведена двома способами, кожен з яких ми детально розглянемо:

Спосіб 1.

Він полягатиме в налаштуванні Laravel у вигляді віртуального хоста. Найкраще для цього скористатися консольним режимом (по крайней мере, так поступаю особисто я) і буде виглядати наступним чином:

1. Переходимо в папку віртуальних хостів Apache: apache2 / sites - available

2. Якщо ви ще не створювали віртуальні хости, то в цій папці у вас буде всього лише один файл default. Відкрийте його для редагування або скопіюйте і перейменуйте його в назву вашого майбутнього сайту. Наприклад, laravelsite.local.

3. Всередині файлу прописуємо наступні настройки:

<VirtualHost *: 80> ServerName laravelsite.local DocumentRoot "path_to_site / myapp / public" <Directory "path_to_site / myapp / public"> AllowOverride all </ Directory> </ VirtualHost>

4. Якщо ви створювали новий файл в sites-available, то для активації віртуального хоста потрібно буде зробити посилання на файл з apache2 / sites - available в apache2 / sites -enabled (в Unix-подібних системах це робиться за допомогою команди ln). Якщо ви редагували існуючий файл default, то дані дії будуть зайвими.

5. Перезапускаємо Apache.

Ось і все, після запуску Apache сайт буде доступний за адресою http: //laravelsite.local/. Якщо щось піде не так, то шукайте текст помилки в логах Apache.

Спосіб 2.

Благо, що Apache надає ще один, більш простий спосіб налаштування кореня Laravel сайту на директорію public за допомогою директив у файлі .htaccess, розміщеному в корені проекту. Я сам активно користуюся даними способом при розгортанні Laravel сайтів на shared хостингах, тому що він максимально простий і швидкий - досить одного разу підготувати відповідний файл - і вперед 🙂

Код його повинен бути наступним:

DirectoryIndex /public/index.php RewriteEngine On RewriteCond% {REQUEST_FILENAME} -f RewriteRule ^ (. +) $ 1 [L] RewriteCond% {DOCUMENT_ROOT} / public% {REQUEST_URI} -f RewriteRule ^ (. +) / Public / $ 1 [ L] Options + SymLinksIfOwnerMatch RewriteRule ^ (. *) $ / public / [QSA, L]

Цей потрібно розмістити в папці з Laravel в .htaccess, який знаходиться в корені самого проекту. Той .htaccess, який лежить в директорії public, чіпати не потрібно!

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

Налаштування Laravel проекту на Nginx сервері

Отже, для настройки Laravel для Nginx, на жаль, немає такого достатку різних способів, як для Apache. По крайней мере, я знаю тільки один у вигляді налаштувань Laravel проекту у вигляді віртуального хоста.

Якщо ви знаєте більше, щось не відмовчуватися і поділіться ними в коментарях зі мною і всіма іншими 🙂

У випадку з Nginx для настройки віртуальних хостів потрібно зробити дії, аналогічні у випадку з Apache:

1. Переходимо в папку віртуальних хостів Nginx: nginx / sites - available.

2. Зробити файл нового віртуального хоста або відредагувати існуючий default.

3. Всередині файлу прописуємо наступні настройки:

server {listen 80 default_server; listen [::]: 80 default_server ipv6only = on; root path_to_app / myapp / public; index index.php index.html index.htm; server_name server_domain_or_IP; location / {try_files $ uri $ uri / /index.php?$query_string; } Location ~ \ .php $ {try_files $ uri /index.php = 404; fastcgi_split_path_info ^ (. + \. php) (/.+) $; fastcgi_pass unix: /var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; include fastcgi_params; }}

Врахуйте, що останній блок коду - це налаштування PHP для запуску сайту: шлях до інтерпретатора, модулі, розширення файлів і т.д. Якщо з даними настройками сайт не запрацює, то відредагуйте їх у відповідності зі своєю конфігурацією сервера. Докладний текст помилок шукайте в логах Nginx.

4. Якщо створювали новий віртуальний хост, то активуємо його створенням посилання на файл з настройками з папки sites-available в sites-enabled. Якщо новий хост ви не створювали, а редагували існуючий, то цей крок пропускаємо.

5. Перезапускаємо Nginx.

Отже, після даних дій, при введенні в веб браузері адреси сайту (в моєму прикладі він буде http: //laravelsite.local/) ви побачите не список файлів, як раніше, а очікувану сторінку вітання Laravel.

Якщо цього не відбулося, то шукайте відповіді на питанні в логах вашого веб-сервера (Nginx або Apache, відповідно). Швидше за все, вони будуть викликані невірними правами на різні папки (як проекту в цілому, так і на окремі внутрішні каталоги). В такому випадку все, що вам потрібно, це встановити їх в 755 або 644 🙂

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

Налаштування локалей і з'єднань з БД в Laravel

Тепер можна приступити безпосередньо до розробки.

Писати робочий код ми почнемо в наступному публікації, а в рамках сьогоднішньої просто налаштуємо робоче оточення, задавши всі необхідні настройки.

Оскільки в подальшому я планую продемонструвати створення сайту-візитки з можливістю ведення блогу, то нам необхідно буде створити базу даний сайту (БД) для зберігання в ній тексту і назви постів блогу.

При написанні статей на даному блозі я неодноразово описував процес створення БД через програму phpMyAdmin, яка надає веб-інтерфейс для роботи з базами, наявними на сервері.

Тому я не горю бажанням в сотий раз описувати цей процес. Якщо ви не в курсі, як це зробити, то ви можете знайти дану інформацію в статті, присвяченій створення блогу на WordPress , Наприклад.

Також можете використовувати інші інтерфейси, аж до консольного варіанту. Тут вже кому що подобається ...

Отже, припустимо, що базу ви створили. Тепер саме час налаштувати з'єднання в самому фреймворку.

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

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

Тут, як ви бачите, містяться конфіги для різних речей: сесій, кешування, файлової системи, авторизації і т.д. Крім усього іншого, тут присутній і конфіг з настройками, необхідними для взаємодії з БД.

До речі! Налаштування встановлюються сторонніх розширень (пакетів) ви зможете знайти в цьому ж каталозі після їх установки і публікації конфігов. Правда, не завжди. Деякі розробники вважають за краще зберігати їх разом з іншими файлами пакета в папці vendor.

Я не буду його тут наводити повністю, тому що ви завжди можете самі його відкрити і подивитися. І описувати, за що відповідає кожна окрема опція, теж сенсу не бачу, тому що кожна з них відмінно продокументірована творцями Laravel.

Єдине, на що я хочу звернути вашу увагу, так це на постійне використання всередині конфігов функції env ():

'Default' => env ( 'DB_CONNECTION', 'mysql'),

Ось з цього приводу хотілося б внести деякі коментарі.

Функція env () в Laravel є переробленим варіантом getenv (), що є частиною PHP бібліотеки DotEnv від Vance Lucas, яка використовується в складі Laravel.

Дана бібліотека дозволяє створювати файл з переліком змінних робочого оточення - .env в корені проекту, змінні з яких стають глобально доступними завдяки функції getenv (env для Laravel) і з суперглобальних масивів $ _ENV і $ _SERVER.

Причому, як ви бачите в прикладі вище, дана функція приймає два параметри:

  1. Ім'я змінної оточення;
  2. Значення, яке буде використовуватися, якщо змінна не буде знайдена.

Виникає питання: «Що за оточення таке?». Мається на увазі набір налаштувань проекту, актуальні для окремих розробників, тобто що зберігаються на його робочому комп'ютері.

Це і з'єднання з БД і, можливо, навіть окремі драйвери кешування, зберігання сесій і т.д., які розробник прописує у себе, піднімаючи локальну копію проекту.

Природно, що ім'я локальної БД, наприклад, може (а швидше за все, так і буде) не збігатися з основною.

Так ось, щоб не міняти кожен раз значення глобальних змінних після заливки файлів в загальний репозиторій або на сервер, ці змінні зберігаються в спеціальному файлі локального оточення, який автоматично додається в .gitignore і недоступний до перегляду в деяких файлових системах і програмах (наприклад, в SSH клієнта WinSCP при базових настройках його не видно).

Всі ці заходи проведені з метою зменшити кількість спокус залити свої локальні настройки в загальний котел, що призведе до плутанини і краху проекту в продакшені (основна версія проекту, якою користуються кінцеві користувачі).

До чого я все це? Та до того, що краще нам свої настройки зберігати в файлі .env. Поки ви працюєте одні над проектом, для вас, природно, немає ніякої різниці - в .env чи будуть зберігатися настройки або в спеціалізованих конфігах.

Але ось, як тільки до роботи над проектом долучатися нові розробники, доцільність даного підходу стане очевидною.

До речі, в .env ви можете вносити свої довільні змінні, які хочете зробити глобальними, і отримувати доступ до них за допомогою функції env (), вказуючи ім'я змінної в якості параметра таким чином, яким вона використовується в існуючих конфігах.

Отже, відкриваємо файл .env і шукаємо наступний блок змінних, що відповідає за налаштування з'єднання з базою даних:

DB_CONNECTION = mysql DB_HOST = 127.0.0.1 DB_PORT = 3306 DB_DATABASE = homestead DB_USERNAME = homestead DB_PASSWORD = secret

До речі! Якщо ви встановлювали Laravel НЕ через Composer, а, наприклад, вручну, шляхом скачування з GitHub, то файлу .env у вас не буде. Замість нього ви знайдете файл .env.example, який потрібно буде скопіювати і перейменувати в .env вручну.

Нескладно здогадатися, що перша змінна відповідає за СУБД, якій ви будете користуватися, далі йде ім'я (IP) сервера БД, порт для з'єднання, ім'я БД, а також логін користувача БД і пароль для авторизації.

У моєму випадку я назвав БД laravel_corp. Користувач БД у мене стандартний - root, пароль порожній. СУБД використовую MySQL і сервер у мене розташований на локальному ПК.

Отже, мій конфіг прийняв такий вигляд:

DB_CONNECTION = mysql DB_HOST = 127.0.0.1 DB_PORT = 3306 DB_DATABASE = laravel_corp DB_USERNAME = root DB_PASSWORD =

Думаю, що за моїм прикладом вам нескладно буде ввести свої налаштування.

Ще одна річ, яку вам може знадобитися змінити в дефолтних настройках Laravel - це настройка локалі і часу. Де це може стати в нагоді?

Локаль - це мова за замовчуванням. Отже, якщо у вас сайт буде багатомовний, то контент на даному мовою буде по умолчнію.

А настройка часу (часового поясу) нам потрібна для коректного зберігання даних, що стосуються часу (створення запису в БД, її оновлення і т.д.). Особисто мені некоректне значення даного параметра дуже сильно зіпсувало нерви одного разу, коли я не міг ніяк зрозуміти, чому у повідомлення в чаті, яке я тільки що відправив, час створення вказувалося на годину менше. А виною всьому був один-єдиний параметр 🙂

Тому раджу вам відразу розставити всі крапки над «і» і встановити цим каверзним змінним потрібні значення спочатку, щоб не ламати потім голову, чому щось йде не так, як вам хочеться.

Отже, обидві змінні знаходяться в одному файлі - config / app.php. Відкриваємо його і шукаємо наступний блок:

'Timezone' => 'UTC', 'locale' => 'en',

У моєму випадку значення у них були 'Europe / Kiev' / 'ru'. Тут хочеться зробити невелике уточнення з приводу часового поясу.

Спочатку, побачивши значення «UTC», мені захотілося використовувати запис в форматі UTC + 2, але дана змінна приймає в якості значення PHP timezones , Потрібну з яких ви можете знайти за вказаним URL.

Ну ось, власне кажучи, і все, що я хотів вам сьогодні сказати. В ході публікації ми з вами зробили комплексну настройку Laravel, починаючи з запуску проекту на веб-серверах Apache, Nginx і WAMP-збірці OpenServer, і закінчуючи налаштуванням глобальних змінних, необхідних для з'єднання з БД і коректної роботи сайту в цілому.

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

Також не забувайте користуватися соціальними кнопками під статтею.

На цьому у мене все. До швидких зустрічей 🙂

Чи не розумієте, про яку налаштування йде мова?
А як же бути тим, хто користується Linux-дистрибутивами або MacOS, на яких OpenServer не працює?
Php?
Виникає питання: «Що за оточення таке?
До чого я все це?
Де це може стати в нагоді?

Новости