- Если у вас Windows, то вам подойдёт статья "Установка веб-сервера (Apache 2.4, MySQL 5.7, PHP 7, phpMyAdmin) на Windows 10".
- Если у вас Arch Linux, то вам подойдёт статья "Установка LAMP (Linux, Apache, MySQL/MariaDB, PHP7 и phpMyAdmin) в Arch Linux / BlackArch".
В этой статье будет показано, как установить веб-сервер на Ubuntu 16.10 или 17.04. Кроме веб-сервера Apache мы установим PHP 7, MariaDB (полный аналог MySQL с дополнительными улучшениями) и phpMyAdmin. Эта инструкция применима к Ubuntu 16.10 или 17.04 серверной и настольной версий. Т.е. вы можете установить веб-сервер как на свой домашний компьютер, так и на виртуальный частный сервер (VPS).
Если вам нужен надёжный и недорогой VPS/VDS, то вы найдёте их по ссылкам: отечественный (имеются пробные периоды) и иностранный (при регистрации по ссылке $10 уже на счету)
LAMP - это аббревиатура от Linux, Apache, MySQL/MariaDB, PHP. Веб-сервер позволит вам прямо на локальной машине устанавливать и тестировать WordPress, Joomla, Drupal и свои сайты. Эта связка является стандартной для большинства веб-хостингов и именно эти программы обычно требуются для работы веб-сайтов.
Шаг 1: Установка Apache на Ubuntu 16.10 или 17.04
1. Начнём с установки веб-сервера Apache из официальных репозиториев Ubuntu. Это делается командой:
sudo apt install apache2 vim # ИЛИ sudo apt-get install apache2 vim
2. После успешной установки веб-сервера Apache, убедитесь следующими командами, что демон запущен и к какому порту он привязан (по умолчанию apache прослушивает 80 порт):
sudo systemctl status apache2.service
sudo ss -tlpn
3. Установка ServerName для подавления предупреждения
Далее мы добавим одну строку в файл /etc/apache2/apache2.conf чтобы убрать сообщение с предупреждением. Хотя это и безвредно, если вы не установили ServerName на глобальном уровне, вы будете получать следующее сообщение о синтаксической ошибке в конфигурации Apache:
sudo apache2ctl configtest AH00558: 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 Syntax OK
Откройте главный конфигурационный файл текстовым редактором:
sudo gedit /etc/apache2/apache2.conf
Если вы настраиваете систему без графического интерфейса, вместо gedit используйте, например, vim:
sudo vim /etc/apache2/apache2.conf
Внутри, в конце файла добавьте директиву ServerName, указывающую на ваше основное доменное имя. Если у вас нет связанного с вашим сервером доменного имени, вы можете использовать внешний IP сервера:
. . . ServerName server_domain_или_IP
Если вы забыли внешний IP сервера, то проверить его можно так:
curl suip.biz/ip/
Для локального веб-сервера можно сделать следующую запись:
ServerName localhost
Когда закончите, сохраните и закройте файл.
Далее, проверьте ошибки синтаксиса набрав:
sudo apache2ctl configtest Syntax OK
Поскольку мы добавили глобальную директиву ServerName, предупреждения больше нет.
Для того, чтобы изменения вступили в силу, перезапустите Apache:
sudo systemctl restart apache2
4. Для проверки работы веб-сервера apache, откройте в браузере IP адрес сервера. Если вы устанавливаете на локальном компьютере, но наберите localhost. Должна появиться страница по умолчанию для веб-сервера, примерно как на скриншоте:
5. Следующей командой мы добавляем службу веб-сервера в автоматическую автозагрузку при каждом запуске компьютера:
sudo systemctl enable apache2
Шаг 2: Установка MariaDB/MySQL в Ubuntu 16.10 или 17.04
6. MariaDB – это форк MySQL. Программы взаимозаменяемы, даже процессы называются одинаково. Выбор MariaDB или MySQL – абсолютно на ваше усмотрение. В дальнейшем это ни на что не повлияет. Для установки MariaDB наберите:
sudo apt install mariadb-server
Для установки MySQL наберите:
sudo apt install mysql-server
Установите только одну из них!
7. После завершения установки, запустите простой скрипт безопасности, который удалит некоторые настройки по умолчанию и чуть заблокирует доступ к нашей системе. Запустите интерактивный скрипт командой:
sudo mysql_secure_installation
Давайте внимательно разберёмся со всем, что говорит нам этот скрипт, поскольку вопросам безопасности вер-сервера следует уделять особое внимание.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
Перевод:
Примечание: запуск всех элементов этого скрипта рекомендуется для всех серверов MariaDB в продакшене (реальном рабочем использовании).
In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here.
Перевод:
Для того, чтобы войти в MariaDB для настройки безопасности, нам нужен текущий пароль пользователя root. Если вы только что установили MariaDB и ещё не установили пароль рута, то пароль будет пустым, т.е. просто нажмите Enter.
Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.
Перевод:
Установите пароль рута, чтобы никто другой не мог войти в MariaDB без надлежащей авторизации как пользователь root.
Set root password? [Y/n] New password: Re-enter new password:
Перевод:
Установить пароль root’а? [Да/нет]
Новый пароль:
Повторно введите новый пароль:
Если у вас появилась строка «Sorry, you can't use an empty password here.» она означает, что пароль не может быть пустым, т.е. вы не ввели пароль.
By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n]
Перевод:
По умолчанию, установленная MariaDB имеет анонимного пользователя, позволяющего любому войти в MariaDB даже если для него не было создано пользовательского аккаунта. Это сделано в целях тестирования и упрощения установки. Вам следует удалить их перед переходом в реальное рабочее окружение.
Удалить анонимного пользователя? [Да/нет]
Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n]
Перевод:
Обычно, root’у следует разрешать подключаться только с 'localhost'. Это гарантирует, что кто-то из сети не сможет угадать пароль root’а.
Отключить удалённый вход рута? [Да/нет]
By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n]
Перевод:
По умолчанию MariaDB поставляется с базой данных 'test', к которой может любой получить доступ. Это также сделано в целях тестирования и она должна быть удалена перед переходом в реальное рабочее окружение.
Удалить тестовую базу данных и доступ к ней? [Да/нет]
Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n]
Перевод:
Перезагрузка таблицы привилегий гарантирует, что все сделанные изменения немедленно будут иметь эффект.
Перезагрузить таблицу привилегий сейчас? [Y/n]
All done! If you've completed all of the above steps, your MariaDB installation should now be secure.
Перевод:
Всё сделано! Если вы завершили все вышеописанные шаги, ваша установленная MariaDB должна быть безопасной.
Ещё раз о пароле MariaDB. Это должен быть надёжный и уникальный пароль. Думайте о нём как о пароле входа на ваш сервер. Он должен отличаться от пароля пользователя Linux.
8. Для получения доступа к базе данных MariaDB обычному пользователю без использования sudo привилегий, зайдите в приглашение командной строки MySQL и запустите следующие команды:
sudo mysql MariaDB> use mysql; MariaDB> update user set plugin='' where User='root'; MariaDB> flush privileges; MariaDB> exit
9. Затем перезапустите службу MySQL и попробуйте войти в базу данных без sudo, как показано ниже.
sudo systemctl restart mysql.service mysql -u root -p
Шаг 3: Установка PHP 7 в Ubuntu 16.10 или 17.04
10. Следующей командой установите последнюю версию PHP 7, а также несколько необходимых плагинов.
sudo apt install php libapache2-mod-php php-mysql php-xml php-gd php-imap php-mysql
11. После установки PHP7 и всех необходимых модулей, наберите следующую команду, чтобы посмотреть версию PHP.
php -v
12. В большинстве случаев вам захочется изменить то, как Apache работает с файлами, когда запрашивается директория. В текущий момент, если пользователь запрашивает с сервера директорию, Apache, в первую очередь, будет искать файл index.html. Мы хотим сказать нашему веб серверу, что PHP файлы имеют приоритет, и что Apache в первую очередь должен искать файл index.php.
Чтобы сделать это, наберите эту команду для открытия файла dir.conf в текстовом редакторе с привилегиями рута:
sudo gedit /etc/apache2/mods-enabled/dir.conf
Если вы работаете через SSH или ваша система без графического окружения, то для открытия используйте текстовый редактор командной строки, например vim:
sudo vim /etc/apache2/mods-enabled/dir.conf
Там вы увидите что-то вроде:
<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm </IfModule>
Мы хотим переместить индексный файл PHP в первую позицию после DirectoryIndex:
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule>
Когда закончите, сохраните и закройте файл.
После этого нужно перезагрузить веб-сервер Apache, чтобы изменения вступили в силу. Это можно сделать набрав:
sudo systemctl restart apache2
Также используя systemctl можно проверить статус службы apache2:
sudo systemctl status apache2
Типичный вывод:
● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; generated; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Сб 2016-12-24 11:04:45 MSK; 32s ago Docs: man:systemd-sysv-generator(8) Process: 5340 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS Process: 5363 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCE Tasks: 6 (limit: 4915) CGroup: /system.slice/apache2.service ├─5380 /usr/sbin/apache2 -k start ├─5383 /usr/sbin/apache2 -k start ├─5384 /usr/sbin/apache2 -k start ├─5385 /usr/sbin/apache2 -k start ├─5386 /usr/sbin/apache2 -k start └─5387 /usr/sbin/apache2 -k start дек 24 11:04:44 HackWareUbuntu systemd[1]: Starting LSB: Apache2 web server... дек 24 11:04:44 HackWareUbuntu apache2[5363]: * Starting Apache httpd web serve дек 24 11:04:45 HackWareUbuntu apache2[5363]: * дек 24 11:04:45 HackWareUbuntu systemd[1]: Started LSB: Apache2 web server.
13. Чтобы протестировать PHP7 и конфигурацию модулей, создайте в корневой директории веб-сервера /var/www/html/ файл info.php.
sudo gedit /var/www/html/info.php # ИЛИ sudo vim /var/www/html/info.php
добавьте следующие строки в файл info.php.
<?php phpinfo();
Откройте в вашем веб-браузере адрес https://IP_адрес_вашего_сервера/info.php для проверки PHP конфигурации.
Для локального веб-сервера откройте http://localhost/info.php
Шаг 4: Установка phpMyAdmin в Ubuntu 16.10 или 17.04
14. Опционально, если вы хотите администрировать MariaDB из веб-браузера, установите phpMyAdmin.
sudo apt install php-gettext phpmyadmin
Во время установки phpMyAdmin выберите веб сервер apache2:
Ответьте «Нет» на запрос о настройки с dbconfig-common:
15. После завершения установки phpMyAdmin выполните следующее.
Для загрузки конфигурации phpMyAdmin веб-сервером Apache откройте файл
sudo gedit /etc/apache2/apache2.conf # ИЛИ sudo vim /etc/apache2/apache2.conf
И добавьте в самый конец строку
Include /etc/phpmyadmin/apache.conf
Сохраните и закройте файл. Перезапустите сервер:
sudo systemctl restart apache2
Теперь phpMyAdmin будет доступен по адресу https://IP_адрес_вашего_сервера/phpmyadmin/
А для локального сервера по адресу http://localhost/phpmyadmin/
Рекомендуется продолжить знакомство с настройкой веб-сервера Apache на Ubuntu и посмотреть инструкции:
- Файлы настроек веб-сервера Apache в Ubuntu
- Как настроить виртуальные хосты веб-сервера Apache на Ubuntu 16.10 или 17.04
Связанные статьи:
- Как изменить адрес страницы входа в phpMyAdmin (72.7%)
- Как импортировать и экспортировать базы данных в MySQL или MariaDB (63%)
- Как установить веб-сервер (Apache, PHP, MySQL, phpMyAdmin) на Linux Mint, Ubuntu и Debian (52.2%)
- Как установить WordPress на Ubuntu/Linux Mint (49.6%)
- Ошибка «No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /run/php/php8.1-fpm.sock (*:80) failed» (РЕШЕНО) (46.9%)
- Решение пробем с ошибкой .htaccess: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration (RANDOM - 22.2%)
Класс, все супер быстро настроил
Спасибо за статью.
Вроде бы все правильно сделал, но…
В Муадминевыдает Расширение mysqli не найдено. Пожалуйста, проверьте ваши настройки PHP. Смотрите our documentation для дополнительной информации.
И гуглил и логи смотрел, но увы…
Не подскажете куда смотреть?
Попробуйте:
Здравствуйте
Конечно Debian не совсем Ubuntu 🙂 , но все же может подскажите
Есть сервер LAMP на Debian 6.0 - Apache2.2 - PHP 5.3 - MySQL
На нем вертится самописный сайт для внутренних нужд офиса. Сайт в кодировке windows-1251, так как писали на виндовой машине особо не заморачиваясь с кодировкой. Сейчас приобрели новый комп и решили на него перенести. Так как Debian 6 вроде как уже старенький установили сервер LAMP на Debian 8.0 - Apache2.4 - PHP 5.5 - MySQL. Сайт работает, но проблема в том что при открытии сайта в браузере страничка открывается в UTF-8 кодировке и каждый раз приходится переключать кодировку в браузере на windows-1251.
Я так понимаю Апач дает команду браузеру открывать страницу в этой кодировке, не читая тег meta в котором указана кодировка windows-1251.
ВОПРОС: как заставить Апач не делать этого
Пробовал вставить AddDefaultChaset windows-1251 и в конфигурацию виртуального сервера и в файл .htaccess - не помогло, может не туда прописывал.
Исправлять сайт не вариант, хотя тоже пробовал перегнав статичную в UTF статика отображалась нормально, но получали затык с php. Как уже писал сайт самописный соответственно документации что-почем нет
У вас в AddDefaultChaset пропущена одна буква. Если сайт на PHP, то в .htaccess пропишите:
В конфигурационном файле Apache замените
на
Иначе файлы .htaccess не будут оказывать влияния. После замены не забудьте перезапустить веб-сервер.
Судя по всему это не ваш случай, но браузеры также ориентируются на метатэги, например:
Т.е. если сервер говорит, что кодировка windows-1251, а в HTML-коде присутствует указанный выше метатег, то страница будет показана именно в кодировке UTF-8.
Здрасти. После статуса У меня Mariadb server is down
в конце строки Lines 1-17/17 (END) и ничего не происходит, на что жать?
Странная у вас… Ubuntu 16.10.
Шучу, я узнал, конечно, что это Kali Linux на картинке, более того, эта статья на 100% подойдёт для Kali Linux, Linux Mint и предыдущих версий Ubuntu.
Хотя в Kali Linux установлены все три компонента: Apache, PHP, MariaDB, только службы не добавлены в автозапуск. Там не нужно ничего устанавливать, достаточно выполнять:
перед каждым использованием веб-сервера. Или всё-таки добавить эти службы в автозагрузку.
И опять же, даже если в Kali Linux повторить все действия из этой инструкции (я специально только что проверил на своей системе), ничего страшного не происходит, и службы, в том числе MariaDB, работают как положено.
Отсюда у меня вопрос к вам: что именно вы делали, какими командами запускаете MariaDB?
Мне всё в root делать?
такими же как и mysql
У вас установлен/активирован apparmor? Если да, то дело в нём. Его не нужно отключать, но нужно обновить политики.
Если дело не в этом, то после попытки запуска СУБД, выполните:
и скопируйте вывод в комментарий.
В каталоге /var/lib/mysql/ есть файл с расширением .err, также хотелось бы увидеть его содержание.
Все папки обшарил mysql ни одного файла с таким расширением не нашёл
только frm, MYD, MYI, CSV, CSM, ibD
примерное навзание есть? Я даже не могу понять как общий поиск в Кали сделать
sudo
systemctl start apache2
sudo
systemctl start mysql.service
всё это ввёл, ничего не произошло, включилась командная строка root
как их завершать процессы с не завершенным окончанием.
line 1-23?
Стрелочками вправо-влево. Или перенаправлять вывод в текстовый файл.
У вас Kali с оф.сайта или какой-то мод? Какая версия?
У меня файл называется HackWare.err, у вас точно должно быть другое, т.к. у меня HackWare – это имя хоста.
И ещё раз:
У меня получилось это повторить – ошибка в точности, как у вас. Фокус делается так:
После этого проверка
показывает ровно ту же ошибку, что на вашем скриншоте.
Решение: даже если у вас установлена MariaDB, то запускать её нужно так:
А смотреть статус так:
После запуска проверьте версию:
Т.е. запустилась именно MariaDB.
Чтобы окончательно убедиться, что у нас уж точно MariaDB:
Там пять (!) раз упоминается, что вы вошли именно в MariaDB, чтобы не было сомнений
kali-linux-2016.2-amd64, от кудв скачано не помню, история загрузок со всех браузеров тоже не помнит.
MariaDB подменяла собой root было дело, что то там тестировала, но только на это и была способна. Mysql-service not worcked, foucking chet gasterworcked/
root@Alexper:~# service mysql start
root@Alexper:~#
root@Alexper:~# service php star
root@Alexper:~#
root@Alexper:~# service apachl2 start
root@Alexper:~#
потом перезаписывал: upgrade, restart
она мне , ты что дурак? Всё есть.
Я ей опять: service mysql start
root@Alexper:~# sudo systemctl start mariadb.service
Job for mariadb.service failed because the control process exited with error code.
See "systemctl status mariadb.service" and "journalctl -xe" for details.
root@Alexper:~#
Предистория всего этого: мне понадобился BurpSuit, у меня стоит версия игрушка, так посмотри и скачай или купи, выбрал первое. Их файлы запуска все в рассширение jar, запуск специальной прогой от JAVA нет, искал, что то скачал, она не запускалась или ушла в системник там и работает мне напользу, но со своими взглядами на жизнь. Начал устраивать эксперименты, Kali лапочка запросила mysql быть по активнее, вот в принципе и с этого всё и началось.
root@Alexper:~# mysql --version
mysql Ver 15.1 Distrib 10.1.21-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
root@Alexper:~# sudo mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 33
Server version: 10.1.21-MariaDB-5 Debian 9.0
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Вот, всё есть. НО….
я свою тему закрою, так как я вернулся пятном недельной давности назад. А точто что совсем захломил всё, даже скачивать перестала из интернета. Мне просто надо Oracl Java&Runtime для запуска BrupSuit. Куда переходить, где есть такие темы?
не могу понять как входить в phpMyAdmin
Ввожу пользователь root :
#2002 - No such file or directory — Сервер не отвечает (либо локальный сокет сервера MySQL неверно настроен).
без пароля тоже не пускает
как быть вообще?
Спасибо большое за статью! Е-ху)))))))) В kali получилось все с первого раза)
Большое спасибо! Молодцы! Очень полезная статья, целый день не мог добиться, чтобы php интерпретатоор отрабатывал скрипт, и только после установки всех пакетов, как у Вас указано, заработал, с благодраностью и пожеланиям успехов !