Друзья, в прошлой статье я показал Вам как устанавливать Ubuntu Server 18.04 (https://zen.yandex.ru/media/id/5f21176917a2c87c303eee40/vot-zachem-prishlos-ustanavlivat-ubuntu-server-1804-podrobnaia-instrukciia-605b8ed3c0f40244eb2bfe9a).
В этой статье я расскажу Вам как установить и настроить LAMP, что расшифровывается как Linux, Apache, MySql, PHP.
Собственно если Вы собираетесь разрабатывать свои собственные сайты, то Вам просто необходима среда разработки и тестирования сайтов с собственным web-сервером. Конечно можно воспользоваться такими популярными программами как OpenServer или Denwer для Windows, но на мой взгляд минус этих сервисов заключается в том, что они не могут дать разработчику сайтов и web-приложений полную картину того, как работают настоящие большие веб-сервера на которых и хостятся наши с вами сайты. Думаю, что для лучшего понимания работы сервера под капотом - нужно именно самому окунуться в настройку этого сервера, иначе может получиться ситуация, когда Вы разрабатывате какой-то продукт например на OpenServer, а после переноса на web-сервер хостинга он вдруг отказывается нормально работать.
Итак, пожалуй приступим. Подключается к нашему серверу по ssh (можно через программу puTTY), логинимся и переходим в режим суперпользователя (командой sudo -i).
Apache и настройка файeрвола.
Первым-наперво необходимо установить сердце веб-сервера - Apache.
С начало проверим обновления для нашей операционной системы:
apt update
Заметьте, что если вы вошли под суперпользователем root, то Вам не нужно в команды добавлять sudo
После проверки обновлений - ставим apache2 командой:
apt install apache2
Теперь убедимся, что ваш файрвол пропускает HTTP и HTTPS трафик.
ufw app list
Дальше проверим настройку профиля Apache Full, она должна разрешать трафик для портов 80 и 443:
ufw app info "Apache Full"
А теперь разрешим входящий HTTP и HTTPS трафик:
ufw allow in "Apache Full"
Проверить результат установки можно набрав в вашем веб-браузере публичный IP адрес вашего сервера: http://ip_адрес_сервера
Вы увидите страницу Apache, отображаемую по умолчанию для информации.
Установка MySQL
После установки web-сервера Apache, необходимо установить MySQL. Он отвечает за хранение данных в виде базы данных.
Ну вы, я надеюсь, понимаете, что по сути все данные сайтов (тексты страниц, настройки CMS, и прочее) хранятся в базе данных, и сайт выдает их по мере их запроса.
apt install mysql-server
MySQL установится. Быстро, да? Так это хорошо!
Дальше, если Вы хотите использовать MySql от имени суперпользователя root, Вам необходимо изменить метод аутентификации с auth_socket на mysql_native_password.
Делается это из консоли mysql. Запускаем консоль командой:
mysql
Далее просмотрите метод аутентификации для каждого из ваших пользователей MySQL с помощью следующей команды:
SELECT user,authentication_string,plugin,host FROM mysql.user; (вводим команду в строку начинающуюся с mysql >)
Нам выведется таблица с пользователями Mysql и методами аутентификации.
Для изменения метода аутентификации пользователя root вводим следующию команду:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
ВНИМАНИЕ! Не забудьте поменять в этой строке 'password' на Ваш собственный пароль.
Следующей командой применим внесенные изменения:
FLUSH PRIVILEGES;
Отлично. Теперь можно выйти из консоли MySQL введя команду:
exit
Теперь ваша система управления базами данных установлена и мы можем двигаться дальше и установить PHP.
Установка PHP.
Как Вы знаете, PHP - это язык программирования. Да, это самый популярный язык разрабоки сайтов. Он может запускать скрипты, подключаться к нашим базам данных MySQL для получения информации и передавать обработанный контент в наш веб-сервер для отображения.
Выполним команду:
apt install php libapache2-mod-php php-mysql
Этой командой мы устанавливаем сразу 3 пакета:
1. Сам движек PHP
2. Библиатеку для вебсервера Apache
3. Библиатеку для работы с Mysql
Дальше установим дополнительные расширения для PHP, которые вам понадобятся в будущем для хостинга большинства популярных проектов:
apt install php-curl php-json php-cgi php-gd php-zip php-mbstring php-xml php-xmlrpc
Не буду рассказывать Вам что это за пакеты расширений и за что они отвечают (можете самостоятельно почитать в интернете), но они часто нужны и используются для разрабоки полноценных web-проектов.
Отлично! Теперь неплохо было бы проверить, как работает наш веб-сервер с установленным apache, MySQL, PHP.
Для этого нам нужно в дирректории /var/www/html/ создать файл.
nano /var/www/html/phpinfo.php
Откроется пустой файл, в который мы должны записать следующую строку:
<?php phpinfo(); ?>
Сохраняем файл выполняя нажатие сочетания клавиш CTRL+X, и нажимая на Y для подтверждения сохранения файла.
Затем откройте Ваш браузер (chrome, yandex, mazilla, opera или любой другой) и в адресной строке введи:
http://ip_адрес_вашего_сервера/phpinfo.php
Вы должны увидеть следующую картину:
Это означает, что наш веб-сервер прекрасно работает. Кстати, на этой странице вы можете более подробно изучить конфигурацию вашего веб-сервера.
Начальная настройка PHP.
Наш PHP установлен, и исправно работает. Но хотелось бы сразу его немного поднастроить.
По умолчанию короткие теги, обрамляющие скрипты PHP, отключены. Это может привести к тому, что некоторые скрипты, использующие эти теги, могут не выполнятся. Для включения этой возможности откройте файл:
nano /etc/php/7.2/apache2/php.ini
Найдите short_open_tag = Off и замените на short_open_tag = On
(для того чтобы быстро искать нужную строку и параметр в редакторе nano, необходимо нажать сочетание клавиш CTRL+W и ввести искомую строку).
Далее, включим вывод ошибок в PHP (по умолчанию он отключен).
Не закрывая редактор nano найдите в этом же файле параметры:
error_reporting и замените все что идет после знака = на E_ALL
Так же найдите параметр display_errors и замените off на on
Теперь можете закрыть редактор нажав CTRL+X и Y для подтверждения сохранения изменений.
После внесения всех изменений необходимо перезапустить Apache. Делается это такой командой:
systemctl restart apache2
Ну вот, теперь ошибки которые будут возникать в PHP при разработке сайтов будут отображаться в браузере.
В большинстве случаев, мы захотим изменить способ, который Apache использует для поиска файлов при запросе директории. На данный момент, если пользователь запрашивает директорию с сервера, Apache в первую очередь будет искать файл с названием index.html. Мы хотим, чтобы наш веб-сервер отдавал предпочтение PHP файлам, так что мы настроим Apache таким образом, чтобы сначала он искал файлы index.php.
Для этого введите следующую команду, чтобы открыть файл dir.conf в текстовом редакторе.
Содержимое файла будет выглядеть следующим образом:
Мы хотим переместить индексный файл PHP index.php, выделенный выше, на первое место после спецификации DirectoryIndex следующим образом:
После внесения правок сохраните и закройте файл.
И снова нам предется перезапустить apache для того, чтобы изменения вступили в силу:
systemctl restart apache2
Ну вот, теперь наш веб-сервер настроем и готов к работе.
Однако постойте, нам ведь хотелось бы управлять нашими данными MySql из удобной web-панели. Для этой цели мы установи PhpMyAdmin
Установка PhpMyAdmin
Запустим установку PhpMyAdmin выполнив следующую команду:
apt install phpmyadmin php-mbstring php-gettext
В процессе установки Вам будет предложен выбор для apache или lighttpd. Нужно будет поставить галочку на apache2.
Дальше высветится окно с предложение выполнить конфигурацию phpmyadmin. Нужно согласиться выбрав "Yes".
Последним моментом будет предложено ввести пароль для пользователя phpmyadmin. Нужно указать тот пароль, который Вы вводили когда настраивали MySQL (Этой командой: SELECT user,authentication_string,plugin,host FROM mysql.user;).
После запросят подтвердить ввод пароля.
Вот и все. Теперь PhpMyAdmin установлен. Можете попробовать войти в него через адресную строку: http://ip_адрес_вашего_сервера/phpmyadmin
Вводите логин root и пароль, который вы указали при установке phpmyadmin.
Настроим наш первый сайт.
Наш сервер является виртуальным и может управлять не только одним сайтом, а множеством.
Все файлы наших сайтов хранятся в папку /var/www/
Т.е. Вы, например, создаете новый сайт таким образом:
- заходите в папку /var/www/ и дальше добавляете туда папку (например: test.site). Тут сразу хотел бы немного отступить и сказать, что управлять файлами и папками нашего сайта лучше через программу, такую например как FileZilla (скачать ее можно с официального сайта https://filezilla-project.org/). Скачивайте FileZilla клиента, устанавливаете на своем компьютере и запускаете.
Дальше добавляете сайт, указываете имя и пароль, протокол - SFTP, ip-адрес Вашего сервера.
После подключения переходите в папку /var/www/ Там создаете папку test.site. Заходите в нее и создаете папку html.
В этой папке (html) необходимо создать файл index.php
В этот файл пишем строку: <?php phpinfo();?>
Сохраняете этот файл.
Но как же теперь нам настроить доступ к этому сайту. Ведь по умолчанию сервер берет данные из папке /var/www/html/
Теперь можно добавлять виртуальный хост, для этого создайте файл и наполните его содержимым (используя консоль PuTTy):
nano /etc/apache2/sites-available/test.site.conf
Содержимое файла:
<VirtualHost *:80>
ServerName test.site
ServerAlias www.test.site
ServerAdmin webmaster@localhost
DocumentRoot /var/www/test.site/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Сохраните этот файл.
Далее нужно активировать наш хост:
a2ensite test.site.conf
Перезапускаем наш apache:
systemctl restart apache2
Отлично. Теперь когда у нашего сервера будут запрашивать сайт c DNS test.site - он будет отдавать информацию из папке /var/www/test.site/html
Для того чтобы проверить, как это работает, нужно на своем компьютере с установленной Windows перейти в каталог C:\Windows\System32\drivers\etc
Найдите и откройте там файл hosts (внимание, файл может быть скрытым).
В этом файле добавьте следующую строку:
ip_адрес_вашего_сервера test.site
Сохраняем файл и пробуем запустить наш сайт из браузера введя в адресную строку http://test.site/
Если откроется страничка с корфигурацией нашего php сервера - то все хорошо.
Теперь Вы знаете как настраивать веб сервер и все его компоненты, добавлять новые сайты.
На этом пока все. Ну а в дальнейших статьях, я расскажу как устанавливать и настраивать другие полезные сервисы на наш тестовый сервер.
И не забывайте подписываться на канал, для меня это очень важно.
Спасибо всем!