Главная >> Сервер >> Установка LAMP Ubuntu 16.04

Установка LAMP Ubuntu 16.04

Linux - отличная платформа для создания и тестирования веб-сайтов. Учитывая, что большинство веб-серверов используют Linux в качестве операционной системы, то и тестировать сайты лучше в этой системе, с использованием тех же инструментов, даже если это домашний компьютер. Намного удобнее иметь всё под рукой и не боятся повредить сайт на сервере.

Сегодня мы поговорим о LAMP. На самом деле это не программа, это стек программ с открытым исходным кодом, необходимых для работы веб-сайтов. Название формальное и происходит от первых букв названий входящих туда программ: Linux, Apache, MySQL, PHP - а вместе LAMP, это те программы, которые нужно установить и настроить, для того, чтобы начать разрабатывать сайты или веб-приложения на домашнем компьютере. Linux - тут всё понятно, это наша операционная система, Apache - веб-сервер, MySQL - программа для управления базами данных, PHP - на данный момент самый популярный язык для веб-программирования.

В этой инструкции будет рассмотрена установка LAMP Ubuntu 16.04. Мы рассмотрим, как установить Apache 2.4, MariaDB в качестве базы данных MySQL и самую новую версию языка PHP 7. Для начала будет выполнена установка Apache Ubuntu 16.04, так как это главный компонент всей системы, а уже потом подключим к нему дополнительные компоненты.


Содержание статьи

Установка Apache Ubuntu 16.04

Apache - это кроссплатформенный веб-сервер с открытым исходным кодом. Он поддерживает все необходимые функции веб-сервера, включая CGI, SSL, и виртуальные домены.

Установить Apache в Ubuntu очень просто, для этого достаточно выполнить:

sudo apt-get install apache2

После установки добавим программу в автозагрузку:

sudo systemctl enable apache2

И запустим веб-сервер сейчас:

sudo systemctl start apache2

lamp

Теперь можно проверить, что получилось, откройте браузер и наберите в адресной строке localhost:

lamp1

Как видите, установка apache ubuntu 16.04 завершена, и веб-сервер уже работает. Но это ещё не всё. Если у вас один сайт, который нужно тестить на локальной машине, то всё отлично. Но если их несколько, то собирать их все в подпапках веб-сервера не совсем удобно, да и не все движки нормально относятся к этому. Потому давайте рассмотрим, как настроить виртуальные хосты.

Создайте новую папку для нашего виртуального хоста:

sudo mkdir /var/www/test.site

Дадим права на доступ:

sudo chmod -R 755 /var/www

Необходимо создать небольшой файл, index.html, чтобы он открылся, когда вы запустите этот сайт:

sudo vi /var/www/test.site/public_html/index.html

<html>
<head>
<title>Welcome to Test!</title>
</head>
<body>
<h1>Success! Virtual host is working!</h1>
</body>
</html>

Теперь можно добавлять виртуальный хост, для этого создайте файл и наполните его содержимым:

sudo vi /etc/apache2/sites-available/test.site.conf

<VirtualHost *:80>
ServerName test.site
ServerAlias www.test.site
ServerAdmin webmaster@localhost
DocumentRoot /var/www/test.site/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Вот что значат некоторые строки:

  • ServerName - имя нашего сайта, виртуального хоста
  • ServerAlias - сайт будет доступен также по этому имени
  • DocumentRoot - корневой каталог с файлами сайта

Теперь сохраните файл, далее нужно активировать наш хост:

sudo a2ensite test.site.conf

Перезапускаем веб-сервер:

sudo systemctl restart apache2

Теперь необходимо завернуть трафик с этого домена на локальный сервер, для этого добавьте строчку в /etc/hosts:

sudo vi /etc/hosts

127.0.0.1 test.site

Откройте браузер и в адресной строке наберите test.site:

lamp2

Кроме того, мы можем включить поддержку ssl для нашего веб-сервера. Для этого выполните:

a2enmod ssl
a2ensite default-ssl

После этого нужно будет перезагрузить веб-сервер:

sudo systemctl restart apache2

Теперь вы можете проверить работу SSL, набрав адрес https://localhost.

lamp20

Браузер не доверяет нашему сертификату, поскольку он самоподписанный, но мы можем спокойно добавлять его в исключения, это ведь наш сертификат. Теперь работает:

lamp21

Установка PHP 7

Без языка программирования установка и настройка LAMP в Ubuntu будет не завершена. PHP - это самый популярный язык программирования в веб. Его название - это рекурсивный акроним (PHP: Hypertext Preprocessor). Кроме того, что этот язык используется в веб, его можно применять как язык общего назначения, язык сценариев.

Установка PHP 7  в Ubuntu 16.04 выполняется следующей командой:

sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi  php7.0 libapache2-mod-php7.0

Если вы хотите установить все доступные модули PHP, чтобы в будущем не было проблем, можно выполнить команду:

sudo apt-get install php*

После завершения установки проверим версию PHP:

php -v

lamp3

Теперь пора проверить, как всё работает. Для этого создайте файл со следующим кодом на PHP:

sudo vi /var/www/test.site/public_html/test.php

<?php phpinfo(); ?>

lamp5

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

sudo systemctl restart apache2

Откройте ещё раз наш сайт в браузере, на этот раз нас интересует страница test.php:

lamp4

Установка PHP 7 в Ubuntu 16.04 завершена, и всё очень хорошо работает. Но нужно ещё кое-что настроить, а именно включить отображение ошибок в PHP. Иначе при возникновении ошибки вы увидите просто пустую страницу. Для этого откройте файл /etc/php/7.0/apache2/php.ini, найдите строку display_errors = Off и поменяйте off на on:

vi /etc/php/7.0/apache2/php.ini

lamp6

Теперь переходим к следующему этапу.

Установка MySQL Ubuntu 16.04

Базы данных используются сейчас почти в каждом движке интернет сайтов. Поэтому важно иметь на своём компьютере и это программное обеспечение. Установка LAMP Ubuntu 16.04 не может обойтись без базы данных, но в этой инструкции вместо MySQL мы будем использовать её улучшенную и оптимизированную версию - MariaDB. Это очень надёжный и масштабируемый сервер SQL со множеством улучшений и усовершенствований.

Установка MariaDB Ubuntu 16.04 выполняется с помощью команды:

sudo apt-get install mariadb-server mariadb-client

Когда установка MySQL Ubuntu 16.04 будет завершена, мы можем переходить к настройке базы данных, для этого выполните команду:

sudo mysql_secure_installation

Сначала необходимо ввести текущий пароль root: просто нажимаем Enter, поскольку шифр ещё не задан:

lamp7

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

lamp8

Затем отключаем гостевые аккаунты:

lamp9

Отключаем удалённый доступ через root:

lamp10

Удаляем тестовые базы данных:

lamp11

Перезаписываем таблицы привилегий:

lamp12

Вот и всё, установка MySQL в Ubuntu 16.04 завершена, и база данных готова к работе.

Установка Phpmyadmin в Ubuntu 16.04

Установка и настройка LAMP в Ubuntu 16.04 также будет включать инсталляцию Phpmyadmin. Phpmyadmin - это бесплатный инструмент с открытым исходным кодом для реализации веб-интерфейса управления базами данных MySQL. Он доступен в официальных репозиториях Ubuntu 16.04, установим его с помощью команды:

sudo apt-get install phpmyadmin php-mbstring php-gettext

Но тут уже во время установки потребуется немного конфигурации. Сначала нужно выбрать наш веб-сервер:

lamp14

Для перемещения по пунктам используйте стрелки вверх/вниз, для выбора - пробел, для переключения - Tab.

В следующем окне мастера нам предлагают настроить базу данных Рhpmyadmin, соглашаемся:

lamp15

Вводим пароль, который будет использован для подключения Рhpadmin к базе данных:

lamp16

Подтверждение пароля:

lamp17

По умолчанию в MariaDB есть плагин под названием unix_socket, он предотвращает вход под именем пользователя root в Рhpmyadmin или с помощью других TCP-интерфейсов. Для его отключения выполните:

sudo -i
echo "update user set plugin='' where User='root'; flush privileges;" | mysql -u root -p mysql

Когда установка Рhpmyadmin в Ubuntu 16.04 будет завершена, откройте браузер и наберите в адресной строке localhost/phpmyadmin:

lamp18

Всё работает, для доступа к базе данных вы можете ввести логин root и его пароль, который задали на этапе настройки MySQL:

lamp19

Выводы

Вот и всё: установка LAMP в Ubuntu 16.04 завершена успешно. Теперь всё работает, и вы можете приступать к созданию своих проектов.

79 комментариев к “Установка LAMP Ubuntu 16.04”

  1. в статье ошибка sudo vi /var/www/test.site/public_html/index.html каталога public_html еще не существет, он не создаст файл.
    Я первый раз делал слепо, и сначало не понял почему. и лучше использовать более понятный редактор чем vi , хотябы нано, я к примеру вообще сначало не понял, как сохранить то что написал в vi

    это же статья для новичков, и обьяснения должны быть разжованы

    Ответить
  2. MariaSQL не лучшая замена MySQL. В данный момент. Когдя дотянут до 95% совместимости, тогда да. А щас это грабли.

    Ответить
  3. Жаль что автор не додумался расписать как создавать файлы.
    Мануал оказался не подъемный.
    Ну вставил я sudo vi /var/www/test.site/public_html/index.html а дальше что? Кароч, говно ищите нормальные мануалы, их полно в нете.

    Ответить
  4. Установил, потом решил поменять MariaDB на MySQL, удалить получилось, но вот установить не вышло. Пришлось вернуться. Если вам будет не трудно, то хотелось бы мануальчик как поменять БД на MySQL. Спасибо

    Ответить
  5. Спасибо за статью, начали хорошо, а вот закончили довольно скомкано. По вашему пример установил все, но не смог авторизоваться для работы с phpMyAdmin с сообщением #1698 - Access denied for user 'root'@'localhost'.
    На AskUbuntu.com рассказали что d MySQL 5.7 был изменина модель безопасности и подключение под root требует sudo, поэтому root под phpMyAdmin не является пользователем. Чтобы решить это недоразумение, нужно завести нового пользователя и назначить ему права root:

    1. Connect to mysql
    sudo mysql --user=root mysql

    2. Create a user for phpMyAdmin
    Run the following commands (replacing some_pass by the desired password):

    CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
    GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;

    If your phpMyAdmin is connecting to localhost, this should be enough.

    Ответить
  6. на
    $ sudo -i
    $ echo "update user set plugin='' where User='root'; flush privileges;" | mysql -u root -p mysql
    отвечает:
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    Ответить
  7. Беда с php. Вроде бы все поставил, но язык не работает. Даже при проверки версии показывает что все гуд, а в итоге печаль 🙁

    Ответить
  8. Пофиксил, если это можно так назвать.

    sudo apt-get purge php*
    sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi php7.0 libapache2-mod-php7.0
    Вся проблема была в том, что я пытался инсталировать пхп командой sudo apt-get install php* и игноривал (не замечал ошибку).

    Ответить
  9. Здравствуй дорогой админ , полезная статья так получилась , настроил на локальном пк все как надо , тестовый сайт заработал . Хотелось бы узнать , есть ли какой нибудь мануал , чтобы сделать сайт на локалке доступным в сети интернет (wi-fi +pc с сервером ) . В сети ничиго путного пока не нашел .

    Ответить
  10. А как же "sudo a2enconf phpmyadmin" почему не описали? Я, к примеру, немного занервничал, когда после всего вами описанного и проделанного мной при переходе по адресу localhost/phpmyadmin получас страницу 404 !! Ну и, конечно, спасибо за статью!

    Ответить
  11. Народ, подскажите, пожалуйста, ламеру. А через ssh реально так на удалённой машине установить lamp? Или, может, не с помощью ssh?

    Ответить
  12. Помогите разобраться у меня ServerAlias http://www.test.site не работал. Браузер ругался мол Не удается найти DNS-адрес сервера http://www.test.site. Но когда в hosts к строчке 127.0.0.1 test.site добавил http://www.test.site то все заработало. Тобеш получилось так 127.0.0.1 test.site http://www.test.site
    Собственно вопрос в этом и состоит, нужно ли при указании адреса в ServerAlias добавлять этот же адрес еще и в hosts? Просто у Вас в hosts прописан только test.site, а в файле
    ServerName test.site
    ServerAlias http://www.test.site
    За ранее спасибо за ответ.

    Ответить
  13. Не стал ставить mariadb. Поставил mysql. При попытке зайти в phpmyadmin выдаёт ошибку "The mbstring extension is missing. Please check your PHP configuration." Рекомендуемые строки раскомментил, но ничего не изменилось.

    Ответить
  14. $ a2enmod ssl
    /etc/apache2/mods-enabled/socache_shmcb.load: Permission denied

    $ a2ensite default-ssl
    Could not create /etc/apache2/sites-enabled/default-ssl.conf: Permission denied

    тут, кажется, не хватает sudo?
    $ sudo a2enmod ssl
    $ sudo a2ensite default-ssl

    Ответить
  15. Админ подскажи, всё сделал по статье, всё работает. Я так понимаю теперь на локальном сервере можно создать не ограничение количество тестовых сайтов. Но что-то я не совсем догоняю, как это сделать. Может это из-за того, что я копировал файлы из архива с CMS WordPress непосредственно в программе Nemo, а не через терминал? Я создал через терминал следующие папки /var/www/moisayt.ru/public_html. В /etc/hosts дописал следующую строку: "127.0.0.1 http://www.moisayt.ru". Запустить установщик вордпресс не удалось. По следующему пути /etc/apache2/sites-available создал файл moisayt.ru.conf со следующим содержанием:
    "
    ServerName moisayt.ru
    ServerAlias http://www.moisayt.ru
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/moisayt.ru/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    "
    Но сайт так и не заработал. Что я не так сделал? Подскажи пожалуйста.

    Ответить
      • По следующему пути /etc/apache2/sites-available создал файл moisayt.ru.conf со следующим содержанием(в прошлом комментарии удалил http:// из 2-ой строки. сейчас этот вариант:
        "
        ServerName moisayt.ru
        ServerAlias http://www.moisayt.ru
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/moisayt.ru/public_html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        "
        Я не знаю, как добавит скрин. Могу сказать на словах. Выводится страница подтверждающая работа Apathe2 с заголовком "Apache2 Ubuntu Default Page".

        Ответить
  16. Привет, а какая версия сайта будет открываться если есть локальная и веб-версия одного и того же сайта? И как в таком случае с ними работать допустим сейчас мне надо чтобы открывался сайт на локалке, а чуть позже веб-версия, что нужно сделать?

    Ответить
  17. Помогите пожалуйста ! Инсталлятор движка по умолчанию не открывается(php). Пишет You don't have permission to access / on this server. В логах такая ошибка : AH01276: Cannot serve directory /var/www/v
    hosts/mysite.ru/: No matching DirectoryIndex (index.php) found, and server-generated directory index forbidden by Options directive
    При это если прописать файл инсталлятора ручками через слеш после сайта, то он нормально открывается . На старых убунтах всё-вроде было нормально, вот пришлось из-за нового движка , а точнее php ставить 16-ю, теперь копаюсь 🙁

    Ответить
  18. Все работает спасибо, но подскажите пожалуйста, раньше у меня была винда с опенсервером - там была папка с файлами писем которые отправлялись с локальных сайтов (/openServer/userdata/temp/email в настройках openserver можно было выбрать расширение txt или eml). Здесь есть такая папка или надо отдельно ставить почтовый сервер?

    Ответить
  19. Народ, кто еще не в курсе и не понимает почему на заходит в phpmyadmin при вводе логин = root (выдает ошибку) хотя пароль вводите верно. Весь фокус в том что логин по молчанию теперь не root а phpmyadmin !!! Будьте внимательны. А то море статей, а пока не залез в файл конфигов, думал голову сломаю.)))

    PS: Автор, пропиши про новый логин по умолчанию в статье. Тебе не сложно а многим время с экономит.)))

    Ответить
  20. Здравствуйте Админ ваш очень хорошо помогает новичкам. Есть просьба не могли ли вы не писать доллар вместе с командами просто удобно взял скопировал и все. Спасибо за понимание

    Ответить
  21. Все прекрасно работает по инструкции. А вот как решить задачу для "параноиков"?
    А именно:
    1. Есть зашифрованный при установке (linux mint 18.2) раздел /home.
    2. С точки зрения безопасности все файлы проекта правильно хранить на зашифрованном разделе.
    3. НО! Этот раздел не виден апачу. И даже после входа пользователя, т.е. раздел расшифрован - но ссылки на него из /var/www не работают.
    Это как-то решаемо?

    Ответить
  22. Здравствуйте, подскажите пожалуйста как зайти на сайт из хост-системы (ubuntu server установленна в virtual box). Гостевой ОС задан статический ip, но зайти по нему получается только в phpMyAdmin (или подключиться в PuTTY). При этом в браузере гостя всё работает при вводе в адресную строку test.site.

    Ответить
  23. здравствуйте, я все седел, все работает, но теперь мне нужно сделать переадресацию, что бы мой сайт открывался на другом компьютере с поморью ip 127.0.0.1 . Помогите это сделать

    Ответить
  24. Благодарю, очень хорошая статья!
    Еще хочу спросить: этот сервер может работать без подключения к сети? Выдает не удалось загрузить станицу при отключенной сети.

    Ответить
  25. Дополнение к статье.
    Если вы используете apache2, установили phpmyadmin, но при попытке зайти в панель по адресу http://example.ru/phpmyadmin у вас показывается 404 страница, то:

    1) посмотрите, есть ли в директории /etc/apache2/conf-available/ файл phpmyadmin.conf, если его нет, то продолжаем читать комментарий дальше, если он есть, то придется гуглить;

    2) далее идем в директорию /etc/phpmyadmin/ проверяем на наличие файл apache.conf, это файл конфигурации, если он есть, то скорее всего дальнейшее прочтение этого комментария вам поможет, если его нет, то скорее все го вы не правильно проинсталлировали пакет, удалите его и установите еще раз, если не помогает, то придется гуглить самостоятельно;

    3) и так, нам нужно "скормить" найденный файл конфигурации серверу apache2, делаем это следующей командой
    $ sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf

    4) затем включите конфигурационный файл и обновить конфигурацию сервера
    $ sudo a2enconf phpmyadmin
    $ sudo systemctl reload apache2

    После этого все должно заработать. Буду рад, если это кому-нибудь поможет

    Ответить
  26. Для тех, у кого при первом открытии phpMyAdmin вылазила ошибка "the mbstring extension is missing please check your php configuration":
    1. php -v
    узнаем оттуда текущую версию php, запоминаем две первые цифры. Например, если у вас PHP 7.0.30-что-то там, то берем 7.0
    2. sudo apt-get install php7.0-mbstring
    соответствено, если у вас вдруг не 7.0, то вписываем туда вашу версию
    3. systemctl restart apache2
    Теперь phpMyAdmin должен работать.

    Ответить
  27. Уважаемые Господа.
    Поставил Apache +PHP дальше ставить не стал. все проекты созданы под MySQL. Вопрос - есть ли мануал по установке не этой БД? Т.е, ставить эту БД для меня безперспективно.

    Ответить
  28. У меня Apache не читал .htaccess
    Правил конфиг апача /etc/apache2/apache2.conf
    В секциях:

    Options FollowSymLinks
    AllowOverride None

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted

    Заменил AllowOverride None на AllowOverride All
    И все заработало после рестарта апача: sudo service apache2 restart

    Ответить
  29. После команды: sudo vi /var/www/test.site/public_html/index.html
    я завис 🙂 Скопировал и вставил содержимое этого файла
    Подскажите как сохранить и вернутся в терминал?

    Ответить
  30. Добрый день. При попытке стартовать apache2
    sudo systemctl start apache2
    вылетает ошибка "System has not been booted with systemd as init system (PID 1). Can't operate."

    Максимум что получилось нагуглить, проверить этой комондой "file /sbin/init" что в качестве системы инициализации:
    mrswylet@DESKTOP-JCESP6Q:~$ file /sbin/init
    /sbin/init: symbolic link to /lib/systemd/systemd

    система у меня следующая
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=18.04
    DISTRIB_CODENAME=bionic
    DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"

    Ответить
  31. То самое чувство, когда самую полезную ифнормацию нашёл не в статье, а в коментах. Всем отписавшимся громная благодарность.

    Ответить
  32. Блин... Лет пять назад решил установить и настроить LAMP - скачал первый попавшийся мануал, скопировал команды, запустил - всё работает. Сегодня - сколько в сети мануалов, да вот ни один не работает... Печалька...
    Дошел до "Откройте браузер и в адресной строке наберите test.site:" - и всё, сервер не найден, хотя апач откликается, все файлы лежат, где указано (убунту 16.04, если что)...

    Ответить
  33. .site/phpmyadmin не запустился. При установке php-gettext не нашел такого установщика. Скачал со сторонних сайтов, но воз и ныне там. При попытке соединения по https://localhost в нынешних браузерах не добавляет в исключения. Статья, конечно старенькая... Буду искать другие решения...

    Ответить

Оставьте комментарий