Все привет, меня зовут Павел Жуковский и сегодня я расскажу о том как быстро развернуть Laravel на Windows.
Как развернуть через Docker?
Запустить Laravel на Windows с помощью Docker достаточно легко. Вот есть официальная документация, а здесь подробная статья от @Helldar.
Как развернуть с помощью OSPanel (Open Server Panel)?
Скачиваем саму панель OSPanel и устанавливаем её.
В панели есть composer из коробки, поэтому предлагаю его и использовать. В контекстном меню программы выбираем "Консоль".
-
Далее в консоли переходим в папку domains (команда
cd domains
). -
Теперь устанавливаем фреймворк Laravel с помощью команды (где yourwebsite.com – это папка с вашим сайтом и это название можно менять)
composer create-project laravel/laravel yourwebsite.com
-
Если всё хорошо, то вы увидите, как скачивают пакеты и в итоге всё будет выглядеть вот так:
-
Теперь нужно настроить вашу панель OSPanel. Для этого идём к контекстное меню приложения и выбираем «Настройки».
Затем во вкладке «Модули» выбираем нужные модули. Для Laravel 10, например, можно выбрать Apache 2.4 + PHP 8.0-8.1, PHP 8.1. Базу данных и остальные модули пока не трогаем.
Сохраняем и перезагружаем приложение.
-
Теперь возвращаемся в настройки и идём во вкладку «Домены». Выставляем в «Управление доменами» вариант «Ручное + Автопоиск», ниже в поле «Имя домена» пишем свой домена (у меня в примере это
yourwebsite.com
), а правее в поле «Папка домена» выбираем нашу папку и внутри в ней папку public (мой путь в итоге получается\yourwebsite.com\public
). Обязательно жмём кнопку «Добавить», чтобы ваше выбранные данные перенеслись ниже. После этого опять сохраняем и перезагружаем приложение.
Настройка SSL в OSPanel (Open Server Panel)
Этот этап, пожалуй, самый сложный и требует внимания.
Напомню, что в модулях у нас выбрал Apache 2.4 + PHP 8.0-8.1 и PHP 8.1. Если у вас выбраны другие версии сервисов, то папки будут называться соответственно.
Идём в папку, где установлена панель и там заходим в папку
modules/http/Apache_2.4-PHP_8.0-8.1
, там создаём папкуssl
и заходим неё.Создать bat файл (например,
start.bat
) с содержимым:
@echo off
set OPENSSL_CONF=c:\OSPanel\modules\http\Apache_2.4-PHP_8.0-8.1\conf\openssl.cnf
c:\OSPanel\modules\http\Apache_2.4-PHP_8.0-8.1\bin\openssl req -x509 -sha256 -newkey rsa:2048 -nodes -days 5475 -keyout rootCA.key -out rootCA.crt -subj "/CN=OSPanel/"
c:\OSPanel\modules\http\Apache_2.4-PHP_8.0-8.1\bin\openssl req -newkey rsa:2048 -nodes -days 5475 -keyout server.key -out server.csr -subj "/CN=PhpStorm/"
c:\OSPanel\modules\http\Apache_2.4-PHP_8.0-8.1\bin\openssl x509 -req -sha256 -days 5475 -in server.csr -extfile config.txt -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt
где c:\OSPanel\ — это пусть к папке с панелью, Apache_2.4-PHP_8.0-8.1 – это папка с выбранное версий Apache.
Создать файл config.txt с содержимым:
nsComment = "OSPanel Generated Certificate"
basicConstraints = CA:false
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = yourwebsite.com
где yourwebsite.com – это адрес вашего тестового домена. Можно указывать несколько доменов, тогда запись будет такого вида
DNS.1 = yourwebsite.com
DNS.2 = yourwebsite2.com
DNS.3 = yourwebsite3.com
где yourwebsite.com – это адрес вашего тестового домена. Можно указывать несколько доменов, тогда запись будет такого вида
DNS.1 = yourwebsite.com
DNS.2 = yourwebsite2.com
DNS.3 = yourwebsite3.com
Запускаем файл start.bat и у вас должны сгенерироваться 5 файлов.
Теперь нужно указать папку, где будут лежать все файлы сертификатов. Открываем файл /userdata/config/Apache_2.4-PHP_8.0-8.1_vhost.conf
Находим строку
SSLCertificateFile "%sprogdir%/userdata/config/cert_files/server.crt"
SSLCertificateKeyFile "%sprogdir%/userdata/config/cert_files/server.key"
и меняем её на
SSLCertificateFile "%sprogdir%/domains/ssl/server.crt"
SSLCertificateKeyFile "%sprogdir%/domains/ssl/server.key"
Затем идём в папку domains и в неё создаём папку ssl. Туда копируем сгенерированные 5 файлов.
Теперь пришло время установке сертификатов. В папке с файлами запускаем файл rootCA, далее: Установить сертификат -> Текущий пользователь -> Поместить сертификат в следующее хранилище -> Обзор -> Доверенные коренные центры сертификации.
Теперь нажимаем Пуск и вводим «Управление сертификатами пользователей»
Там выбираем папку «Доверенные корневые сертификаты» -> «Сертификаты» и ищем сертификат OSPanel. Если он есть, то всё установилось корректно.
Перезапускаем Open Server и пробуем зайти на адрес
https://yourwebsite.com/
Комментарии (22)
x88
26.07.2023 13:24+1Лучше docker
igramnet Автор
26.07.2023 13:24Docker удобнее, да. Но не все умеют с ним работать + на винде он конечно медленный. Тут уж лучше MacOS.
SerafimArts
26.07.2023 13:24+1На винде докер работает быстрее, чем нативный php.exe раза в полтора два. Всё что нужно — это просто хранить файлы не на виндовой ФС, вроде
C:\
, а на\\wsl.localhost
.
roxblnfk
26.07.2023 13:24Жаль, что для других фреймворков не подойдёт. </sarcasm>
Не, правда, это же просто инструкция по установке/настройке OpenServer. Причём тут Laravel?
Если всё-таки про быстрый запуск лаки на винде, то почему не рассмотрен Laragon? Мне кажется с ним быстрее будет.
igramnet Автор
26.07.2023 13:24Да, верно. Есть статья про ларагон. Как альтернатива - хорошая.
Изначально я проект раскатил по классике, но столкнулся с проблемой сертификатов. Вот и решил описать все в одном месте, потому как сам промчался несколько часов.
vshemarov
26.07.2023 13:24Если речь про установку на локальном компе сугубо для разработки, то зачем возиться с ssl?
igramnet Автор
26.07.2023 13:24Потому что с приходом php 8.1 наличие серта на локале обязательно для веб разработки. Можно конечно конфигурировать как угодно, но это создаёт только сложности.
Плюс всегда лучше разрабатывать к максимально приближенным условиям продакшена.
Pitcentr0
с docker не все однозначно, после одного из обновления windows скорость работы локальных сайтов упала до минимума, баг описан но не решался сообществом, после этого в 3 клика ставишь OSpanel и все работает, даже странно что есть разработки больших корпораций (windows,docker) которые работают нестабильно и ПО одно разработчика (да с минимумом функционала) но! работает же!
igramnet Автор
Да, есть такое, у меня память докером съедается моментально. Но им удобнее.
В этой статьей я хотел показать альтернативу. Надеюсь получилось подробно и понятно.
maximw
Можно еще попробовать WSL + docker
igramnet Автор
Хорошее решение. Работает из коробки.
roxblnfk
В
.wslconfig
можно ограничить потребление памяти. А в экспериментальной сборке ядра можно ещё и выставить опцию возвращения памяти операционке.