Чистая установка веб-сервера Apache с PHP и базой данных MySQL на Windows
Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!
Здравствуйте, уважаемые посетители веб-портала о создании сайтов – Site on! Сегодня мы вместе с вами шаг за шагом установим на Windows 7 (отличия установки на другие версии тоже обсудим) настоящий веб-сервер Apache.
Под словом «настоящий» я подразумеваю отсутствие в использовании готовых дистрибутивов типа Денвера. Сегодня мы с чистого листа установим веб-сервер на Виндовс так, как он был бы установлен на настоящем хостинге.
Скачивание и установка пакета Visual C++
Первым делом устанавливаем пакет Microsoft Visual C++ 2012.
Если у Вас возникли проблемы с выбором и скачиванием пакета Visual C++, найдите в архиве Apache файл с ознакомительными сведения (файл readme). В нем должна быть ссылка на скачивание пакета Visual C++ c сайта www.microsoft.com. Скачайте и установите пакет Visual C++.
скачивание и установка пакета Visual C++
Установка MySQL
Открываем страницу загрузки дистрибутива: http://dev.mysql.com/downloads/installer/5.6.html и скачиваем Windows (x86, 32-bit), MSI Installer 5.6.16 250.8M. После нажатия на кнопку Download вы увидите форму для регистрации, ее можно пропустить нажав на ссылку внизу (» No thanks, just start my download!).
Запускаем установщик, после небольшой загрузки видим следующее окно:
Нажимаем Install MySQL Products, появляется следующее окно, в котором мы принимаем лицензионное соглашение (ставим галочку) и жмем Next >
Следующее окно нам предлагает проверить, есть ли более новая версия MySQL, ставим галочку Skip. (пропустить) и нажимаем Next >
В следующем окне нам предлагают выбрать тип установки, выбираем Custom и жмем Next >:
В следующем окне нам предоставляется возможность выбратьнеобходимые компоненты: убираем галочку с MySQL Connectors, в Application убираем галочку с MySQL Workbench CE 6.0.8 и MySQL Notifier 1.1.5, в MySQL Server 5.6.16 убираем галочки с Development Components и Client C API library (shared) и жмем Next >
Далее нам пишут, что ничего дополнительно нам устанавливать не нужно и мы можем приступить к установке, просто жмем Next >
Следующее окно нам сообщает что именно будет установлено, просто нажимаем Execute
После успешной установки жмем Next >
Вследующем окно нам сообщается о том, что далее мы немного настроим наш сервер, жмем Next >
В первом окне настрокйки, устанавливаем галочку Show Advanced Options, остальное оставляем как есть и жмем Next >
В следующем окне нам предлагается установить пароль администратора (root). Этот пароль лучше не терять! Устанавливаем пароль и жмем Next >
В следующем окне стираем в поле ввода цифры 56, остальное оставляем как есть и жмем Next >
Осталось проверить успешно ли прошла установка. (win 8): Заходим в меню пуск → переходим к приложениям (стрелочка вниз) → находим MySQL5.6 Command Line Client (терминал для работы с MySQL в командной строке) → открываем его. Далее вводим пароль администратора (root). Если пароль правильный, вы попадете в командную строку ( mysql> ). Введите команду: show databases; (точка с запятой на конце обязательна). В результате вы должны увидеть список баз данных (как минимум две — information_schema и mysql). Это означает, что сервер работает правильно. Закрываем командную строку выполнив команду exit.
Добавьте в файл C:WindowsSystem32driversetchosts строчку: 127.0.0.1 localhost. В этом же файле удалите или закомментируйте (поставить знак # в начале строки) строку ::1 localhost (если она изначально закомментирована, то не надо ничего с ней делать).
Apache
Нужна настроить Apache. Откройте файл C:wamp64binapacheapache2.4.23confhttpd.conf в текстовом редакторе (он может быть расположен в другом месте, если вы выбрали нестандартное размещение программы в пункте 11. Найдите в файле строку “Require local” (можно искать поиском через ctrl+f) и замените эти слова на “Require all granted”. Потом сохраните и закройте файл.
Теперь нужно найти файл файл конфигурации хостов. Он располагается по адресу C:wamp64binapacheapache2.4.23confextrahttpd-vhosts.conf. В нем нужно заменить весь текст, который расположен в теге directory (текст выделен синим на скриншоте”). Нужно прописать такой текст:
Options FollowSymLinks
AllowOverride All
Order deny,allow
allow from all 21
3. Сохраняем и закрываем файл.
4. Перезагружаем WarmServer. Для этого нажмите правой кнопкой на иконку программы в трее и выберите “Refresh”
5. Чтобы убедиться, что все работает, создайте свой HTML-файл index.html с каким-нибудь в директории C:wamp64www или скачайте готовый файл по ссылке и поместите его в директорию.
6. Далее перейдите в браузере по ссылке — http://адресвашегосервера/index.html и вам должен открыться текст файла. Адрес сервера вы можете узнать на странице услуги в личном кабинете (строка IP адрес). Если все открывается, то вы правильно открыли порты и изменили файлы.
Установка Apache
- Распакуйте архив дистрибутива в каталог C:Apache2.
- Откройте в текстовом редакторе файл «C:Apache2confhttpd.conf», являющийся основным конфигурационным файлом сервера Apache.
- Правка файла httpd.conf:
- Для загрузки модуля mod_rewrite найдите и раскомментируйте (уберите в начале строки символ «#») данную строку:
LoadModule rewrite_module modules/mod_rewrite.so - Для загрузки PHP интерпретатора, в конец блока загрузки модулей необходимо добавить строку:
LoadModule php5_module «C:/php/php5apache2_4.dll» - Определите каталог содержащий конфигурационный файл PHP, добавив ниже следующую строку:
PHPIniDir «C:/php» - Найдите и раскомментируйте строку:
ServerName www.example.com:80
Отредактируйте ее следующим образом установив изначальное имя сервера:
ServerName localhost:80 - Найдите строку:
DocumentRoot «c:/Apache2/htdocs»
Назначьте корневую директорию управления сайтами (немного позже мы ее создадим):
DocumentRoot «C:/apache» - Найдите данный блок:
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
И замените его на нижеследующий:
Options Includes Indexes FollowSymLinks
AllowOverride All
Allow from all - Удалите или закомментируйте первоначальный блок управления директориями (он нам не понадобится), который без комментариев выглядит примерно так:
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all - Найдите блок:
DirectoryIndex index.html
Замените его на:
DirectoryIndex index.html index.htm index.shtml index.php - Найдите строку:
ErrorLog «logs/error.log»
Замените на нижеследующую (в этом случае просматривать глобальный файл ошибок сервера будет удобнее):
ErrorLog «C:/apache/error.log» - Найдите строку:
CustomLog «logs/access.log» common
Замените на:
CustomLog «C:/apache/access.log» common - Для работы SSI (включения на стороне сервера) следующие строки, находящийся в блоке
, необходимо найти и раскомментировать:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml - Добавьте ниже, в тот же блок
, две строки:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps - И, наконец, найдите и раскомментируйте строки:
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-manual.conf
Include conf/extra/httpd-default.conf - Сохраните изменения и закройте файл «httpd.conf»
- Существующие блоки примеров виртуальных хостов необходимо удалить, и вставить только нижеследующее:
DocumentRoot «C:/apache/localhost/www»
ServerName localhost
ErrorLog «C:/apache/localhost/error.log»
CustomLog «C:/apache/localhost/access.log» common - Сохраните изменения и закройте файл «httpd-vhosts.conf»
Установка Apache
Установка веб-сервера предельно проста:
Для проверки его работы наберите в браузере IP-адрес сервера, и вы увидите стандартную страницу заглушку:
Для Apache 2.4 она выглядит несколько иначе, но смысл от этого не меняется.
Настройки сервера содержатся в /etc/apache2/apache2.conf, к которому подключаются дополнительные файлы из директорий mods-enabled и sites-enabled. При этом никто не мешает вам внести все указанные настройки непосредственно в apache2.conf — все будет работать, но это резко снижает удобство администрирования, так как требует постоянной правки основного файла конфигурации, в то время как настройки во внешних файлах легко включаются и отключаются при помощи специальных инструментов.
С этой целью каталоги mods-enabled и sites-enabled не содержат файлов конфигурации, а только символические ссылки на директории mods-available и sites-available, где следует располагать сами файлы. Как понятно из названий, в данных каталогах находятся настройки модулей и виртуальных хостов. Если с модулями дело приходится иметь редко, то управлять таким образом виртуальными хостами, т.е. сайтами, очень удобно.
Подробно о виртуальных хостах и расположении содержимого сайта мы уже писали в статье по Lighttpd, все сказанное там справедливо и для нашего случая. Вы вольны выбрать любую схему размещения данных, мы же предпочитаем хранить содержимое сайтов внутри /var/www в папках с именем домена.
Следующий вопрос, который следует решить, это права доступа к файлам и папкам сайта. По умолчанию их владельцем должен являться веб-сервер (пользователь и группа www-data), в противном случае скрипты могут работать неожиданным образом или не работать вообще. Более удобно и безопасно запускать содержимое сайтов от имени пользователя, а не веб-сервера. Для этого установим следующий пакет:
В Ubuntu 14.04 при установке данного пакета вы можете столкнуться с ошибкой:
Это известный баг, для его исправления выполните:
Если мы заглянем в папку sites-enabled, то увидим там уже готовую конфигурацию для сайта по умолчанию, т.е. того, что будет показано при наборе IP-адреса сервера. Данная настройка указывает на папку /var/www или /var/www/html для Apache 2.4, где расположена страница заглушка. После того как вы добавите свои сайты, выводиться будет первый по списку сайт.
Допустим мы хотим разместить на нашем сервере содержимое сайта example.com, сначала создадим необходимые директории и сделаем их владельцем пользователя, который будет работать с сайтом:
Теперь создадим файл виртуального хоста и приступим к его заполнению:
Для Apache 2.4 файлы конфигурации обязательно должны иметь расширение .conf, поэтому команда будет выглядеть следующим образом.
Внутри разместите следующий текст:
Разберем содержимое более подробно. Начинается секция виртуального хоста с ее определения , где указывается IP-адрес и порт, на котором данный хост работает, если вы хотите принимать соединения на всех сетевых интерфейсах, то вместо адреса поставьте «звездочку» — *. Внутри секции располагаются следующие директивы:
- ServerName — имя виртуального хоста, должен иметь значение полного доменного имени (FQDN), в нашем случае example.com, определяет, какое доменное имя обслуживает данный виртуальный хост.
- ServerAdmin — контактный адрес электронной почты администратора домена, включается в сообщения об ошибках веб-сервера, рекомендуется завести для этих целей отдельный ящик.
- ServerAlias — алиас имени хоста, обязательно значение www.example.com, чтобы ваш сайт работал как с www, так и без.
- DocumentRoot — корневая папка виртуального хоста, указываем директорию размещения сайта, т.е. /var/www/example.com
- CustomLog — имя и расположение лога доступа, переменная $ указывает на стандартную директорию логов веб-сервера, это позволяет использовать стандартный механизм ротации логов для всех сайтов, в имени лога рекомендуем указывать имя хоста, чтобы сразу было понятно где какой лог. Не забудьте в конце опцию combined, данная опция указывает формат лога и задается в apache2.conf.
- ErrorLog — имя и расположение лога ошибок, полностью аналогичен логу доступа, но не требуется указывать формат лога.
- AssignUserID — имя и группа пользователя (через пробел) от имени которых будет работать данный виртуальный хост, задается только если установлен apache2-mpm-itk, в противном случае эта директива не нужна.
Внутри секции виртуального хоста размещаем еще одну секцию , которая включает директивы, применяемые не к хосту, а к каталогу, в нашем случае к корневому каталогу виртуального хоста. Там располагается директива Options, которая содержит следующие опции (перед каждой из которых ставится + или -, разрешая или запрещая опцию):
- ±Includes — разрешает / запрещает SSI (Server Side Includes — включения на стороне сервера), в нашем случае выключено в целях безопасности. Имеет смысл включать только в том случае, если ваш сайт явно требует данной опции.
- ±Indexes — разрешает / запрещает показывать содержимое каталога при отсутствии индексного файла, отключено в целях безопасности.
- ±ExecCGI — разрешает / запрещает выполнение сценариев CGI, отключаем в целях безопасности.
За ней следует директива AllowOverride, которая устанавливает использование директив из файлов .htaccess, по умолчанию сервер устанавливает для /var/www данную директиву в None, что запрещает использовать директивы .htaccess во всех вложенных директориях. Для того чтобы разрешить использование директив .htaccess установите данную директиву в All, что разрешит использовать в .htaccess любые директивы.
Этим список доступных опций (как и директив) не исчерпывается, но их рассмотрение выходит за рамки данной статьи и будет рассмотрено в отдельном материале. Вы можете самостоятельно ознакомиться с ними в официальной документации.
Закрываем открытые секции: и , затем сохраняем файл. Конфигурация виртуального хоста готова.
Чтобы включить сайт необходимо сделать символьную ссылку на файл конфигурации в каталоге sites-enabled, а, чтобы выключить — удалить эту ссылку. Это можно сделать вручную, при помощи команды ln -s, или использовать специальную утилиту apache:
Данная команда включит сайт, для выключения введите:
В качестве опции команде передается имя конфигурационного файла из sites-available, в случае Apache 2.4 без расширения. После каждого такого действия веб-сервер необходимо перезапустить:
Чтобы проверить работу виртуального хоста разместите в его корневой директории любой html-файл и обратитесь к серверу по имени домена (при этом А-запись домена должна быть настроена и указывать на ваш веб-сервер).
Например, создадим индексный файл:
И разместим в нем строку:
В итоге в браузере вы должны увидеть следующее:
Проверка
C другого компьютера в браузере попытайтесь перейти по адресу:
где ip-address — адрес вашего Windows Server. Его можно узнать в панели управления сервером Serverspace.
Шаг 2: Установка MariaDB/MySQL в Ubuntu 16.10 или 17.04
6. MariaDB – это форк MySQL. Программы взаимозаменяемы, даже процессы называются одинаково. Выбор MariaDB или MySQL – абсолютно на ваше усмотрение. В дальнейшем это ни на что не повлияет. Для установки MariaDB наберите:
Для установки MySQL наберите:
Установите только одну из них!
7. После завершения установки, запустите простой скрипт безопасности, который удалит некоторые настройки по умолчанию и чуть заблокирует доступ к нашей системе. Запустите интерактивный скрипт командой:
Давайте внимательно разберёмся со всем, что говорит нам этот скрипт, поскольку вопросам безопасности вер-сервера следует уделять особое внимание.
Примечание: запуск всех элементов этого скрипта рекомендуется для всех серверов MariaDB в продакшене (реальном рабочем использовании).
Для того, чтобы войти в MariaDB для настройки безопасности, нам нужен текущий пароль пользователя root. Если вы только что установили MariaDB и ещё не установили пароль рута, то пароль будет пустым, т.е. просто нажмите Enter.
Установите пароль рута, чтобы никто другой не мог войти в MariaDB без надлежащей авторизации как пользователь root.
Установить пароль root’а? [Да/нет]
Повторно введите новый пароль:
Если у вас появилась строка «Sorry, you can’t use an empty password here.» она означает, что пароль не может быть пустым, т.е. вы не ввели пароль.
По умолчанию, установленная MariaDB имеет анонимного пользователя, позволяющего любому войти в MariaDB даже если для него не было создано пользовательского аккаунта. Это сделано в целях тестирования и упрощения установки. Вам следует удалить их перед переходом в реальное рабочее окружение.
Удалить анонимного пользователя? [Да/нет]
Обычно, root’у следует разрешать подключаться только с ‘localhost’. Это гарантирует, что кто-то из сети не сможет угадать пароль root’а.
Отключить удалённый вход рута? [Да/нет]
По умолчанию MariaDB поставляется с базой данных ‘test’, к которой может любой получить доступ. Это также сделано в целях тестирования и она должна быть удалена перед переходом в реальное рабочее окружение.
Удалить тестовую базу данных и доступ к ней? [Да/нет]
Перезагрузка таблицы привилегий гарантирует, что все сделанные изменения немедленно будут иметь эффект.
Перезагрузить таблицу привилегий сейчас? [Y/n]
Всё сделано! Если вы завершили все вышеописанные шаги, ваша установленная MariaDB должна быть безопасной.
Ещё раз о пароле MariaDB. Это должен быть надёжный и уникальный пароль. Думайте о нём как о пароле входа на ваш сервер. Он должен отличаться от пароля пользователя Linux.
8. Для получения доступа к базе данных MariaDB обычному пользователю без использования sudo привилегий, зайдите в приглашение командной строки MySQL и запустите следующие команды:
9. Затем перезапустите службу MySQL и попробуйте войти в базу данных без sudo, как показано ниже.
Выводы
Умение устанавливать и настраивать веб-сервер для сайта вам очень пригодится как в операционной системе Ubuntu, так и в Windows.
О том как устанавливать и настраивать локальный сервер для сайта всего несколькими кликами мыши в Windows 10, вы можете посмотреть видеоуроки PHP в курсе PHP/MySQL.
- Для загрузки модуля mod_rewrite найдите и раскомментируйте (уберите в начале строки символ «#») данную строку:
-
Скачиваем пакет по ссылке
-
, обратите внимание что нам нужен ‘Apache 2.4 win32 binaries’.