Как установить laravel на хостинг
Перейти к содержимому

Как установить laravel на хостинг

  • автор:

How to host a Laravel app on a cPanel shared hosting

Not every client wants to spend hundreds of dollars to host their Laravel application especially in the initial phases. In this post I describe the steps I take to deploy a Laravel application in a cPanel shared hosting from start to finish.

The only prerequisite is a cPanel hosting package with SSH access.

Create a new app

On your development machine, create a new Laravel named “project” (I always use project to have consistency between applications):

Как установить Laravel на обычный хостинг-сервер?

Не нужен. Композер — это менеджер пакетов, который разгружает файлы в папку «vendor», а так же обновляет их там и т.д. Нет никакой проблемы закачать их «руками», в конечном виде, на хостинг.

Максимум, что может понадобиться — это наличие сервера Apache (коий есть примерно у 95% хостеров), что бы переопределить корневую директорию проекта.

Весь мануал будет удивительно краток:
1. Загружаете все файлы на хост («как есть»)
2. Создаёте в корешке хоста файл .htaccess вот с таким содержимым:

  • Facebook
  • Вконтакте
  • Twitter

OnYourLips: вообще, примерно у 30% хостеров есть SSH (и там можно в т.ч. попробовать запустить и композер и миграции и пр., но это немного выходит за рамки изначального вопроса). И, это не обязательно, можно напрямую залить базу, через phpMyAdmin, через PHP-скрипт или через любое другое соединение с БД. Или выполнить соотв. запрос, модифицирующий БД нужным образом.

Мы например, миграции в том виде, в котором они есть в Laravel, не используем вообще, за исключением крайне редких случаев, когда нужно где-то сохранить эдакий примитивный «сниппет» вместе с куском структуры данных, принадлежащих персонально ему (например, «новости» [просто «новости», без каких либо доп. механизмов]). В остальных случаях, миграции не только не могут обеспечить сохранение целостности (сохранности) данных, в т.ч. при «откатах», они не имеют даже возможности, создавать такие примитивные вещи, как например, триггеры на уровне MySQL, не говоря уже о каких-то более «глубоких» вещах, свойственных более полноценным БД (например, PostgreSQL). То есть, они даже из типов полей — имеют в своём наборе только базовые типы, не говоря уже про разные параметры (вроде «статистики», или «выражений для смены типа»). По сему, миграции в ряде случаев (в нашем варианте, примерно в 99%), миграции, по природе своей — бесполезны.

большинство случаев, к сожалению, не страхует от одного случая, который не попадает в это большинство, и из-за которого может рухнуть весь проект.

даже в «лабораторных условиях» и при идеальном раскладе — это не решает проблему примитивизма самих миграций. Теоретическая возможность отката не делает их менее примитивными, не добавляет им все возможные типы данных, которые есть в БД и всего остального. А невозможность выполнить одну любую операцию в производственном цикле, говорит о не ликвидности всей системы. То есть, «пациент либо жив, либо мёртв», вариант «пациент жив на 90%», к сожалению, невозможен. Так же как компьютер, не может работать в отсутствии одного из ключевых компонентов.

При неправильном подходе, даже использование фреймворка слишком дорого обходиться. И есть ряд случаев, когда его использование просто невозможно. Я уже не говорю, про CMS. Есть случаи, когда даже использование JOIN’ов слишком дорого обходится. Но это не повод, перестать использовать JOIN’ы.

Всё зависит от того, что мы хотим получить на выходе. Если у нас стоит цель разработки и поддержки проекта в 1.5 человека, размещаемого на хостинге за 1-2$/мес., где кроме MySQL ничего нет, и сам MySQL настолько ограничен, что кроме создания таблиц — мы ничего не можем создавать кроме простых таблиц (даже View, т.к. это требует доп. привилегий пользователя) — то да, стоимость хостинга проекта на VPS (где мы сможем полноценно использовать хотя бы MySQL), может увеличить в 5-10 раз (до 5-10$/мес.). В этом раскладе в принципе, даже миграции в том виде, в каком они есть в Laravel — выглядят порой довольно привлекательно.

Если же говорить, исключительно о качестве конечного продукта и скорости его работы, предполагая, что мы можем использовать базу на 100%, и даже с учётом того, что базу будет использовать исключительно одно приложение — построение логики работы БД на уровне самой БД — может дать прирост производительности порой в 10-50 раз, за счёт сокращения накладных расходов, возможности использования внутренних механизмов БД. В том числе, планировщик запроса самостоятельно может оценить, какая операция будет менее затратной при использовании того или иного механизма, при получении/обработке данных, в т.ч. используя уже имеющиеся данные/параметры из самой БД. И даже если говорить, о примитивном триггере — триггер реализованный на уровне БД будет много быстрее, чем полная реализация этого же триггера, на уровне PHP-клиента. Хотя бы по тому, что сам механизм триггеров из БД никто не вырезал, и проверка наличия триггеров будет вызываться в любом случае. и было бы крайне странно, если бы запрос на уровне БД, сгенерированный самой БД, не проходящий все этапы парсинга, преобразования и т.д. — работал бы медленнее, чем аналогичный запрос, посланный с клиента и проходящий все эти этапы. Наличие обратного эффекта, говорит как правило, либо о низкой квалификации администратора БД (т.к. он просто не знает, как нужно строить логику на уровне БД правильно), либо о довольно странной реализации движка БД, в котором внутренние механизмы самого же движка, работают медленее, чем аналогичные механизмы написанные на клиенте (с учётом того, что база у нас обычно написана на С/С++, а клиент на PHP в данном случае и с учётом того, что клиент опять же, генерирует запросы к самой БД, а не вмешивается в её файловую систему или внутренние механизмы на низком уровне), либо, о совокупности обоих этих факторов.

Установка Laravel

Laravel — бесплатный PHP-фреймворк с открытым кодом, предназначенный для разработки с использованием архитектурной модели MVC ( M odel V iew C ontroller). В данной статье мы расскажем, как с лёгкостью установить данный фреймворк у нас на хостинге.

Алгоритм по установке Laravel

Шаг 1 После создания технического домена (для примера мы создали laravel-test.com), переходим в раздел Файловый менеджер через и создаём новый файл .bash_profile в корне аккаунта (hostXXXXXXX/.bash_profile), в который вставим директивы:

После внесения данных параметров в файл .bash_profile необходимо перезапустить сессию ssh, то есть переподключиться.

Если Вы планируете использовать другую версию php, полный список интерпретаторов приведен здесь — просто замените php-7.1 на любую другую из списка. Желательно использовать версию не ниже 7.1

После сохранения файла, переходим в раздел SSH и нажимаем Открыть SSH клиент (доступен только для оплаченных аккаунтов).

Шаг 2 Самый расппространённый способ установки Laravel — использование менеджера пакетов Composer. Мы им и воспользуемся:

Шаг 3 Только что мы установили Composer в корень своего аккаунта. Скачаем загрузчик Laravel:

Готово. Переходим в директорию нашего будущего проекта:

Шаг 4 Следующей командой создаём свежую установку Laravel в директории с произвольным именем (в дальнейшем, оно нам не понадобится):

Laravel подгрузил все необходимые зависимости.

Шаг 5 Для корректной работы сайта, необходимо создать копию файла .env.example (он находится в корне только что созданной директории project), переименовать его просто в .env и сгенерировать рандомный ключ. Это можно сделать командой:

Он будет автоматически добавлен в файл .env

Также в данном файле можно задать значения для используемой базы данных (DB_DATABASE, DB_USERNAME и DB_PASSWORD), но это можно сделать и после.

Шаг 6 Теперь, копируем все файлы из директории

/laravel-test.com/htdocs/project и переносим их в

/laravel-test.com/htdocs/www. Так как по умолчанию приложение использует папку /public, то и чтобы открыть главную страницу Вашего сайта, пользователям нужно будет пройти по ссылке вида site.com/public. Чтобы этого избежать, зададим правила в .htaccess файле, предварительно создав его в

На этом установка завершена. Если всё сделано верно, то при открытии главной страницы сайта, Вы увидите стартовую страницу:

Стартовая страница Laravel

Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из раздел «Помощь и поддержка».

Laravel

Laravel — бесплатный фреймворк для разработки сайтов на PHP. Он содержит в себе набор шаблонов и функций, которые упрощают процесс разработки сайтов.

Laravel работает на PHP 8.0 или выше, лучше использовать PHP 8.2. Перед установкой измените версию веб-сервера для сайта в разделе «Сайты» → «Веб-серверы» Панели управления.

Фреймворк легко установить на ваш аккаунт с помощью SSH. Используйте менеджер пакетов Composer.

Установка Composer

Скачайте и соберите Composer:

]$ curl -sS https://getcomposer.org/installer | php80

Сделайте его исполняемым:

]$ chmod +x composer.phar

Создайте папку local/bin в домашней директории аккаунта и перенесите туда исполняемый файл:

Чтобы composer использовал нужную версию PHP, нужно добавить алиас в .bashrc:

Для того, чтобы изменения вступили в силу, нужно либо переподключиться по SSH, либо использовать команду:

Установка Laravel

Перейдите в каталог с вашими сайтами:

Удалите папку с доменом, на который планируется установка Laravel:

[username@server domains]$ rm -r domain.ru

Если в этой папке есть важные данные, её можно переименовать:

[username@server domains]$ mv domain.ru domain.ru_pre

Создайте проект на Laravel с именем вашего домена:

[username@server domain.ru]$ composer create-project laravel/laravel domain.ru

Дождитесь окончания процесса — в консоли отобразится сообщение:

Application ready! Build something amazing.

Фреймворк установлен. Настройте домен для работы с ним.

Создание символической ссылки

По умолчанию корневым каталогом сайта является папка public_html, однако Laravel работает с каталогом public. Чтобы сайт открывался из директории фреймворка, создайте символическую ссылку:

[username@server domains]$ ln -s /home/username/domains/domain.ru/public /home/username/domains/domain.ru/public_html

Перейдите на сайт. Если фреймворк работает корректно, вы увидите страницу:

Подключение Базы данных

Работать с фреймворком вы можете уже на этом этапе, но большинству проектов требуется база данных.

Создайте ее в разделе «Базы данных» Панели управления. Теперь подключите базу к фреймворку. Для этого откройте файл .env и укажите в нем ее данные: [username@server domain.ru]$ vim .env

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=username_db
DB_USERNAME=username_dbname
DB_PASSWORD=password
Здесь username_db — название базы данных, username_dbname — имя пользователя БД, password — его пароль. Для выхода из vim нажмите клавишу Esc и выполните команду :wq

При возникновении трудностей в процессе установки Laravel, напишите в службу поддержки — мы поможем разобраться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *