Як встановити Apache з підтримкою PHP і сервером MySQL у Windows без використання будь-яких готових до використання пакунків, таких як WAMPServer або XAMPP?
Як встановити Apache з підтримкою PHP і сервером MySQL у Windows без використання будь-яких готових до використання пакунків, таких як WAMPServer або XAMPP?
Відповіді:
По-перше, я рекомендую вам прочитати Примітки для платформи Apache для Windows - це пояснює деякі специфічні для Windows функції, такі як запуск сервісу, який у вас немає на інших ОС, і ви, мабуть, ніколи раніше не використовували.
Як згадувалося в цих особливих примітках до платформи, Apache не надає двійкових файлів для Windows, однак вони мають посилання на кілька сайтів третіх сторін, які надають двійкові файли, наприклад Лаунж Apache .
З цього веб-сайту можна завантажити 32-бітну версію (win32) або 64-бітну версію (Win64) - якщо ваша операційна система має 64-бітну версію, ви завжди повинні намагатися встановити 64-бітні версії програмного забезпечення, але зверніть увагу, Потрібно також використовувати 64-розрядні модулі, тобто, якщо у вас є тільки 32-розрядний модуль, то завантажте 32-розрядний Apache.
Ось версія, яку я використовував під час написання цього: Apache 2.4.10 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.
localhost
тільки - необов'язково Якщо ви налаштуєте це для цілей розробки, ви хочете переконатися, що ніхто, крім вас, не матиме доступу до нього, ваш брандмауер повинен уже подбати про це, але давайте додамо ще один рівень безпеки, вказавши Apache, що він приймає запити місцевих тільки машина.
Відкрийте файл конфігурації Apache C:\Apache24\conf\httpd.conf
, шукайте блок каталогу за замовчуванням <Directory "c:/Apache24/htdocs">
.
В кінці, якщо це, повинна бути лінія Require all granted
це означає, що будь-хто може отримати доступ до цього сервера. Давайте зробимо це Require local
які дозволяють доступ лише з локальної машини.
Крім того, Apache можна домогтися лише прив'язки до інтерфейсу loopback, таким чином, навіть якщо і ваш брандмауер і вищезазначені директиви контролю доступу не вдаються, сервер все одно не буде відкритий для всього Інтернету.
Для цього знайдіть Listen
директива (за замовчуванням встановлено на 80
) і змініть його на наступне:
Listen 127.0.0.1:80
Listen [::1]:80
Перший рядок не пояснює себе, другий - перший еквівалент IPv6, дужки використовуються в нотації IPv6 для розділення адреси та порту.
Збережіть файл, якщо ви вже працюєте на сервері, потім перезапустіть його, щоб врахувати наші зміни, і тепер localhost
має доступ, всі інші отримають 403 Forbidden
.
Я пропоную вам прочитати офіційна документація PHP про встановлення його на системах Windows.
Завантажте останні офіційні файли PHP Сторінка завантаження PHP для Windows , оберіть потокобезпечну версію, яка відповідає бітовій версії установки Apache (x86 для 32-Bit, x64 для 64-Bit).
Версія, яка не є безпечною для потоків, використовується лише у вигляді двійкового файлу CGI тут .
Версія, яку я використав, це: PHP 5.6.2 VC11 x64 Thread Safe - остання версія була останньою версією, коли ця відповідь була останньою (див. дату редагування внизу повідомлення).
Створіть порожній PHP
папку в корені жорсткого диска, і витягти раніше завантажений архів там, ви повинні мати шлях, як C:\PHP\ext
в іншому випадку ви зробили щось неправильне.
В C:\PHP
, перейменуйте php.ini-production
або php.ini-development
(залежно від того, що ви хочете) php.ini
.
Відкрийте це php.ini
шукати файл extension_dir = "ext"
і роз'єднати цей рядок (видаліть перший ;
). Це встановлює розширення за умовчанням на 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 і може бути зроблено з вже запущеним сервером.
Композитор - це інструмент для управління залежностями в PHP, як менеджер пакетів. Це дозволяє легко встановлювати пакети PHP і навіть цілі рамки.
Композитор вимагає, щоб розширення PHP OpenSSL було включено, так що давайте включимо його C:\PHP\php.ini
.
Для пошуку використовуйте функцію пошуку текстового редактора php_openssl.dll
, для неї вже повинна бути лінія для коментарів, просто розбекайте цей рядок.
Тепер завантажиться інсталятор Windows від Composer завантаження - або просто скористайтеся цим пряме посилання .
Дотримуйтесь інструкцій, коли з'явиться запит на шлях до PHP, перейдіть до C:\PHP
і виберіть php.exe
.
Це те, Composer тепер встановлено в системі і може бути використано з будь-якого місця - ви можете спробувати його, просто відкрийте нову командний рядок (ви не можете використовувати той, який вже відкритий, оскільки він повинен читати нові PATH
змінної, встановленої інсталятором Composer) і типу composer
.
Ви повинні отримати хороший логотип ASCII-art і щось подібне:
Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28
Якщо ви хочете отримати доступ до вашої бази даних MySQL з PHP, вам потрібно ввімкнути розширення, які дозволять вам зробити це, як php_mysqli
або php_pdo_mysql
- Я рекомендую включити їх обох.
Відкрийте файл конфігурації PHP C:\PHP\php.ini
у текстовому редакторі та пошук php_mysqli
або php_pdo_mysql
- вони вже повинні бути там, розкомпонувати їх.
Зроблено, тепер ви можете отримати доступ до будь-якої бази даних MySQL, використовуючи теж mysqli
або PDO
.
На MySQL Installer сторінка завантаження завантажити веб-інсталятор mysql-installer-web-community-xxxxx.msi
.
я використав mysql-installer-web-community-5.6.21.1.msi - остання версія була останньою версією, коли ця відповідь була останньою (див. дату редагування внизу повідомлення).
Інсталятор автоматично встановить відповідну версію (32-бітну або 64-бітну) залежно від вашої системи, хоча бітова версія MySQL не повинна відповідати версії Apache і PHP, але все одно корисно використовувати 64-бітну версію вашого Система підтримує її, щоб скористатися більш ніж 3 ГБ оперативної пам'яті Це дуже важливо, оскільки сервери баз даних, як правило, використовують багато оперативної пам'яті.
Дотримуйтесь кроків у установці, якщо ви встановлюєте це для розробки, то Developer default
це буде найкращим варіантом, він також встановить MySQL Workbench, який є рідним клієнтом графічного інтерфейсу, тим самим уникаючи встановлення повільних веб-інструментів, таких як PHPMyAdmin, якщо ви не впевнені в використанні клієнтського рядка.
Після того, як все встановлено, програма установки запитає вас про деякі базові значення конфігурації. Рекомендую вимкнути "Відкрити порт для брандмауера для доступу до мережі", якщо ви не хочете отримати доступ до бази даних з іншої машини в мережі.
Встановіть кореневий пароль - якщо він призначений лише для розробки, і ваш брандмауер блокує вхідні з'єднання з мережі, то надійний пароль не є необхідним.
Нарешті, ви можете вимкнути непотрібний MySQL Notifier, клацнувши правою кнопкою миші на іконку в треї, перейшовши до Actions - & gt; Опції, потім зніміть прапорець Run at Windows Startup
та встановіть прапорець. Це допоможе вам заощадити кілька МБ оперативної пам'яті і уникнути уповільнення роботи комп'ютера під час завантаження.
І ось тут, у вас є повністю функціональний WAMP-сервер, який працює як послуга і не залежить від будь-якого користувача (доступний навіть у тому випадку, якщо ніхто не ввійшов).
Зауважимо, що я не маю уявлення про безпеку цього, для цілей розвитку я б сказав, що це досить безпечно, оскільки ваш брандмауер повинен блокувати вхідні з'єднання для Apache (порт 80 і 443) і MySQL (порт 3306).
Це було перевірено на установці Windows 7, вона також повинна працювати добре на Vista, Windows 8 і, можливо, Windows Server 2008/2012 - не соромтеся коментувати та / або downvote, якщо це не так.
MSVCR110.dll
з'явилася помилка (на поточній версії Apache) я закінчив встановлення Visual C ++ Redistributable 2010 SP1. Потім я отримав ще одну помилку про файл VCRUNTIME140.dll
, яка вимагала встановлення Visual C ++ Redistributable для Visual Studio 2015.
Інструкції з вищезазначеної відповіді працюють прекрасно з липня 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-директорії, можливо, ви завантажили неправильний пакет.