Все привет, меня зовут Павел Жуковский и сегодня я расскажу о том как быстро развернуть Laravel на Windows.

Как развернуть через Docker?

Запустить Laravel на Windows с помощью Docker достаточно легко. Вот есть официальная документация, а здесь подробная статья от @Helldar.

Как развернуть с помощью OSPanel (Open Server Panel)?

  1. Скачиваем саму панель OSPanel и устанавливаем её.

  2. В панели есть composer из коробки, поэтому предлагаю его и использовать. В контекстном меню программы выбираем "Консоль".

  1. Далее в консоли переходим в папку domains (команда cd domains).

  2. Теперь устанавливаем фреймворк Laravel с помощью команды (где yourwebsite.com – это папка с вашим сайтом и это название можно менять)

    composer create-project laravel/laravel yourwebsite.com

  3. Если всё хорошо, то вы увидите, как скачивают пакеты и в итоге всё будет выглядеть вот так:

  4. Теперь нужно настроить вашу панель OSPanel. Для этого идём к контекстное меню приложения и выбираем «Настройки».

    Затем во вкладке «Модули» выбираем нужные модули. Для Laravel 10, например, можно выбрать Apache 2.4 + PHP 8.0-8.1, PHP 8.1. Базу данных и остальные модули пока не трогаем.

    Сохраняем и перезагружаем приложение.

  5. Теперь возвращаемся в настройки и идём во вкладку «Домены». Выставляем в «Управление доменами» вариант «Ручное + Автопоиск», ниже в поле «Имя домена» пишем свой домена (у меня в примере это yourwebsite.com), а правее в поле «Папка домена» выбираем нашу папку и внутри в ней папку public (мой путь в итоге получается \yourwebsite.com\public ). Обязательно жмём кнопку «Добавить», чтобы ваше выбранные данные перенеслись ниже. После этого опять сохраняем и перезагружаем приложение.

Настройка SSL в OSPanel (Open Server Panel)

Этот этап, пожалуй, самый сложный и требует внимания.

Напомню, что в модулях у нас выбрал Apache 2.4 + PHP 8.0-8.1 и PHP 8.1. Если у вас выбраны другие версии сервисов, то папки будут называться соответственно.

  1. Идём в папку, где установлена панель и там заходим в папку modules/http/Apache_2.4-PHP_8.0-8.1, там создаём папку ssl и заходим неё.

  2. Создать 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.

  1. Создать файл 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
  1. Запускаем файл start.bat и у вас должны сгенерироваться 5 файлов.

  2. Теперь нужно указать папку, где будут лежать все файлы сертификатов. Открываем файл /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 файлов.

  1. Теперь пришло время установке сертификатов. В папке с файлами запускаем файл rootCA, далее: Установить сертификат -> Текущий пользователь -> Поместить сертификат в следующее хранилище -> Обзор -> Доверенные коренные центры сертификации.
    Теперь нажимаем Пуск и вводим «Управление сертификатами пользователей»

Там выбираем папку «Доверенные корневые сертификаты» -> «Сертификаты» и ищем сертификат OSPanel. Если он есть, то всё установилось корректно.

  1. Перезапускаем Open Server и пробуем зайти на адрес https://yourwebsite.com/

Комментарии (22)


  1. Pitcentr0
    26.07.2023 13:24
    +1

    с docker не все однозначно, после одного из обновления windows скорость работы локальных сайтов упала до минимума, баг описан но не решался сообществом, после этого в 3 клика ставишь OSpanel и все работает, даже странно что есть разработки больших корпораций (windows,docker) которые работают нестабильно и ПО одно разработчика (да с минимумом функционала) но! работает же!


    1. igramnet Автор
      26.07.2023 13:24

      Да, есть такое, у меня память докером съедается моментально. Но им удобнее.
      В этой статьей я хотел показать альтернативу. Надеюсь получилось подробно и понятно.


      1. maximw
        26.07.2023 13:24

        Можно еще попробовать WSL + docker


        1. igramnet Автор
          26.07.2023 13:24

          Хорошее решение. Работает из коробки.


      1. roxblnfk
        26.07.2023 13:24
        +3

        [wsl2]
          memory=8GB
        [experimental]
          autoMemoryReclaim=true

        В .wslconfig можно ограничить потребление памяти. А в экспериментальной сборке ядра можно ещё и выставить опцию возвращения памяти операционке.


  1. x88
    26.07.2023 13:24
    +1

    Лучше docker


    1. igramnet Автор
      26.07.2023 13:24

      Docker удобнее, да. Но не все умеют с ним работать + на винде он конечно медленный. Тут уж лучше MacOS.


      1. Pitcentr0
        26.07.2023 13:24

        на macos все работает как часы, быстро и без нюансов)


        1. igramnet Автор
          26.07.2023 13:24

          Это верно, но есть те, кто на разворачивают всё на Windows. Им это пригодится)


      1. SerafimArts
        26.07.2023 13:24
        +1

        На винде докер работает быстрее, чем нативный php.exe раза в полтора два. Всё что нужно — это просто хранить файлы не на виндовой ФС, вроде C:\, а на \\wsl.localhost.


        1. roxblnfk
          26.07.2023 13:24

          Тут плюс.

          Вот только PHPStorm с этим не всегда адекватно работает.


          1. igramnet Автор
            26.07.2023 13:24

            У меня были траблы со штормом. В отдельной статье опишу как их обходить.


  1. Hakhagmon
    26.07.2023 13:24

    тот что в инструкции сертификат по факту вообще работать не будет, лучше сразу Let's Encrypt ставить.
    Вот инструкция


    1. igramnet Автор
      26.07.2023 13:24

      Он работает отлично в пределах локали.


  1. roxblnfk
    26.07.2023 13:24

    Жаль, что для других фреймворков не подойдёт. </sarcasm>

    Не, правда, это же просто инструкция по установке/настройке OpenServer. Причём тут Laravel?

    Если всё-таки про быстрый запуск лаки на винде, то почему не рассмотрен Laragon? Мне кажется с ним быстрее будет.


    1. igramnet Автор
      26.07.2023 13:24

      Да, верно. Есть статья про ларагон. Как альтернатива - хорошая.

      Изначально я проект раскатил по классике, но столкнулся с проблемой сертификатов. Вот и решил описать все в одном месте, потому как сам промчался несколько часов.


  1. sergeyol
    26.07.2023 13:24
    +1

    Если использовать для этих целей Laragon, то все становится еще проще. И Laravel и сертификат устанавливаются парой кликов мышкой.


    1. igramnet Автор
      26.07.2023 13:24

      Да, хорошее предложение. В целом для этого он и создан.


  1. vshemarov
    26.07.2023 13:24

    Если речь про установку на локальном компе сугубо для разработки, то зачем возиться с ssl?


    1. igramnet Автор
      26.07.2023 13:24

      Потому что с приходом php 8.1 наличие серта на локале обязательно для веб разработки. Можно конечно конфигурировать как угодно, но это создаёт только сложности.

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


  1. shasoftX
    26.07.2023 13:24

    А это OSPanel  какой версии? Там вроде последние полгода новую версию тестируют


    1. igramnet Автор
      26.07.2023 13:24

      В этой статье речь про актуальную - 5.4.3.