5 способов развернуть Laravel без перемещения публичного каталога

При развертывании приложения Laravel обычно содержимое каталога publicперемещается в корень веб-сервера. Однако в некоторых сценариях вам может потребоваться развернуть приложение без перемещения каталога public. В этой статье мы рассмотрим пять различных способов добиться этого.

Метод 1: перезапись URL-адресов
Перезапись URL-адресов — это метод, который позволяет перезаписывать входящие URL-адреса в разные места на сервере. Настроив правила перезаписи URL-адресов, вы можете направлять все входящие запросы в каталог publicбез его физического перемещения. Вот пример файла Apache .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L]

Метод 2: символическая ссылка
В этом методе вы создаете символическую ссылку из корня веб-сервера в каталог public. Таким образом, веб-сервер обслуживает приложение Laravel непосредственно из каталога public. Вот пример создания символической ссылки с помощью команды ln:

ln -s /path/to/laravel/public /path/to/web/server/root

Метод 3: настройка поддомена
Настроив поддомен, вы можете указать его непосредственно на каталог publicвашего приложения Laravel. Это позволяет вам получить доступ к вашему приложению, используя отдельный домен или поддомен. Вот пример конфигурации виртуального хоста Apache:

<VirtualHost *:80>
    ServerName laravel.example.com
    DocumentRoot /path/to/laravel/public
</VirtualHost>

Метод 4: Прокси-сервер веб-сервера
С помощью этого метода вы настраиваете прокси-сервер веб-сервера для пересылки запросов в каталог public. Веб-сервер действует как посредник между клиентом и приложением Laravel. Вот пример конфигурации Nginx:

location / {
    proxy_pass http://localhost:8000;
}
location /public {
    alias /path/to/laravel/public;
}

Метод 5: контейнеризация Docker
Если вы используете Docker для развертывания, вы можете создать контейнер Docker с приложением Laravel внутри него. Настроив контейнер на предоставление необходимых портов, вы сможете получить доступ к приложению, не перемещая каталог public. Вот пример Dockerfile:

FROM php:7.4-apache
COPY . /var/www/html
EXPOSE 80

Развернуть приложение Laravel без перемещения каталога publicможно различными способами. Вы можете выбрать метод, который лучше всего соответствует вашей среде и требованиям развертывания. Будь то перезапись URL-адресов, символические ссылки, поддомены, прокси-серверы веб-серверов или контейнеризация Docker, эти методы позволяют сохранить каталог publicнетронутым, одновременно эффективно обслуживая ваше приложение Laravel.