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
- Установка MySQL Ubuntu 16.04
- Установка Phpmyadmin в 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
Теперь можно проверить, что получилось, откройте браузер и наберите в адресной строке localhost:
Как видите, установка 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
Теперь можно добавлять виртуальный хост, для этого создайте файл и наполните его содержимым:
sudo vi /etc/apache2/sites-available/test.site.conf
Вот что значат некоторые строки:
- ServerName - имя нашего сайта, виртуального хоста
- ServerAlias - сайт будет доступен также по этому имени
- DocumentRoot - корневой каталог с файлами сайта
Теперь сохраните файл, далее нужно активировать наш хост:
sudo a2ensite test.site.conf
Перезапускаем веб-сервер:
sudo systemctl restart apache2
Теперь необходимо завернуть трафик с этого домена на локальный сервер, для этого добавьте строчку в /etc/hosts:
sudo vi /etc/hosts
Откройте браузер и в адресной строке наберите test.site:
Кроме того, мы можем включить поддержку ssl для нашего веб-сервера. Для этого выполните:
a2enmod ssl
a2ensite default-ssl
После этого нужно будет перезагрузить веб-сервер:
sudo systemctl restart apache2
Теперь вы можете проверить работу SSL, набрав адрес https://localhost.
Браузер не доверяет нашему сертификату, поскольку он самоподписанный, но мы можем спокойно добавлять его в исключения, это ведь наш сертификат. Теперь работает:
Установка 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
Теперь пора проверить, как всё работает. Для этого создайте файл со следующим кодом на PHP:
sudo vi /var/www/test.site/public_html/test.php
Осталось перезапустить Apache2:
sudo systemctl restart apache2
Откройте ещё раз наш сайт в браузере, на этот раз нас интересует страница test.php:
Установка 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
Теперь переходим к следующему этапу.
Установка 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, поскольку шифр ещё не задан:
Далее нажимаем у, чтобы задать новый пароль:
Затем отключаем гостевые аккаунты:
Отключаем удалённый доступ через root:
Удаляем тестовые базы данных:
Перезаписываем таблицы привилегий:
Вот и всё, установка 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
Но тут уже во время установки потребуется немного конфигурации. Сначала нужно выбрать наш веб-сервер:
Для перемещения по пунктам используйте стрелки вверх/вниз, для выбора - пробел, для переключения - Tab.
В следующем окне мастера нам предлагают настроить базу данных Рhpmyadmin, соглашаемся:
Вводим пароль, который будет использован для подключения Рhpadmin к базе данных:
Подтверждение пароля:
По умолчанию в 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:
Всё работает, для доступа к базе данных вы можете ввести логин root и его пароль, который задали на этапе настройки MySQL:
Выводы
Вот и всё: установка LAMP в Ubuntu 16.04 завершена успешно. Теперь всё работает, и вы можете приступать к созданию своих проектов.
Мне попадалось еще более простое решение:
sudo tasksel install lamp-server
Куда проще, ставим пакет tasksel так как он по дефолту не установлен:
sudo apt-get install tasksel
Далее запускаем тасксел:
sudo tasksel
и ставим LAMP в несколько кликов без ввода множества команд - http://storage3.static.itmages.com/i/16/0606/h_1465193158_3188170_7fd523bc0f.png
спасибо , это для меня важное открытие.
а как добавить phpmyadmin
в статье ошибка sudo vi /var/www/test.site/public_html/index.html каталога public_html еще не существет, он не создаст файл.
Я первый раз делал слепо, и сначало не понял почему. и лучше использовать более понятный редактор чем vi , хотябы нано, я к примеру вообще сначало не понял, как сохранить то что написал в vi
это же статья для новичков, и обьяснения должны быть разжованы
MariaSQL не лучшая замена MySQL. В данный момент. Когдя дотянут до 95% совместимости, тогда да. А щас это грабли.
Жаль что автор не додумался расписать как создавать файлы.
Мануал оказался не подъемный.
Ну вставил я sudo vi /var/www/test.site/public_html/index.html а дальше что? Кароч, говно ищите нормальные мануалы, их полно в нете.
Вообще-то додумался. Смотрим в правой колонке "Как пользоваться Vim". А вообще можно заменить Vi на nano.
а как все удалить?
Так же как и устанавливали, только вместо install используйте опцию purge.
не работает
Давно обнаружил для себя такую удобную штуку как MidnightComander - он и системные файлы по F4 нормально редактирует, и нагляден, и в терминале работает - что вам ещё нужно? 🙂
Установил, потом решил поменять MariaDB на MySQL, удалить получилось, но вот установить не вышло. Пришлось вернуться. Если вам будет не трудно, то хотелось бы мануальчик как поменять БД на MySQL. Спасибо
Спасибо за статью, начали хорошо, а вот закончили довольно скомкано. По вашему пример установил все, но не смог авторизоваться для работы с 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.
Было бы не плохо еще статью по установки wordpress. И у меня одного не работают формы обратная связь
А еще подтупляет в добавить коментарии иногда не могу ничего писать, в чем дело??
Какой браузер используете? И может используете какие-либо блокировщики рекламы, фильтры, прокси?
на
$ 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)
Не верный пароль пользователя mysql
Ее вижу картинок на сайте, вместо них "lamp №".
Чего-то не хватает браузеру Firefox?
Это ошибка на сайте, в некоторых статьях сбились картинки, скоро подправлю.
localhost/phpmyadmin =>> Page not found
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
sudo systemctl restart apache2
СПС)
Спасибо! Очень поезный комментарий, автор немного забыл дописать настройку phpmyadmin.
Вот у меня еще вылазит ошибка:
The mbstring extension is missing. Please check your PHP configuration.
Как ее убрать?
у меня не работает phpmyadmin сделал как написано. В чем может быть проблема?
Чувак вверху же ответ сделай как Andy написал
Беда с php. Вроде бы все поставил, но язык не работает. Даже при проверки версии показывает что все гуд, а в итоге печаль 🙁
В чем выражается нерабочесть?
Код отображается в окне браузера.
Пофиксил, если это можно так назвать.
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* и игноривал (не замечал ошибку).
Здравствуй дорогой админ , полезная статья так получилась , настроил на локальном пк все как надо , тестовый сайт заработал . Хотелось бы узнать , есть ли какой нибудь мануал , чтобы сделать сайт на локалке доступным в сети интернет (wi-fi +pc с сервером ) . В сети ничиго путного пока не нашел .
Из-за повсеместного использования провайдерами NAT это невозможно, разве что покупать белый IP адрес у провайдера.
Для тех, у кого не работает phpmyadmin
1. sudo nano /etc/apache2/apache2.conf
2. Добавьте в конце файла
Include /etc/phpmyadmin/apache.conf
Большое спасибо!
Спасибо большое! Админка заработала)
Ага, дописал в конфиг все заработало. Спасибо
Спасибо 🙂 за статью - с экономил массу времени - все стало и заработало - потратил 5 мин 🙂 респект!
А как же "sudo a2enconf phpmyadmin" почему не описали? Я, к примеру, немного занервничал, когда после всего вами описанного и проделанного мной при переходе по адресу localhost/phpmyadmin получас страницу 404 !! Ну и, конечно, спасибо за статью!
Спасибо за статейку, полезно, а по поводу прокидывания локалки в сеть советую https://tproger.ru/articles/ngrok-tutorial/
Отличная утилита, взял на вооружение. Спасибо!
Народ, подскажите, пожалуйста, ламеру. А через ssh реально так на удалённой машине установить lamp? Или, может, не с помощью ssh?
Да, вполне реально.
Спасибо, да вчера немного поискал и дошёл тоже к этому). Кстати, отличный сайт, так держать. Уже много для себя почерпнул.
Помогите разобраться у меня 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
За ранее спасибо за ответ.
Не стал ставить mariadb. Поставил mysql. При попытке зайти в phpmyadmin выдаёт ошибку "The mbstring extension is missing. Please check your PHP configuration." Рекомендуемые строки раскомментил, но ничего не изменилось.
php-mbstring установлен
$ 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
Админ подскажи, всё сделал по статье, всё работает. Я так понимаю теперь на локальном сервере можно создать не ограничение количество тестовых сайтов. Но что-то я не совсем догоняю, как это сделать. Может это из-за того, что я копировал файлы из архива с 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
"
Но сайт так и не заработал. Что я не так сделал? Подскажи пожалуйста.
Покажите скриншот окна браузера, когда вы открываете http://www.moisayt.ru
По следующему пути /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".
Привет, а какая версия сайта будет открываться если есть локальная и веб-версия одного и того же сайта? И как в таком случае с ними работать допустим сейчас мне надо чтобы открывался сайт на локалке, а чуть позже веб-версия, что нужно сделать?
Помогите пожалуйста ! Инсталлятор движка по умолчанию не открывается(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-ю, теперь копаюсь 🙁
Все работает спасибо, но подскажите пожалуйста, раньше у меня была винда с опенсервером - там была папка с файлами писем которые отправлялись с локальных сайтов (/openServer/userdata/temp/email в настройках openserver можно было выбрать расширение txt или eml). Здесь есть такая папка или надо отдельно ставить почтовый сервер?
Народ, кто еще не в курсе и не понимает почему на заходит в phpmyadmin при вводе логин = root (выдает ошибку) хотя пароль вводите верно. Весь фокус в том что логин по молчанию теперь не root а phpmyadmin !!! Будьте внимательны. А то море статей, а пока не залез в файл конфигов, думал голову сломаю.)))
PS: Автор, пропиши про новый логин по умолчанию в статье. Тебе не сложно а многим время с экономит.)))
Здравствуйте Админ ваш очень хорошо помогает новичкам. Есть просьба не могли ли вы не писать доллар вместе с командами просто удобно взял скопировал и все. Спасибо за понимание
Я собираюсь переделать стиль таким образом, что доллар не будет копироваться. Но когда я это сделаю не знаю.
Все прекрасно работает по инструкции. А вот как решить задачу для "параноиков"?
А именно:
1. Есть зашифрованный при установке (linux mint 18.2) раздел /home.
2. С точки зрения безопасности все файлы проекта правильно хранить на зашифрованном разделе.
3. НО! Этот раздел не виден апачу. И даже после входа пользователя, т.е. раздел расшифрован - но ссылки на него из /var/www не работают.
Это как-то решаемо?
Здравствуйте, подскажите пожалуйста как зайти на сайт из хост-системы (ubuntu server установленна в virtual box). Гостевой ОС задан статический ip, но зайти по нему получается только в phpMyAdmin (или подключиться в PuTTY). При этом в браузере гостя всё работает при вводе в адресную строку test.site.
здравствуйте, я все седел, все работает, но теперь мне нужно сделать переадресацию, что бы мой сайт открывался на другом компьютере с поморью ip 127.0.0.1 . Помогите это сделать
На сервере в файле /etc/hosts:
127.0.0.1 test.site
На хосте в файле /etc/hosts:
[ip сервера] test.site
Разве LAMPP не устанавливает все в одном пакете? почему устанавливаете по отдельности?
Благодарю, очень хорошая статья!
Еще хочу спросить: этот сервер может работать без подключения к сети? Выдает не удалось загрузить станицу при отключенной сети.
На Elemrntary OS LAMP встал без проблем. Спасибо автору!
Может я рукожоп, но у меня майадмин не запустился пока я не выполнил
sudo ln -s /usr/share/phpmyadmin /var/www/test.site/public_html/
Дополнение к статье.
Если вы используете 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
После этого все должно заработать. Буду рад, если это кому-нибудь поможет
Помогло спасибо!
Автор, спасибо за статью, очень здорово!
Ты крут
Для тех, у кого при первом открытии 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 должен работать.
спасибо всЁ заработало!!!
Всё это не работает. Не появилось у меня Success! Virtual host is working! А я всё делал по инструкции.
Уважаемые Господа.
Поставил Apache +PHP дальше ставить не стал. все проекты созданы под MySQL. Вопрос - есть ли мануал по установке не этой БД? Т.е, ставить эту БД для меня безперспективно.
У меня 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
После команды: sudo vi /var/www/test.site/public_html/index.html
я завис 🙂 Скопировал и вставил содержимое этого файла
Подскажите как сохранить и вернутся в терминал?
Добрый день. При попытке стартовать 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"
То самое чувство, когда самую полезную ифнормацию нашёл не в статье, а в коментах. Всем отписавшимся громная благодарность.
Блин... Лет пять назад решил установить и настроить LAMP - скачал первый попавшийся мануал, скопировал команды, запустил - всё работает. Сегодня - сколько в сети мануалов, да вот ни один не работает... Печалька...
Дошел до "Откройте браузер и в адресной строке наберите test.site:" - и всё, сервер не найден, хотя апач откликается, все файлы лежат, где указано (убунту 16.04, если что)...
Вообще все классно , второй раз переустанавливал линукс и все получилось с первого раза
Спасибо!! Всё работает с первого раза!
.site/phpmyadmin не запустился. При установке php-gettext не нашел такого установщика. Скачал со сторонних сайтов, но воз и ныне там. При попытке соединения по https://localhost в нынешних браузерах не добавляет в исключения. Статья, конечно старенькая... Буду искать другие решения...