Установка и настройка Apache, PHP, MySQL, phpMyAdmin на Ubuntu 14.04 LTS + 16.04 LTS

UPD. Статья обновлена до актуальной версии 24.08.2016
Однажды я уже писал статью, о том как установить  Lamp  на убунту, но с тех пор многие компоненты изменились, и соответственно, их установка изменилась.

Большинство команд выполняем в терминале (Ctrl+Alt+T)

Шаг 1. Установка Apache.

$ sudo apt-get install apache2

Далее перейдите по адресу http://localhost и вы должны увидеть стартовую страницу apache.

apache

Apache — стартовая страница.

Для того, чтобы после каждой перезагрузки апача, не получать уведомления вида:

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

Откройте конфиг апача:

$ sudo nano /etc/apache2/apache2.conf

В конце файла добавьте строки:

ServerName 127.0.0.1

 

Шаг 2. Установка MySQL.

$ sudo apt-get install mysql-server mysql-client

В ходе установке, нужно задать пароль администратора баз данных.

mysql config

Установка пароля

Проверьте, установку:

$ sudo service mysql status

в ответ должны увидеть что-то типа если у вас Ubuntu 14.04:

$ mysql start/running, process 3470

Или если у вас Ubuntu 16.04:

1471984511297

Шаг 3. Установка PHP

Для Ubuntu 16.04

Внимание! Если у вас Ubuntu 16.04 и выше тогда перейдите СЮДА

Для Ubuntu 14.04

$ sudo apt-get install php5 php5-mysql libapache2-mod-php5

Шаг 3.1 Проверка работы PHP

Создадим файл test.php

$ sudo nano /var/www/html/test.php

Добавим следующее содержание

<?php
phpinfo();
?>

И откроем в браузере ссылку: http://localhost/test.php

Вы должны увидеть информацию о установленном php, его версию, модули, и т.д.

phpinfo

Информация о PHP

Шаг 3.2 Настройка php.ini

Откроем php.ini для редактирования.
Для Ubuntu 14.04

$ sudo nano /etc/php5/apache2/php.ini

Для Ubuntu 16.04 PHP 5.6

$ sudo nano /etc/php/5.6/apache2/php.ini

Для Ubuntu 16.04 PHP 7.0

$ sudo nano /etc/php/7.0/apache2/php.ini

Для Ubuntu 18.04 PHP 7.2

$ sudo nano /etc/php/7.2/cli/php.ini

Находим директиву short_open_tag , и включаем ее, заменяем off на on

Этим мы включили  возможность использования коротких тегов php: <? ?>

P.S Из-за этой настройки, я два вечера не мог разобраться, почему у меня не работал скрипт, и выдавал ошибку:

Parse error: syntax error, unexpected ‘}’ in …

Раньше данная директива по-умолчанию была включена

Шаг 4. Установка phpMyAdmin.

$ sudo apt-get install phpmyadmin

Отвечаем на все вопросы, заданные при установке.
Проверим установку, перейдя по адресу http://localhost/phpmyadmin/

Вы увидите страничку авторизации.

Вводим логин и пароль, заданный администратора баз данных, при установке MySQL.

phpmyadmin

phpMyAdmin — авторизация

Шаг 5. Настройка виртуальных хостов.

Для удобства я размещаю свои сайты в домашней директории.

Создадим каталог в котором будет размещены наши сайты.

$ mkdir www

Далее каталог нашего сайта.

$ mkdir www/site.com

Создадим тестовый файл

$ nano www/site.com/index.php

И напишем что-то для проверки:

<?php echo '<h1>Hello world</h1>'; ?>

Создаем новый виртуальных хост.

Копируем файл шаблона.

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site.com.conf

Открываем его для редактирования.

$ sudo nano /etc/apache2/sites-available/site.com.conf

Вставляем следующие строки:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName site.com
DocumentRoot /home/gansik/www/site.com
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/gansik/www/site.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Обратите внимание, не забудьте подставить свои данные.
gansik — имя моего пользователя

site.com — адрес моего сайта.

Включаем наш сайт

$ sudo a2ensite site.com

Перезагружаем apache

$ sudo service apache2 restart

Редактируем hosts, для того, чтобы мы могли зайти на сайт, по нашему адресу.

$ sudo nano /etc/hosts

В первой строке, после localhost, добавим адрес нашего сайта site.com 

hosts

Hosts

Сохраняем, закрываем, и переходим по адресу нашего локального сайта site.com  , в ответ мы должны увидеть Hello world.

На этом вся настройка завершена

Пара ошибок веб-сервера, после обновления до Ubuntu 13.10

На днях обновился до очередной новой версии Ubuntu 13.10 Saucy salamander. Все прошло без проблем и достаточно быстро (около 30 мин.).

Ubuntu-13-10-Saucy-Salamander-Has-Officially-Started

Ubuntu 13.10 Saucy Salamander

Не запускается apache

Перегрузился,  и попытался запустить свой локальный сайт.

Опа, а сайт то не открылся, веб-сервер не доступен.

Попытался запустить его вручную:

$ sudo /etc/init.d/apache2 start

В ответ ошибка:

$ sudo service apache2 restart
* Restarting web server apache2 [fail]
* The apache2 configtest failed.
Output of config test was:
AH00526: Syntax error on line 84 of /etc/apache2/apache2.conf:
Invalid command 'LockFile', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.

Решение

Открываем для редактирования конфиг апача, например через gedit:

$ sudo gedit /etc/apache2/apache2.conf

находим строку:

LockFile ${APACHE_LOCK_DIR}/accept.lock

И заменяем ее на :

Mutex file:${APACHE_LOCK_DIR} default

И снова запускаем апач. Сервер должен запустится.

$ sudo /etc/init.d/apache2 start

Не работает функция strtotime()

После удачно запуска веб-сервера снова попытался открыть свой сайт. Сайт открывался, но посыпались ошибки php функции strtotime:

Warning: strtotime() [function.strtotime]: It is not safe to rely on the system’s timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier…

Решение

Как видно из текста ошибки нам нужно установить значение date.timezone в конфигурации php.
Открываем для редактирования php.ini

$ sudo gedit /etc/php5/apache2/php.ini

Находим строку:

date.timezone

Раскомментируем ее, убрав точку с запятой (;) перед ней.
И подставляем значение своей временной зоны.
Например для Украины это «Europe/Kiev», для России — «Europe/Moscow», Беларусь — «Europe/Minsk»,
с полным списком можно ознакомится здесь: http://php.net/date.timezone
В итоге строка должна выглядеть вот так:

date.timezone = «Europe/Kiev»

Сохраняем и перезапускаем наш апач:

$ sudo /etc/init.d/apache2 restart

На этом и все. Теперь функция strtotime() должна корректно работать.