Как вручную установить Apache, PHP и MySQL в Windows?

48

Как установить Apache с поддержкой PHP и сервером MySQL в Windows без использования каких-либо готовых пакетов, таких как WAMPServer или XAMPP?


источник

Ответы:

65

апаш

Во-первых, я рекомендую вам прочитать специфичные для платформы замечания Apache для Windows - в нем объясняются некоторые специфичные для Windows функции, такие как запуск в качестве службы, которой у вас нет в других ОС, и которую вы, вероятно, никогда ранее не использовали.

Как упомянуто в этих примечаниях к платформе, Apache не предоставляет двоичные файлы для Windows, однако они имеют ссылки на несколько сторонних сайтов, которые предоставляют двоичные файлы, например Apache Lounge .

С этого веб-сайта мы можем загрузить 32-битную версию (win32) или 64-битную (Win64) - если ваша ОС 64-битная, вы всегда должны пытаться установить 64-битные версии программного обеспечения, но учтите, что вы Вам также понадобится использовать 64-битные модули, то есть, если у вас есть только 32-битный модуль, скачайте 32-битный Apache.

Вот версия, которую я использовал при написании этого: Apache 2.4.10 Win64 . Последняя версия, когда этот ответ последний раз обновлялся: Apache 2.4.38 Win64 (посмотрите на дату редактирования внизу поста).

После загрузки просто распакуйте Apache24папку в корень жесткого диска, чтобы у вас был такой путь, как C:\Apache24\bin.

Откройте окно командной строки (Windows + R и введите, cmdзатем нажмите Enter), измените каталог на C:\Apache24\binи запустите httpd.exe, обычно он не должен печатать никаких ошибок.

Если появляется диалоговое окно с сообщением об ошибке, MSVCR110.dllкоторое отсутствует в вашей системе, вам необходимо установить распространяемый пакет Visual C ++ для Visual Studio 2012 - как всегда при появлении запроса выберите соответствующую битовую версию: vcredist_x86.exeдля 32-разрядных систем и vcredist_x64.exeдля 64 -Битые.

Если вы получаете сообщение об ошибке, в котором говорится, что он не может подключиться к порту 80, проверьте, использует ли этот порт другое приложение - также известно, что Skype по умолчанию использует порты 80 и 443; снимите флажок «Использовать порты 80 и 443 в качестве альтернативы для входящих подключений» в расширенных настройках подключения , перезапустите Skype, чтобы применить изменения, и тогда вы сможете без проблем запустить Apache.

Такое предупреждение Could not reliably determine the server's fully qualified domain nameможно пока проигнорировать.

Брандмауэр Windows может попросить вас разрешить Apache взаимодействовать в определенных сетях, я рекомендую вам использовать настройки по умолчанию: разрешить его в домашней и рабочей сетях, но не в публичных / ненадежных сетях.

Затем откройте браузер и перейдите http://localhost, если вы видите страницу с сообщением, It works !то это означает, что ваша установка Apache работает.

Теперь вы можете остановить запущенный в настоящее время Apache, нажав Ctrl + C в командной строке.

Если вы получили предупреждение о невозможности определить полное доменное имя системы, исправьте его, отредактировав C:\Apache24\conf\httpd.confи отредактировав ServerNameпеременную (она должна быть уже в комментарии, просто раскомментируйте ее и измените):

ServerName <yourhostname>

Замените <yourhostname>либо именем хоста системы, либо localhost.

Наконец, если вы хотите запустить сервер автоматически при запуске системы (даже если никто не входит в систему), вам нужно будет запустить его как службу - в новой командной строке с повышенными правами (с правами администратора) введите:

httpd.exe -k install

Вот и все, теперь у вас есть новая служба в Службах (Windows + R, затем введите «services.msc», затем нажмите Enter) с именем «Apache2.4», которой вы можете управлять, как и любой другой службой Windows.

Ограничение доступа Apache localhostтолько - необязательно

Если вы настраиваете это для целей разработки, вы хотите убедиться, что никто, кроме вас, не сможет получить к нему доступ, ваш брандмауэр уже должен позаботиться об этом, но давайте добавим к нему еще один уровень безопасности, сказав Apache принимать запросы от локальных только машина.

Откройте файл конфигурации Apache C:\Apache24\conf\httpd.conf, найдите блок каталога по умолчанию <Directory "c:/Apache24/htdocs">.

В конце, если это, должна быть строка Require all granted, это означает, что любой может получить доступ к этому серверу. Давайте сделаем то, Require localчто разрешает доступ только с локальной машины.

Кроме того, вы можете указать Apache связываться только с интерфейсом обратной связи. Таким образом, даже если ваш брандмауэр и директивы управления доступом, упомянутые выше, не будут работать, сервер все равно не будет открыт для всего Интернета.

Для этого найдите Listenдирективу (по умолчанию она установлена 80) и измените ее следующим образом:

Listen 127.0.0.1:80
Listen [::1]:80

Первая строка не требует пояснений, вторая - эквивалент первого IPv6, скобки используются в нотации IPv6 для разделения адреса и порта.

Сохраните файл, если вы уже используете сервер, затем перезапустите его, чтобы учесть наши изменения, и теперь у вас localhostесть только доступ, все остальные получат 403 Forbidden.

PHP

Я предлагаю вам прочитать официальную документацию по PHP об установке его в системах Windows.

Загрузите последние версии двоичных файлов PHP с официальной страницы загрузки PHP для Windows , выберите поточно-ориентированную версию, соответствующую битовой версии вашей установки Apache (x86 для 32-битной, x64 для 64-битной).

Не поточнобезопасная версия предназначена только для двоичного кода CGI - более подробная информация здесь .

Я использовал следующую версию: PHP 5.6.2 VC11 x64 Thread Safe . Последняя версия, когда этот ответ последний раз обновлялся: PHP 7.3.3 VC15 x64 Thread Safe (посмотрите дату редактирования внизу поста).

Создайте пустую PHPпапку в корне вашего жесткого диска и извлеките туда ранее загруженный архив, у вас должен быть такой путь C:\PHP\ext, иначе вы сделали что-то не так.

В C:\PHP, переименуйте php.ini-productionили php.ini-development(в зависимости от того, что вы хотите) php.ini.

Откройте этот php.iniфайл, найдите extension_dir = "ext"и раскомментируйте эту строку (удалите первую ;). Это устанавливает стандартное расширение для dir ext(которое разрешает C:\PHP\extи избегает необходимости добавлять ext/все пути расширения вручную, как в предыдущих версиях этого поста.

Теперь настройте Apache для использования этого PHP, отредактировав C:\Apache24\conf\httpd.conf- после всех LoadModuleстрок добавьте следующее:

(Последующий для PHP 7 только )

LoadModule php7_module "c:\php\php7apache2_4.dll"

<IfModule php7_module>

    AddHandler application/x-httpd-php .php
    AddType application/x-httpd-php .php .html
    PHPIniDir "c:\php"
</IfModule>

(Далее для PHP 5 только )

LoadModule php5_module C:/PHP/php5apache2_4.dll

<IfModule php5_module>
    DirectoryIndex index.html index.php
    AddHandler application/x-httpd-php .php
    PHPIniDir "C:/PHP"
</IfModule>

Теперь попробуйте запустить Apache вручную, открыв C:\Apache24\binи запустив командную строку httpd.exe- если вы не видите ошибок, это означает, что ваш файл конфигурации действителен и PHP, скорее всего, работает .

Вы можете проверить вашу установку PHP, создав файл , как info.phpс <?php phpinfo();внутренней и собирается http://localhost/info.php- вы должны увидеть совсем немного информации о вашей системе и инсталляции PHP и всех его модулей. Если вы получаете что-то еще, например, «Внутренняя ошибка сервера», это означает, что что-то не так.

Теперь вы можете убить ваш текущий процесс Apache (Ctrl + C в консоли) и запустить службу - следующая часть не взаимодействует с Apache и может быть выполнена с уже запущенным сервером.

Композитор - необязательно

Composer - это инструмент для управления зависимостями в PHP, такой как менеджер пакетов. Это позволяет легко устанавливать пакеты PHP и даже целые фреймворки.

Composer требует, чтобы расширение PHP OpenSSL было включено, поэтому давайте включим его C:\PHP\php.ini.

Используйте функцию поиска вашего текстового редактора для поиска php_openssl.dll, там уже должна быть строка комментария, просто раскомментируйте эту строку.

Теперь загрузите установщик Windows Composer со страницы загрузки или просто воспользуйтесь этой прямой ссылкой .

Следуйте инструкциям, когда будет предложено указать путь к PHP, найдите C:\PHPи выберите php.exe.

Вот и все, Composer теперь установлен для всей системы и может использоваться из любого места - вы можете попробовать его, просто откройте новую командную строку (вы не можете использовать уже открытую, так как ей нужно прочитать новую PATHпеременную, установленную Composer's). установщик) и тип composer.

Вы должны получить красивый логотип ASCII-art и что-то вроде этого:

Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28

Расширения PHP MySQL - необязательно

Если вы хотите получить доступ к своей базе данных MySQL из PHP, вам нужно включить расширения, которые позволяют вам это делать, например, php_mysqliили php_pdo_mysql- я рекомендую включить их оба.

Откройте файл конфигурации PHP C:\PHP\php.iniв текстовом редакторе и найдите php_mysqliили php_pdo_mysql- они уже должны быть там, раскомментируйте их.

Готово, теперь вы можете получить доступ к любой базе данных MySQL , используя либо mysqliили PDO.

MySQL

На странице загрузки установщика MySQL загрузите веб-установщик mysql-installer-web-community-xxxxx.msi.

Я использовал mysql-installer-web-community-5.6.21.1.msi. Последняя версия, когда этот ответ последний раз обновлялся: mysql-installer-web-community-8.0.15.0.msi (посмотрите дату редактирования внизу поста).

Установщик автоматически установит соответствующую версию (32-битную или 64-битную) в зависимости от вашей системы, даже если битовая версия MySQL не должна совпадать с Apache и PHP, но все равно выгодно использовать 64-битную версию вашей Система поддерживает его, чтобы использовать более 3 ГБ ОЗУ , что очень важно, поскольку серверы баз данных, как правило, используют много ОЗУ.

Следуйте инструкциям установщика, если вы устанавливаете его для разработки, то это Developer defaultбудет ваш лучший вариант, он также установит MySQL Workbench, который является нативным клиентом с графическим интерфейсом, поэтому вам не нужно устанавливать медленные веб-инструменты, такие как PHPMyAdmin, если вам неудобно использовать клиент командной строки.

После того, как все будет установлено, установщик запросит у вас некоторые основные значения конфигурации, я рекомендую отключить «Открыть порт брандмауэра для доступа к сети», если вы не хотите получать доступ к базе данных с другого компьютера в сети.

Установите пароль root - если это только для целей разработки и ваш брандмауэр блокирует входящие соединения из сети, то надежный пароль не требуется.

Наконец, вы можете отключить бесполезный MySQL Notifier, щелкнув правой кнопкой мыши значок в трее, перейдя в Действия -> Параметры, затем снимите Run at Windows Startupфлажок и примените. Это сэкономит вам несколько МБ ОЗУ и позволит избежать замедления работы компьютера при загрузке.

И все, теперь у вас есть полнофункциональный сервер WAMP, который работает как служба и не зависит от какого-либо пользователя (доступен, даже если никто не вошел в систему).

Обратите внимание, что я не имею представления о безопасности этого, для целей разработки я бы сказал, что это довольно безопасно, так как ваш брандмауэр должен блокировать входящие соединения для Apache (порт 80 и или 443) и MySQL (порт 3306).

Это было протестировано на установке Windows 7, оно также должно отлично работать на Vista, Windows 8 и, возможно, Windows Server 2008/2012 - не стесняйтесь комментировать и / или понижать голос, если это не так.

Захария Раман
источник
3
Я просто хотел бы отметить, что может быть необходимо раскомментировать строку extension_dir = "ext" для Windows в php.ini.
Чиввиджим
@jaffamcneill действительно ты был прав, я обновил свой ответ, чтобы объяснить это.
Ypu спас мне жизнь. Я боролся с этим в течение прошлой недели, но mysql просто не был бы включен в phpinfo. Я исправил это с вашей помощью. Благодаря тонну.
clever_bassi
Когда мы должны использовать модуль mod_fcgid? У меня возникла проблема, когда в системе одновременно было несколько пользователей, делающих несколько запросов. Мне нужна 64-битная версия, так как 32-битной памяти не хватает (VFP ODBC с большими запросами отчетов). Будет ли ваша установка работать нормально или мне нужно использовать модуль php_fcgid и установить PHP как cgi moodule? Это всегда смущает меня ... Спасибо за понимание.
Джереми
1
Когда MSVCR110.dllошибка обнаружилась (в текущей версии Apache), я закончил установку Visual C ++ Redistributable 2010 SP1. После этого я получил еще одну ошибку о файле VCRUNTIME140.dll, которая потребовала от меня установить распространяемый Visual C ++ для Visual Studio 2015.
Coded Monkey
8

PHP 7

Инструкции в ответе выше работают отлично с июля 2017 года, однако, если вы хотите использовать PHP 7, вы должны добавить следующие строки C:\Apache24\conf\httpd.confвместо тех, которые в этом ответе (которые работают только для PHP 5) [Добавить следующее после всех LoadModuleстрок] :

LoadModule php7_module C:/PHP/php7apache2_4.dll

<IfModule php7_module>
    DirectoryIndex index.html index.php
    AddHandler application/x-httpd-php .php
    PHPIniDir "C:/PHP"
</IfModule>

Убедитесь, что все пути правильные. Если у вас нет php7apache2_4.dllкаталога PHP, возможно, вы скачали не тот пакет.

rahuldottech
источник