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/laravel
tonginx/conf/vhosts/foobar.local.conf
and edit it to point to your webroot - Add domain to hosts file
wnmp_all_restart
- Download PHP from PHP for Windows website. You need
nts
andx86
zip. - Extract archive. PHP 5.5 should end up in
php55
, PHP 8.0 should end up inphp80
etc. - Download MariaDB or MySQL,
put it to folder
mysql56
for 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