Найти тему
IT Web Doctor

Показываю как настроить свой собственный web-сервер для сайтов. Ubuntu 18.04 + LAMP.

Друзья, в прошлой статье я показал Вам как устанавливать 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

-2

Дальше проверим настройку профиля Apache Full, она должна разрешать трафик для портов 80 и 443:

ufw app info "Apache Full"

-3

А теперь разрешим входящий HTTP и HTTPS трафик:

ufw allow in "Apache Full"

-4

Проверить результат установки можно набрав в вашем веб-браузере публичный IP адрес вашего сервера: http://ip_адрес_сервера

Вы увидите страницу Apache, отображаемую по умолчанию для информации.

-5

Установка 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 и методами аутентификации.

-6

Для изменения метода аутентификации пользователя 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

Вы должны увидеть следующую картину:

-7

Это означает, что наш веб-сервер прекрасно работает. Кстати, на этой странице вы можете более подробно изучить конфигурацию вашего веб-сервера.

Начальная настройка PHP.

Наш PHP установлен, и исправно работает. Но хотелось бы сразу его немного поднастроить.

По умолчанию короткие теги, обрамляющие скрипты PHP, отключены. Это может привести к тому, что некоторые скрипты, использующие эти теги, могут не выполнятся. Для включения этой возможности откройте файл:

nano /etc/php/7.2/apache2/php.ini

Найдите short_open_tag = Off и замените на short_open_tag = On

-8

(для того чтобы быстро искать нужную строку и параметр в редакторе nano, необходимо нажать сочетание клавиш CTRL+W и ввести искомую строку).

Далее, включим вывод ошибок в PHP (по умолчанию он отключен).

Не закрывая редактор nano найдите в этом же файле параметры:

error_reporting и замените все что идет после знака = на E_ALL

Так же найдите параметр display_errors и замените off на on

-9

Теперь можете закрыть редактор нажав CTRL+X и Y для подтверждения сохранения изменений.

После внесения всех изменений необходимо перезапустить Apache. Делается это такой командой:

systemctl restart apache2

Ну вот, теперь ошибки которые будут возникать в PHP при разработке сайтов будут отображаться в браузере.

В большинстве случаев, мы захотим изменить способ, который Apache использует для поиска файлов при запросе директории. На данный момент, если пользователь запрашивает директорию с сервера, Apache в первую очередь будет искать файл с названием index.html. Мы хотим, чтобы наш веб-сервер отдавал предпочтение PHP файлам, так что мы настроим Apache таким образом, чтобы сначала он искал файлы index.php.

Для этого введите следующую команду, чтобы открыть файл dir.conf в текстовом редакторе.

Содержимое файла будет выглядеть следующим образом:

-10

Мы хотим переместить индексный файл PHP index.php, выделенный выше, на первое место после спецификации DirectoryIndex следующим образом:

-11

После внесения правок сохраните и закройте файл.

И снова нам предется перезапустить apache для того, чтобы изменения вступили в силу:

systemctl restart apache2

Ну вот, теперь наш веб-сервер настроем и готов к работе.

Однако постойте, нам ведь хотелось бы управлять нашими данными MySql из удобной web-панели. Для этой цели мы установи PhpMyAdmin

Установка PhpMyAdmin

Запустим установку PhpMyAdmin выполнив следующую команду:

apt install phpmyadmin php-mbstring php-gettext

В процессе установки Вам будет предложен выбор для apache или lighttpd. Нужно будет поставить галочку на apache2.

-12

Дальше высветится окно с предложение выполнить конфигурацию phpmyadmin. Нужно согласиться выбрав "Yes".

-13

Последним моментом будет предложено ввести пароль для пользователя phpmyadmin. Нужно указать тот пароль, который Вы вводили когда настраивали MySQL (Этой командой: SELECT user,authentication_string,plugin,host FROM mysql.user;).

-14

После запросят подтвердить ввод пароля.

Вот и все. Теперь PhpMyAdmin установлен. Можете попробовать войти в него через адресную строку: http://ip_адрес_вашего_сервера/phpmyadmin

Вводите логин root и пароль, который вы указали при установке phpmyadmin.

-15

Настроим наш первый сайт.

Наш сервер является виртуальным и может управлять не только одним сайтом, а множеством.

Все файлы наших сайтов хранятся в папку /var/www/

Т.е. Вы, например, создаете новый сайт таким образом:

- заходите в папку /var/www/ и дальше добавляете туда папку (например: test.site). Тут сразу хотел бы немного отступить и сказать, что управлять файлами и папками нашего сайта лучше через программу, такую например как FileZilla (скачать ее можно с официального сайта https://filezilla-project.org/). Скачивайте FileZilla клиента, устанавливаете на своем компьютере и запускаете.

Дальше добавляете сайт, указываете имя и пароль, протокол - SFTP, ip-адрес Вашего сервера.

-16

После подключения переходите в папку /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

-17

Сохраняем файл и пробуем запустить наш сайт из браузера введя в адресную строку http://test.site/

Если откроется страничка с корфигурацией нашего php сервера - то все хорошо.

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

На этом пока все. Ну а в дальнейших статьях, я расскажу как устанавливать и настраивать другие полезные сервисы на наш тестовый сервер.

И не забывайте подписываться на канал, для меня это очень важно.

Спасибо всем!