English readme below
wnmp-dev это веб-окружение для Windows для php-разработки. Замена OpenServer (ospanel.io).
Идеология данного проекта - дать php-разработчикам под windows удобную среду, похожую на среду linux-разработчиков, с настройкой через стандартные конфигурационные файлы приложений.
В комплекте идёт веб-сервер nginx, php версий 5.6 и 7.4, mysql 5.7 . Php всех версий работают в браузере одновременно, т.е. вы можете параллельно с новыми проектами работать и со старыми легаси-проектами.
Для запуска php для nginx используется PHP CGI spawner (php-cgi-spawner.exe) https://github.com/deemru/php-cgi-spawner
Этот репозиторий - форк оригинального репозитория Александра Макарова https://github.com/samdark/wnmp-dev с предустановленными php 5.6 , php 7.4 и mysql 5.7
- Загрузите релиз и распакуйте в любую удобную папку.
- ВАЖНО! Проинициализируйте mysql, создав дефолтную структуру баз данных. Выполните
mysql57\bin\mysqld.exe --defaults-file=mysql57\my.ini --initialize-insecure. Будет создан mysql-пользователь root без пароля. - Измените конфиги
php56/php.ini,php74/php.ini,mysql57/php.ini,nginx/conf/nginx.confпод свои нужды, если это требуется. - Добавьте путь до корневой папки в PATH, чтобы работал консольный php. Проверьте, чтобы в PATH у вас не осталось путей, которые могут вести на другие версии php.
- Добавьте домен в nginx. Для этого скопируйте шаблон (файл без расширения в папке
nginx/conf/vhosts/) в файл с расширением.confи измените внутри название домена и путь до файлов. Добавьте домен в файл c:\Windows\System32\drivers\etc\hosts. Можете вместо ручного добавления воспользоваться скриптом:wnmp_create_domain foobar.local. Скрипт требует наличия консольной утилитыsedв системе (она идёт в комплекте сgit). Отредактируйте скрипт, заменив дефолтный путь размещения сайтов (c:\Sites) на ваш. - Запустите nginx, mysql и обработчики php:
wnmp_all_startилиwnmp_all_restart - Всё, можно работать !
Не бойтесь менять все конфиги и скрипты запуска. Делайте удобную для себя среду.
Скрипт wnmp_all_start запускает процессы обработки php 5.6 и php 7.4 на портах 9056 и 9074 соответственно. К этим портам коннектится nginx, обрабатывая директиву fastcgi_pass в конфиге домена. Чтобы домен работал на нужной версии php - просто поменяйте порт.
Версия php в консоли по умолчанию задаётся в файле php.bat. Так как папка добавлена в PATH, любое использование php (в phpstorm и любых терминалах) будет обращаться к этому файлу. Чтобы использовать другую версию php в консоли без изменения дефолта - вызовите соотвествующий батник явно - php56 legacy_script.php
Команды composer, composer56, composer74 вызывают composer.phar при помощи соответствующих версий php.
Конфигурационные файлы php - php.ini, они находятся в соответствующих php-папках. Они общие для консоли и веба. Для консольного запуска max_execution_time в конфиге игнорируется и ставится в 0.
Конфиг nginx - nginx/conf/nginx.conf
Конфиг mysql - mysql57/my.cnf, он явно указывается в wnmp_all_start
Логи nginx - запросы к вебсерверу: nginx/logs/domain.local-access.log, ошибки соединения с php: nginx/logs/domain.local-error.log
Логи mysql - лог работы mysqld: mysql57/data/mysql57.err, лог медленных запросов: mysql57/data/mysql57-slow.err, лог всех запросов: mysql57/data/mysql57.log (по умолчанию выключен)
Для добавления новой версии php нужно:
- На http://windows.php.net/download/ найти x86 Non Thread Safe нужной версии, скачать zip и распаковать в папку внутри wnmp-dev. Для удобства папки рекомендуется называть по аналогии с существующими, с номером версии.
- Внутри скопировать
php-development.iniвphp.ini. Файл нужно отредактировать, раскомментироватьextension_dir = "ext", в зонеDynamic Extensionsрасскоментировать нужные расширения php, идущие в комплекте, если нужны дополнительные (например xdebug) - скачать необходимые dll в папку ext и дополнить конфиг. - Отредактировать
wnmp_php_restart- добавить вызов нового php на нужном порту и с нужным количеством инстансов. - Создать
phpXX.batиcomposerXX.bat. - Если нужно сделать его дефолтным в консоли - отредактировать
php.bat - Запустить
wnmp_all_restart
Для добавления новой версии mysql (например, 5.6 для легаси-проектов) нужно:
- На https://downloads.mysql.com/archives/community/ скачать mysql нужной версии, распаковать в папку внутри wnmp-dev. Для удобства папки рекомендуется называть по аналогии с существующими, с номером версии.
- Внутри создать конфиг-файл, например my.ini, в котором указать нужные настройки. Особое внимание уделить параметрам:
datadir=, в котором указывается путь до баз данных,port=, в котором указывается порт, на котором будет висеть БД, если вы хотите иметь несколько одновременно запущенных баз данных, им надо назначить разные порты. - Если баз даных нет, запустить создание базового набора (пользователи, права и т.п.):
mysqlXX\bin\mysqld.exe --defaults-file=mysqlXX\my.ini --initialize-insecure. Создастся mysql-пользовательrootбез пароля. - Отредактировать
wnmp_all_start- добавить вызов нового mysql, по аналогии с mysql57. Укажите путь до конфиг-файла. - Отредактировать
wnmp_all_stop- добавить вызов mysqladmin для остановки mysql, по аналогии с mysql57. Если у вас несколько mysql на разных портах, укажите порт явно. - Запустить
wnmp_all_restart
Добавление postgres, mariadb происходит по тому же принципу, но с особенностями, присущими каждой платформе.
А где redis, memcached и т.д. ?
Скачайте инсталлятор нужного вам софта и поставьте в систему. Со времён Денвера почему-то принято делать сборки веб-окружения портабельными, но для этого нет никакой реальной необходимости. Какие-то программы проще поставить глобально или при помощи пакетного менеджера choko или подобных. Это же, кстати, относится и к установке баз данных - их тоже можно ставить windows-инсталлятором, если делать версию в wnmp-dev неудобно.
Какой ещё софт полезен для организации веб-окружения на windows ?
Git for windows - https://gitforwindows.org/ . В комплекте идёт мастхэвный комплект из базовых unix-утилит.
Удобный терминал - https://cmder.net/ . При наличии git можно ставить minimal-версию.
Клиент для работы с базами данных HeidiSQL - https://www.heidisql.com/
Как ещё можно упростить разработку под windows ?
Можно делать алиасы. Синтаксис batch files придумали чужие для хищников, но разобраться в нём можно. Например, файл pf.bat в папке, добавленной в PATH с содержимым @clear && "vendor\bin\phpunit" --filter=%* выполняет аналогичные функции, что и строка alias pf = clear && vendor/bin/phpunit --filter= в .bashrc в unix-системах - а именно, команда pf name_of_test в папке проекта запускает выполнение теста с этим именем.
Можете располагать свои алиасы в корне wnmp-dev , а можете сделать папку aliases и добавить её в PATH. Справочник по синтаксису: https://en.wikibooks.org/wiki/Windows_Batch_Scripting
wnmp-dev is development environment for Windows that consists of nginx, MySQL and PHP.
- Download last release and unzip to some folder
- Add folder to PATH
- Add domain to
nginx/conf/vhosts- copynginx/conf/vhosts/laraveltonginx/conf/vhosts/foobar.local.confand edit it to point to your webroot - Add domain to hosts file
wnmp_all_restart
- Download PHP from PHP for Windows website. You need
ntsandx86zip. - Extract archive. PHP 5.5 should end up in
php55, PHP 8.0 should end up inphp80etc. - Download MariaDB or MySQL,
put it to folder
mysql56for example. - Create config files. Initialize database
mysql56\bin\mysqld.exe --defaults-file=mysql56\my.ini --initialize-insecure - Add new software to .bat files
- PHP CGI spawner (
php-cgi-spawner.exe): https://github.com/deemru/php-cgi-spawner - Original wnmp-dev: https://github.com/samdark/wnmp-dev