Любой сайт начинается с сервера и в этой статье я расскажу как быстро и без лишних хлопот установить полноценный локальный сервер Apache 2. Пошаговые инструкции помогут лучше понять назначение каждой части комплекта разработчика.
Установка сервера Apache 2
В терминале запускаем процесс установки apache2 из стандартных репозиториев:
sudo apt-get install apache2
Чтобы сервер заработал следует выполнить стандартную команду перезагрузки процесса:
sudo service apache2 restart
Теперь, если перейти по ссылке http://localhost будет отображаться приветственный текст, вроде такого:
It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.
В процессе установки может возникнуть следующая проблема:
apache2: Could not determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
Серверу нужно дефолтное доменное имя. Если ошибка имела место быть, редактируем файл:
sudo nano /etc/apache2/apache2.conf
добавляем в конец файла строку со следующим содержимым:
ServerName localhost
Сохраняем изменения в файле (Ctrl + O, затем Enter, затем Ctrl + X).
Создание виртуального хоста
В структуре сервера apache2, каждый сайт имеет свою независимую конфигурацию, создадим новый сайт с локальным доменом. Для этого нужно поместить файл кофигурации сайта в директорию /etc/apache2/sites-available. Назовём файл site.conf и откроем его, после создания, на редактирование:
sudo touch /etc/apache2/sites-available/site.conf
sudo nano /etc/apache2/sites-available/site.conf
Раньше можно было называть файл конфигурации как угодно, например site.loc, теперь требуется расширение .conf
Запишем в файл конфигурации необходимые команды, которые можно расширять или наоборот не указывать:
<VirtualHost 127.0.0.10:80> ServerAdmin admin@site.loc ServerName site.loc ServerAlias www.site.loc Options -Indexes AddDefaultCharset utf-8 DocumentRoot /var/www/site.loc/public_html ErrorLog /var/www/site.loc/logs/error.log CustomLog /var/www/site.loc/logs/access.log combined AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml AddType application/x-httpd-php-source .phps </VirtualHost>
Файлы сайта можно положить в директорию /var/www или /srv/www, в зависимости от выбора пути в файле конфигурации должны совпадать с реальным положением вещей. Создадим структуру папок, например в директории /var/www:
sudo mkdir -p /var/www/site.loc/public_html
sudo mkdir /var/www/site.loc/logs
Добавим адрес site.loc в файл hosts, откроем файл на редактирование:
sudo nano /etc/hosts
добавим строку с локальным IP-адресом сайта, таким же как и в site.conf:
127.0.0.10 site.loc
Теперь следует включить наш новый site.loc:
sudo a2ensite site.conf
На экране должна появится запись:
Enabling site site.
To activate the new configuration, you need to run:
service apache2 reload
Для надёжности перезагрузим сервер, операция reload будет полезна в будущем, когда нужно будет включить сайт не прерывая работу других сайтов сервера:
service apache2 restart
Если всё верно, по адресу http://site.loc находится новый сайт. Директория сайта пуста, поэтому там будет листинг самой директории, но чуть позже мы создадим там php-файл.
Установка PHP 5
Самый распространённый метод установки и использования PHP — как модуль сервера (в отличии от CGI). Установка и активация модуля достаточно проста:
sudo apt-get install libapache2-mod-php5
sudo a2enmod php5
Перезагружаем изменения:
sudo service apache2 restart
Проверим корректность установки PHP, для этого нужно создать в корне нашего сайта тестовый файл:
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 на нашем сервере.
Можно было бы назвать файл index.php, тогда бы он отрабатывался при заходе в корень домена site.loc. Я бы не рекомендовал оставлять phpinfo-файл в прямом доступе, т.к. это сильно компрометирует безопасность всего сервера.
Несколько советов по первоначальной настройке php-интерпретатора:
- Файл конфигурации можно найти в phpinfo, значение «Loaded Configuration File», в моём случае это «/etc/php5/apache2/php.ini»;
- Установите значение «short_open_tag = On» в файле php.ini и перезагрузите сервер, это позволит использовать сокращённый синтаксис php;
- Включиет mod_rewrite «sudo a2enmod rewrite» и перезагрузите сервер, это позволит создать ЧПУ. В конфигурацию VirtualHost полезно добавить
<Directory "/var/www/site.loc">
для манипуляцией «RewriteEngine On» из файла .htaccess, в некоторых случаях отсутствие такой директивы не позволит управлять ЧПУ посредствам mod_rewrite.
AllowOverride All
</Directory>
Установка сервера MySQL и phpMyAdmin
Установим основные пакеты MySQL:
sudo apt-get install mysql-server php5-mysql
В процессе установки появится диалог ввода пароля для пользователя root базы данных, введём любой безопасный пароль.
Раньше требовалось устанавливать модуль libapache2-mod-auth-mysql, но в версии Ubuntu 13.10 этот пакет отсутствует
Установка phpMyAdmin
Теперь установим phpmyadmin, для удобной работы с базой данных:
sudo apt-get install phpmyadmin
В процессе установки появится диалог выбора сервера, как правило apache2 и lighttpd. В нашем случае мы устанавливали apache2, его и выбираем.
Следующий этап установки phpmyadmin — настройка базы данных для корректной работы пакета. По этому случаю появится диалоговое окно, отвечаем утвердительно. После этого вводим пароль административного пользователя базы данных и пароль приложения phpmyadmin. Пароли следует придумать самому и желательно их не забывать.
Чтобы к интерфейсу phpMyAdmin можно было обратиться из браузера по адресу http://localhost/phpmyadmin, откроем на редактирование файл конфигурации сервера Apache:
sudo nano /etc/apache2/apache2.conf
И добавим в конец файла строку:
Include /etc/phpmyadmin/apache.conf
Перезагрузим сервер:
sudo service apache2 restart
На этом установка завершена. Теперь сайт site.loc доступен на локальном сервере и может подключаться к базам данных, которые легко создать в интерфейсе phpMyAdmin.
Инструкция написана на основе англоязычной документации Ubuntu ApacheMySQLPHP
в этих ваших убунтах все проще:
sudo tasksel install lamp-server
Разработчику важно понимать механику процесса =)