Развернуть laravel 11 (включая inertia и vue) на общем хостинге

этот проект laravel работает без сбоев на локальном компьютере, но я не могу понять, как запустить его на сервере, я пробовал много трюков, ничего не помогло

Я загрузил весь проект в корень (каталог над public_html) в папку с именем laravel, я сделал все, что касается базы данных и .env.

затем я переместил содержимое общедоступной папки в каталог public_html и установил путь внутри index.php __DIR__.'/../laravel/vendor/autoload.php';, а также путь к начальной загрузке и хранилищу.

сервер работает на liteSpeed, вот коды .httaccess

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
</IfModule>


RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

index.php

<?php

use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

// Determine if the application is in maintenance mode...
if (file_exists($maintenance = __DIR__.'/../laravel/storage/framework/maintenance.php')) {
    require $maintenance;
}

// Register the Composer autoloader...
require __DIR__.'/../laravel/vendor/autoload.php'; // bootstrap folder of laravel is ther

// Bootstrap Laravel and handle the request...
(require_once __DIR__.'/../laravel/bootstrap/app.php')
    ->handleRequest(Request::capture())

;

но я все равно получаю HTTP ERROR 500 на веб-странице, и siteurl/public автоматически добавляется к URL(/public)!

и внутри cPanel в текстовом файле с именем error_log я получаю

[15-Jun-2024 15:14:17 UTC] PHP Warning:  require(/home/klassir2/public_html/../laravel/vendor/autoload.php): Failed to open stream: No such file or directory in /home/klassir2/public_html/index.php on line 13

Кто-нибудь успешно развернул laravel11 с inertia.js на общем хостинге?

Спасибо

Беги composer install.

Subha 15.06.2024 20:42

спасибо @subha, в моей панели управления нет доступа к терминалу

Ramin Safari 15.06.2024 20:54

поделитесь своим index.php и его местоположением

cantdocpp 16.06.2024 07:33

@cantdocpp спасибо за ответ, вопрос обновлен

Ramin Safari 16.06.2024 10:08

вы пытались запустить composer install перед загрузкой в ​​cpanel? Помните, что вам нужно запустить composer install перед загрузкой приложения на панель, потому что в CPANEL нет композитора.

cantdocpp 16.06.2024 10:11

@cantdocpp спасибо, я сделаю это как можно скорее, есть еще что-нибудь сделать? все остальное, что я упомянул, в порядке?

Ramin Safari 16.06.2024 10:55

Если вы используете inertia с vue, вам также придется запустить npm run build перед загрузкой приложения в CPANEL. Шаги будут следующими: запустите composer install -> запустите npm run build -> удалите папку node_modules -> загрузите приложение на панель, используя тот же каталог, который вы использовали ранее в своем вопросе.

cantdocpp 16.06.2024 10:57

Дай мне знать, добился ты успеха или нет. Также помните, что вам не нужно ничего делать с файлом .htaccess.

cantdocpp 16.06.2024 10:58

@cantdocpp, я получаю эту ошибку: Манифест Vite не найден по адресу: /home/klassir2/laravel/public/build/manifest.json. Запустите npm run dev в своем терминале и обновите страницу. но у меня нет доступа к терминалу

Ramin Safari 16.06.2024 15:02

вы запускали npm run build перед загрузкой в ​​cpanel? Если да, то переместите СОДЕРЖИМОЕ ПАПКИ public в папку public_html в CPANEL. Итак, в вашем приложении теперь есть две общедоступные папки: внутри вашей laravel/public и внутри вашей public_html папки.

cantdocpp 16.06.2024 17:15

@спасибо чувак, ты дал мне подсказку, я сделал это без использования терминала, большое тебе спасибо

Ramin Safari 16.06.2024 19:20

старый ответ. оно должно быть действительным. stackoverflow.com/a/59116784/6802917

Garry 16.06.2024 20:02

@cantdocpp, просто скопируй текст и изображения моего поста, я удалю свой, ты его опубликуй

Ramin Safari 16.06.2024 20:14

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

cantdocpp 16.06.2024 21:06

@cantdocpp, спасибо, друг, желаю тебе удачи

Ramin Safari 16.06.2024 21:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
15
281
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот процесс одинаков для развертывания всех приложений Laravel, независимо от того, находится ли оно в cpanel, cyberpanel или hpanel. Но с inertia вам просто нужно собрать и связать интерфейс перед развертыванием.

Все, что вам нужно сделать, это выполнить этот шаг один за другим (последовательно),

  1. создайте и свяжите свой интерфейс, выполнив команду npm run build
  2. Установите зависимости PHP, запустив composer install
  3. Удалите папку node_modules

После последовательного выполнения всех вышеперечисленных шагов вы можете заархивировать свой проект laravel в корневом каталоге (не внутри общедоступного html), создать папку с именем laravel, загрузить и разархивировать его туда.

переместите содержимое общедоступного каталога в public_html (но не удаляйте пустую общедоступную папку, которая находится внутри папки laravel)

затем создайте свою базу данных, ее пользователя и пароль, импортируйте свою базу данных в phpmyadmin, затем обновите .env.

если вы используете MySQL, вы можете отредактировать файл .env, указав информацию о вашей базе данных:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE = "mydatabase"
DB_USERNAME = "user"
DB_PASSWORD = "password"

затем обновите index.php внутри каталога public_html, ссылаясь на загруженную вами папку проекта laravel, например:

    if (file_exists($maintenance = __DIR__.'/../laravel/storage/framework/maintenance.php')) {
    require $maintenance;
}

    // refering to that specific folder
    require __DIR__.'/../laravel/vendor/autoload.php';

    (require_once __DIR__.'/../laravel/bootstrap/app.php')

Теперь, если вы введете адрес своего сайта в браузере, вы получите vite manifest not found at: просто скопируйте папку сборки из каталога public_html в общую папку каталога laravel (вы там разархивировали), просто сохраните файл манифеста.json

ты сделал это!

Спасибо автору этого вопроса @ramin safari за то, что он был активным и отзывчивым автором и уделил время созданию основы этого руководства (все, что мне нужно сделать, это отредактировать его руководство). Просто в надежде, что оба наших усилия смогут направить других в будущее.

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

Ramin Safari 16.06.2024 21:59

Вам не нужна папка node_modules после запуска сборки npm run. Если вы мне не верите, вы можете проверить это на своем локальном компьютере. Просто запустите npm run build и удалите папку node_modules. И убедитесь, что ваше приложение все еще работает. Вот почему я всегда рекомендую удалить node_modules, потому что он тяжелый и замедляет развертывание.

cantdocpp 17.06.2024 07:05

Другие вопросы по теме