Настройка apache2
Тут я буду рассказывать основные настройки веб-сервера апач, но по мере возможности. Я с каждым разом редактирую данную статью и добавляю что — то новое в описание.
Виртуальные хосты (Virtualhosts).
Хочу начать я свою настройку с создания и настройки Virtualhosts (виртуальных хостов). Есть много разных способов чтобы создать виртуальные хосты, но я бы посоветовал данный метод (поискав и перебрал много вариантов и литературы, я выбрал именно его).
По умолчанию, веб-сервер апач «слушает» все IP-адреса которые доступны для виртуального сервера. Это не есть хорошо, по этому нужно подредактировать и настроить его на прослушивание только определенного ИП-адреса. Даже если Вы имеете только один IP адрес!
Делаем изменение в файле ports.conf:
# vim /etc/apache2/ports.conf
NameVirtualHost 192.168.16.66 :80
Измените данный ИП-адрес на свой!
Делаем изменение в файле default:
# vim /etc/apache2/sites-available/default
<VirtualHost 192.168.16.66:80>
Теперь я создам 1 виртуальный хост в качестве примера:
# vim /etc/apache2/sites-available/test
<VirtualHost 192.168.16.66:80> ServerAdmin [email protected] # введите свой емейл ServerName 192.168.16.66 # замените на свой IP ServerAlias www.192.168.16.66 # замените на свой ИП-адрес или доменное имя DocumentRoot /var/www/192.168.16.66/public_html/ # домашняя директория для данного домена или сайта ErrorLog /var/www/192.168.16.66/logs/error.log # файл для хранения ошибок CustomLog /var/www/192.168.16.66/logs/access.log combined # # папка для хранения ошибок </VirtualHost>
Создадим папки которых нет:
# mkdir -p /var/www/192.168.16.66/ # mkdir -p /var/www/192.168.16.66/public_html # mkdir -p /var/www/192.168.16.66/logs
После всех изменений, нужно подключить данный домен в apache:
# a2ensite test
И перезагрузить веб-сервер:
# /etc/init.d/apache2 reload
Можно отключить данный сайт (виртуальный хост test)следующей командой:
# a2dissite test
Чтобы проверить работает ли все нормально, я скопирую файл (php_info):
# cp /var/www/php_info.php /var/www/192.168.16.66/public_html/
Можно открыть браузер и перейти:http://192.168.16.66/php_info.php
Настройка phpMyAdmin в Ubuntu
Теперь phpMyAdmin будет доступен по адресу ip_вашего_сервера/phpmyadmin. Вы можете проверить, всё ли работает, просто открыв этот адрес в браузере:
1. Создание пользователя для phpMyAdmin
По умолчанию, вы не сможете авторизоваться в phpMyAdmin от пользователя root, потому что по умолчанию данная особенность отключена. В целях безопасности включать данную опцию не рекомендуется. В данном случае необходимо создать нового пользователя и наделить его полномочиями root. Для создания нового пользователя перейдите в консоль MySQL введя команду в терминале:
После ввода пароля root пользователя MySQL, введите следующие команды:
При помощи первых двух команд был создан новый пользователь с именем test, ему был присвоен пароль и предоставлены все возможные привилегии (такие как создание, удаление, редактирование баз данных, таблиц и т.д.). Третья команда обновляет заданные ранее привилегии.
Теперь необходимо авторизоваться в phpMyAdmin при помощи созданного пользователя:
2. Защита phpMyAdmin
Если phpMyAdmin установлен на производственном сервере, который доступен из сети, то его необходимо обезопасить, добавив авторизацию. Для этого создайте файл /usr/share/phpmyadmin/.htaccess со следующим содержимым:
Данные строки означают:
- AuthType Basic — устанавливает тип аутентификации, мы указываем, что будем использовать пароль;
- AuthName — задает сообщение, которое будет видеть пользователь;
- AuthUserFile — файл, откуда программа будет брать имена пользователей и пароли;
- Require — указываем, что аутентификация обязательна.
Далее создайте новый пароль для своего пользователя:
Чтобы настройки из файла .htaccess заработали в этой директории, необходимо, чтобы для неё в файле /etc/apache2/apache2.conf значение AllowOverride было All:
Сохраните изменения и закройте файл. Далее перезапустите apache:
Теперь, если вы попытаетесь открыть phpMyAdmin, то вам необходимо пройти авторизацию:
Установка phpmyadmin на Linux — Debian
Перед установкой phpmyadmin на Дебиан, у вас уже должны быть установлены Apache, MySQL и PHP. Т.е. хостинг работает, но недостает phpmyadmin — инструмента для удобства при работе с базами данных, значительно упрощающего администрирование сервера БД (добавление и удаление пользователей, создание и удаление баз данных, выполнение SQL-запросов).
Для установки phpMyAdmin на Debian выполните команду:
apt-get install phpmyadmin
После этого загрузятся все компоненты и начнется процесс установки — перед вами будет мастер настройки phpMyAdmin. Первый вопрос мастера установки — об установленном вебсервере, выберите свой (apache2, lighthttpd).
И снова загружаются необходимые компоненты. Теперь мастер установки спросит разрешение, чтобы создать для вас новую базу данных, в которой будут храниться настройки phpMyAdmin. Соглашаемся.
Далее введите пароль root пользователя (администратора) MySQL-сервера. Нажмите «Enter» и затем задайте пароль для phpMyAdmin.
Добавьте phpMyAdmin к конфигурации вашего Apache и длительная установка phpMyAdmin будет завершена. Для этого откройте файл конфигурации Apache:
nano /etc/apache2/apache2.conf
Переместитесь в самый конец и добавьте одну строчку — путь к конфигу:
Include /etc/phpmyadmin/apache.conf
Сохраните изменения (Ctrl+O) и закройте файл (Ctrl+X)
Перезапустите Апач:
service apache2 restart
Само время проверить работу phpMyAdmin. Откройте браузер и перейдите по адресу http://ip/phpmyadmin. Ура, открылась страница входа в панель phpMyAdmin — значит все работает как надо!
Если у вас возникли проблемы, вы можете посмотреть дополнительное видео по теме установки phpMyAdmin:
https://youtube.com/watch?v=wHpLhiBsLY4
Шаг 5 — Тестирование обработки PHP на веб-сервере
Мы указали персонализированное расположение для хостинга файлов и папок сайта и теперь можем создать тестовый скрипт PHP, чтобы подтвердить способность Apache обрабатывать запросы для файлов PHP.
Создайте новый файл с именем в корневой папке сайта:
В результате откроется пустой файл. Вставьте в файл следующий код PHP:
/var/www/your_domain/info.php
После завершения редактирования сохраните и закройте файл.
Чтобы протестировать этот скрипт, откройте браузер и введите доменное имя или IP-адрес вашего сервера, а затем название скрипта, в данном случае :
Вы увидите приблизительно следующую страницу:
На этой странице содержится информация о вашем сервере с точки зрения PHP. Эта информация полезна для отладки и обеспечения правильного применения настроек.
Если вы видите эту страницу в своем браузере, ваша система PHP работает надлежащим образом.
После проверки соответствующей информации о вашем сервере PHP с помощью данной страницы рекомендуется удалить созданный вами файл, поскольку он содержит конфиденциальную информацию о вашей среде PHP и о вашем сервере Ubuntu. Для этого можно использовать :
Если впоследствии вам снова потребуется эта информация, вы всегда можете воссоздать эту страницу.
Как установить Apache на Windows
Перейдите на сайт apachelounge.com/download и скачайте .zip архив с веб-сервером:
Распакуйте папку Apache24 из этого архива в C:\Server\bin\.
Перейдите в каталог C:\Server\bin\Apache24\conf\ и откройте файл httpd.conf любым текстовым редактором.
В нём нам нужно заменить ряд строк.
Меняем
Define SRVROOT "c:/Apache24"
на
Define SRVROOT "c:/Server/bin/Apache24"
меняем
#ServerName www.example.com:80
на
ServerName localhost
меняем
DocumentRoot "${SRVROOT}/htdocs" <Directory "${SRVROOT}/htdocs">
на
DocumentRoot "c:/Server/data/htdocs" <Directory "c:/Server/data/htdocs">
меняем
DirectoryIndex index.html
на
DirectoryIndex index.php index.html index.htm
меняем
# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # AllowOverride FileInfo AuthConfig Limit # AllowOverride None
на
# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # AllowOverride FileInfo AuthConfig Limit # AllowOverride All
и меняем
#LoadModule rewrite_module modules/mod_rewrite.so
на
LoadModule rewrite_module modules/mod_rewrite.so
Сохраняем и закрываем файл. Всё, настройка Apache завершена! Описание каждой изменённой директивы вы найдёте на этой странице.
Откройте командную строку (это можно сделать нажав одновременно клавиши Win+x).
Выберите там Windows PowerShell (администратор) и скопируйте туда:
c:\Server\bin\Apache24\bin\httpd.exe -k install
Если поступит запрос от файервола в отношение Apache, то нажмите Разрешить доступ.
Теперь вводим в командную строку:
c:\Server\bin\Apache24\bin\httpd.exe -k start
И нажмите Enter.
Теперь в браузере набираем http://localhost/ и видим следующее:
Это означает, что веб-сервер работает. Чтобы увидеть там файлы, добавьте их в каталог c:\Server\data\htdocs\ — это главная папка для данных сервера, где будут размещаться все сайты.
Установка PHP 5
Самый распространённый метод установки и использования PHP — как модуль сервера (в отличии от CGI). Установка и активация модуля достаточно проста:
Перезагружаем изменения:
sudo touch /var/www/site.loc/public_html/test.php echo "<?php phpinfo(); ?>" | sudo tee /var/www/site.loc/public_html/test.php
По адресу http://site.loc/test.php нас должен ожидать подробный отчёт о статусе PHP на нашем сервере.
Несколько советов по первоначальной настройке php-интерпретатора:
- Файл конфигурации можно найти в phpinfo, значение «Loaded Configuration File», в моём случае это «/etc/php5/apache2/php.ini»;
- Установите значение «short_open_tag = On» в файле php.ini и перезагрузите сервер, это позволит использовать сокращённый синтаксис php;
- Включиет mod_rewrite «sudo a2enmod rewrite» и перезагрузите сервер, это позволит создать ЧПУ. В конфигурацию VirtualHost полезно добавить для манипуляцией «RewriteEngine On» из файла .htaccess, в некоторых случаях отсутствие такой директивы не позволит управлять ЧПУ посредствам mod_rewrite.
Шаг 1: Установка Apache на Ubuntu 16.10 или 17.04
1. Начнём с установки веб-сервера Apache из официальных репозиториев Ubuntu. Это делается командой:
sudo apt install apache2 vim # ИЛИ sudo apt-get install apache2 vim
2. После успешной установки веб-сервера Apache, убедитесь следующими командами, что демон запущен и к какому порту он привязан (по умолчанию apache прослушивает 80 порт):
sudo systemctl status apache2.service
sudo ss -tlpn
3. Установка ServerName для подавления предупреждения
Далее мы добавим одну строку в файл /etc/apache2/apache2.conf чтобы убрать сообщение с предупреждением. Хотя это и безвредно, если вы не установили ServerName на глобальном уровне, вы будете получать следующее сообщение о синтаксической ошибке в конфигурации Apache:
sudo apache2ctl configtest AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK
Откройте главный конфигурационный файл текстовым редактором:
sudo gedit /etc/apache2/apache2.conf
Если вы настраиваете систему без графического интерфейса, вместо gedit используйте, например, vim:
sudo vim /etc/apache2/apache2.conf
Внутри, в конце файла добавьте директиву ServerName, указывающую на ваше основное доменное имя. Если у вас нет связанного с вашим сервером доменного имени, вы можете использовать внешний IP сервера:
. . . ServerName server_domain_или_IP
Если вы забыли внешний IP сервера, то проверить его можно так:
curl suip.biz/ip/
Для локального веб-сервера можно сделать следующую запись:
ServerName localhost
Когда закончите, сохраните и закройте файл.
Далее, проверьте ошибки синтаксиса набрав:
sudo apache2ctl configtest Syntax OK
Поскольку мы добавили глобальную директиву ServerName, предупреждения больше нет.
Для того, чтобы изменения вступили в силу, перезапустите Apache:
sudo systemctl restart apache2
4. Для проверки работы веб-сервера apache, откройте в браузере IP адрес сервера. Если вы устанавливаете на локальном компьютере, но наберите localhost. Должна появиться страница по умолчанию для веб-сервера, примерно как на скриншоте:
5. Следующей командой мы добавляем службу веб-сервера в автоматическую автозагрузку при каждом запуске компьютера:
sudo systemctl enable apache2
Установка PHP 5
Чтобы установить модуль PHP для Apache используйте любой метод для того, чтобы установить пакет .
Включить модуль PHP 5 в Apache можно выполнив:
sudo a2enmod php5
Это создаст символическую ссылку /etc/apache2/mods-enabled/php5 указывающую на /etc/apache2/mods-availble/php5 .
Если не вы используете устаревшие в PHP короткие теги (что крайне нерекомендуемо) вместо откройте от имени суперпользователя
файл , найдите в нем строчку
short_open_tag = On
и замените ее на
short_open_tag = Off
Это заставит игнорировать открывающие теги в файлах, обрабатываемых PHP.
Для того, чтобы изменения вступили в силу перезапустите Apache
sudo service apache2 restart
note
Проверка PHP
В папке /var/www создайте файл test.php, дайте права на чтение из него всем (или хотя бы пользователю ) и запишите в него следующую строку:
<?php phpinfo(); ?>
Возможные ошибки
Ваш браузер предлагает вам скачивать PHP-страницы, а не показывает вам их? Если Apache не обрабатывает PHP-страницы после того как вы ео перезапустили, попробуйте установить пакет . Обычно он устанавливается вместе с пакетом , но он может быть удален изза конфликта пакетов, которым нужна другая версия PHP.
Если при выполнении команды вы получаете в ответ
This module does not exist!
попробуйте полностью удалить пакет
sudo apt-get purge libapache2-mod-php5
и установить его заново.
Не забывайте очищать кеш браузера перед тем как снова тестировать свой сайт.
Шаг 6. Настройте Apache для phpMyAdmin.
Создайте файл конфигурации виртуального хоста Apache для phpMyAdmin:
nano /etc/apache2/conf-available/phpmyadmin.conf
Добавьте следующую строку:
Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options SymLinksIfOwnerMatch DirectoryIndex index.php <IfModule mod_php5.c> <IfModule mod_mime.c> AddType application/x-httpd-php .php </IfModule> <FilesMatch ".+\.php$"> SetHandler application/x-httpd-php </FilesMatch> php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/ php_admin_value mbstring.func_overload 0 </IfModule> <IfModule mod_php.c> <IfModule mod_mime.c> AddType application/x-httpd-php .php </IfModule> <FilesMatch ".+\.php$"> SetHandler application/x-httpd-php </FilesMatch> php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/ php_admin_value mbstring.func_overload 0 </IfModule> </Directory> # Authorize for setup <Directory /usr/share/phpmyadmin/setup> <IfModule mod_authz_core.c> <IfModule mod_authn_file.c> AuthType Basic AuthName "phpMyAdmin Setup" AuthUserFile /etc/phpmyadmin/htpasswd.setup </IfModule> Require valid-user </IfModule> </Directory> # Disallow web access to directories that don't need it <Directory /usr/share/phpmyadmin/templates> Require all denied </Directory> <Directory /usr/share/phpmyadmin/libraries> Require all denied </Directory> <Directory /usr/share/phpmyadmin/setup/lib> Require all denied </Directory>
Сохраните и закройте файл, затем перезапустите веб-сервер Apache:
a2enconf phpmyadmin.conf sudo systemctl reload apache2