Это старая версия документа.


Статья основана на: https://help.ubuntu.com/community/ApacheMySQLPHP

Заметка поможет установить и настроить LAMP (Linux-Apache-MySQL-PHP) сервер в Ubuntu включающий Apache 2, PHP 5, и MySQL 5.0.

Установка стандартного набора LAMP

Начиная с Ubuntu 7.04 (Feisty Fawn) поумолчанию установлена полезная утилита Tasksel(англ.). Она поможет вам установить LAMP. Просто выполним команду:

sudo tasksel install lamp-server

При установке будет запрошен пароль для создания администратора БД MySQL.

Удаление LAMP

Для удаления LAMP вам придется удалить его компоненты отдельно:

apache2 apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-php5 libapr1 libaprutil1 libdbd-mysql-perl 
libdbi-perl libmysqlclient15off libnet-daemon-perl libplrpc-perl libpq5 mysql-client-5.0 mysql-common mysql-server
mysql-server-5.0 php5-common php5-mysql

Установка Apache 2

Если требуется установить только веб-сервер Apache 2 используйте любой метод для того, чтобы установить пакет apache2. Для того, чтобы Apache заработал его следует перезапустить:

sudo /etc/init.d/apache2 restart

Возможные ошибки

Если при запуске появляется следующая ошибка
apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
запустите свой любимй текстовый редактор (например sudo nano или gksu gedit) и создайте файл /etc/apache2/conf.d/fqdn , со следующим содержанием:

ServerName localhost

Это так же можно сделать выполнив комманду:

echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

Виртуальные хосты

Apache2 позволяет создавать различные конфигурационные файлы для сайтов. Они находятся в папке /etc/apache2/sites-available. По-умолчанию создается только один сайт default, на который можно зайти введя в браузере http://localhost или http://127.0.0.1.

Директория для файлов сайта находится в /var/www . Необходимы права root для доступа к этой папке. Но вы можете изменить права на нее командой

sudo chown -R $USER:$USER /var/www 

Вы также можете создать свои сайты.

Для примера мы создадим новый сайт в папке /home/user/public_html/ :

  • Создаем копию стандартного конфиг-файл сайта и переименуем его
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mysite 
  • Редактируем новый конфиг-файл в текстовом редакторе «sudo nano» в консоли или «gksudo gedit» , для примера: gksudo gedit /etc/apache2/sites-available/mysite
  • Изменяем параметр DocumentRoot на новое месторасположение сайта. Для примера, /home/user/public_html/
  • Изменяем параметр Directory, заменив <Directory /var/www/> на <Directory /home/user/public_html/>
  • Вы можете иметь раздельные log-файлы для ваших сайтов. Для этого измените ErrorLog и CustomLog параметры.
  • Сохраняем файл.

Теперь вы можете деактивировать ваш старый сайт и включить новый. Ubuntu содержит две маленькие утилиты для помощи в этом: a2ensite (apache2enable сайт) и a2dissite (apache2disable сайт).

sudo a2dissite default && sudo a2ensite mysite

Теперь осталось только перезапустить Apache2:

sudo /etc/init.d/apache2 restart

Если вы не создали папку /home/user/public_html/ , то получите сообщение с предупреждением

Для проверки вашего нового сайта создайте файл в папке /home/user/public_html/ :

echo '<b>Hello! It is working!</b>' > /home/user/public_html/index.html

И откройте в браузере адрес http://localhost/

Установка PHP 5

Чтобы установить модуль PHP для Apache используйте любой метод для того, чтобы установить пакет libapache2-mod-php5. Включить модуль PHP 5 в Apache можно выполнив:

sudo a2enmod php5

Это создаст символическую ссылку /etc/apache2/mods-enabled/php5 указывающую на /etc/apache2/mods-availble/php5 . Если не вы используете устаревшие в PHP короткие теги <? (что крайне нерекомендуемо) вместо <?php откройте от имени суперпользователя файл /etc/php5/apache2/php.ini , найдите в нем строчку

short_open_tag = On

и замените ее на

short_open_tag = Off

Это заставит игнорировать открывающие теги <?xml в файлах, обрабатываемых PHP.

Для того, чтобы изменения вступили в силу перезапустите Apache

sudo service apache2 restart

Проверка PHP

В папке /var/www создайте файл test.php , дайте права на чтение из него всем (или хотя бы пользователю apache) и запишите в него следующую строку:

<?php phpinfo(); ?>

Теперь попробуйте в своем браузере перейти на страницу http://localhost/test.php . Если вы видите описание установленного PHP, значит вы все настроили правильно.

Возможные ошибки

Ваш браузер предлагает вам скачивать PHP-страницы, а не показывает вам их? Если Apache не обрабатывает PHP-страницы после того как вы ео перезапустили, попробуйте установить пакет libapache2-mod-php5 . Обычно он устанавливается вместе с пакетом php5, но он может быть удален изза конфликта пакетов, которым нужна другая версия PHP.

Если при выполнении команды sudo a2enmod php5 вы получаете в ответ

This module does not exist!

попробуйте полностью удалить пакет libapache2-mod-php5

sudo apt-get purge libapache2-mod-php5

и установить его заново.

Не забывайте очищать кеш браузера перед тем как снова тестировать свой сайт.

Помните, что Apache будет обрабатывать файл только если URI начинается с http:// . Если адрес начинается с file:// , то файл будет отображатся напрямую браузером, по этому вы увидите только CSS и (X)HTML, но не PHP. Если вы не конфигурировали виртуальные хосты, то локальный адрес будет иметь вид http://127.0.0.1 , http://localhost или http://ваш_IP .

Установка MySQL и его модулей для PHP 5

Чтобы установить MySQL используйте любой метод для того, чтобы установить пакеты mysql-server libapache2-mod-auth-mysql php5-mysql.

PhpMyAdmin

Все задачи которые требуется выполнить при момощи MySQL можно делать используя графический интерфейс программ phpmyadmin. Устанавливаем утилиту

sudo apt-get install phpmyadmin

При установке она запросит пароли которые были заданы при установке MySQL.

Зайти в него можно с адреса http://localhost/phpmyadmin/

Полезное

Конфиги:

gksudo gedit /etc/apache2/apache2.conf
gksudo gedit /etc/php5/apache2/php.ini

FAQ

Как включить отображение ошибок PHP?

В используемом конфиге php.ini, точное местоположение которого подскажет функция phpinfo() (для дефолтного апача например /etc/php5/apache2/php.ini). Если не выключал log_errors и установлен достаточный уровень error_reporting (по умолчанию E_ALL & ~E_DEPRECATED), то в логе сайта все ошибки будут отображены. Если же интересует вывод ошибок в результирующую страницу, то нужно включить display_errors.