С помощью этого руководства вы научитесь устанавливать на виртуальный сервер так называемый LAMP-стек.
LAMP — это набор ПО, который включает в себя:
- Linux;
- Apache;
- MySQL;
- PHP.
Как результат, после его установки вы сможете запустить свой собственный сайт.
Мы будем использовать виртуальный сервер, тариф ATLEX-VPS-5, 16 ГБ оперативной памяти и 160 ГБ SSD-накопителя. Но для большинства начальных задач (блог, сайт-визитка) и не очень нагруженных проектов вполне подойдёт более простая конфигурация ATLEX-VPS-1. В качестве операционной системы используем дистрибутив Linux Ubuntu 20.04
Для начала давайте разберёмся, что нужно для запуска сайта. Каждый сайт для своей работы требует наличия различных компонентов. Как правило это веб-сервер, поддержка языка программирования, на котором написан сайт, и поддержка базы данных. В этом руководстве мы покажем, как установить веб-сервер Apache, поддержку языка PHP и поддержку баз данных MySQL.
Настройка SSH
Все действия мы будем выполнять через командную строку c использованием SSH-протокола. Вам нужно знать IP-адрес, имя пользователя и пароль. Данные для подключения вам придут в письме при заказе виртуального сервера.
Открываем на своём локальном компьютере терминал (командную строку) и вводим команду для подключения.
shh root@ip_адрес_сервера
Если вы подключаетесь впервые, может появиться такое сообщение:
The authenticity of host 'ip_адрес_сервера (ip_адрес_сервера)' can't be established.
RSA key fingerprint is SHA256:YaaqERsh9oMs/Qa5nlMJLlb4ewlJDGLaDGsuOcDzOs8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Просто нажимаем 'yes'
или букву 'y'
, появится запрос на ввод пароля.
При вводе пароля символы на экран не выводятся, это сделано в целях безопасности.
Warning: Permanently added 'ip_адрес_сервера' (RSA) to the list of known hosts.
root@ip_адрес_сервера's password:
Вводим пароль и нажимаем 'Enter'
.
После подключения к серверу мы попадаем в командную строку на самом сервере, т.е. в систему, которая установлена на сервере.
Перед установкой каких-либо компонентов рекомендуется обновить систему до последней актуальной версии.
Выполним последовательно команды
apt update
apt upgrade
Начнется обновление системы.
Далее необходимо перезагрузить сервер, это можно сделать командой reboot
.
Прежде чем мы перейдем к установке LAMP, выполним первичную настройку сервера.
Сейчас мы подключились под пользователем root
, но это не совсем безопасно, поэтому создадим обычного пользователя.
Для этого выполним команду adduser [имяпользователя]
например:
adduser atlex
Далее нужно дважды ввести пароль для этого пользователя.
Обязательно запомните пароль или сохраните его в надёжном месте.
После этого вам будет предложено ввести некоторые данные пользователя (полное имя, телефон и т.д.), но все это можно не вводить, а просто оставить поля пустыми, каждый раз нажимая 'enter'
.
Итак, мы создали пользователя, но у него нет прав администратора. Для наделения его правами пользователя root
, нужно добавить его в группу
Выполняем команду:
usermod -aG sudo atlex
Настройка брандмауэра UFW
Для повышения безопасности сервера мы будем использовать популярный и очень простой в настройке брандмауэр UFW. Разные приложения могут для ufw регистрировать свои профили, т.е. готовые наборы настроек безопасности, которые можно активировать. Выведем список текущих профилей командой:
sudo ufw app list
Available applications:
OpenSSH
В нашем случае сейчас доступен профиль службы OpenSSH, который позволяет подключаться к серверу по SSH.
Активируем эту службу командой:
ufw allow OpenSSH
Rules updated
Rules updated (v6)
Затем активируем сам брандмауэр командой:
ufw enable
Появится предупреждение, что может прерваться текущее соединение:
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Но так как мы разрешили OpenSSH, то не беспокоимся и вводим 'y'
и нажимаем 'Enter'
.
Firewall is active and enabled on system startup
Можно проверить статус брандмауэра командой:
ufw status
Видим, что он активен и активен профиль OpenSSH
:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Мы разрешили только SSH-подключения, а все остальные подключения брандмауэр теперь блокирует. Чуть позже мы разрешим подключения по HTTP, чтобы открывать сайт.
Теперь очень важный момент: нам нужно подключиться по SSH, но не под пользователем root
, а пользователем atlex
, которого мы только что создали.
Для этого мы пока не будем закрывать наше текущее SSH-соединение с root, а откроем новое окно терминала и подключимся в нём, на тот случай, если у нас вдруг возникнут проблемы и мы смогли бы их исправить.
В новом окне терминала вводим команду:
ssh atlex@ip_адрес_сервера
Вводим пароль пользователя atlex
.
Если всё прошло успешно, то мы получим приглашение ко вводу команд, но будем работать уже под пользователем atlex
, и все административные команды нужно будет выполнять через sudo
, т.е. перед каждой командой мы будем вводить 'sudo'
пробел и саму команду.
Сессию SSH с пользователем root
можно закрыть, введя команду 'exit'
Установка веб-сервера Apache
Теперь установим веб-сервер Apache. Для этого выполняем команду:
sudo apt install apache2
Прежде чем мы его протестируем, внесём изменения в брандмауэр.
Выведем список профилей:
sudo ufw app list
и увидим, что помимо OpenSSH
, добавлено 3 новых профиля Apache
. Каждый из этих профилей содержит набор настроек:
- Apache — открывает порт
80
, который используется протоколомhttp
; - Apache Full — открывает порты
80
и443
, которые используются протоколамиhttp
иhttps
; - Apache Secure — открывает только порт
443
.
Мы применим Apache Full
, чтобы иметь возможность разрешать как http
, так и https
трафик.
Для активации профиля выполняем команду:
sudo ufw allow in "Apache Full"
Rule added
Rule added (v6)
После этого мы можем проверить, как работает Apache, и открыть сайт по умолчанию.
Для этого открываем браузер и вводим IP-адрес сервера. Откроется вот такая информационная страница:
Фактически это уже работающий сайт, состоящий из одной HTML-страницы.
Установка поддержки баз данных MySQL
Установим поддержку баз данных MySQL.
Выполним команду:
sudo apt install mysql-server
После завершения установки рекомендуется выполнить специальный скрипт, который поможет установить различные настройки безопасности. Для этого выполним команду:
sudo mysql_secure_installation
Далее необходимо ответить на несколько запросов. Первое, что предлагается сделать, это включить плагин VALIDATE PASSWORD, который используется для того чтобы при настройке пароля баз MySQL нельзя было использовать простые пароли. Для включения вводим 'y'
и нажимаем 'enter'
На следующем шаге предлагается установить степень проверки пароля:
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary
file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
Выберем средний: вводим 1 и нажимаем 'enter'
Далее вводим надёжный пароль и подтверждаем его.
Обратите внимание! Это пароль для пользователя root именно для MySQL, и он не имеет отношения к пользователю root, который у вас используется в системе.
На все последующие вопросы можно отвечать 'y'
и нажимать 'enter'
:
- запрос на удаление анонимного пользователя,
- запрос на отключение удалённой авторизации пользователя root,
- удаление тестовой базы данных.
По завершении будет запрос на активацию тех настроек и настроек, которые мы сделали.
В результате получим сообщение:
Success.
All done!
Установка поддержки языка PHP
Далее установим поддержку языка PHP.
Нам нужно установить три пакета:
- PHP
- libapache2-mod-php — модуль, который позволяет обрабатывать PHP-файлы.
- php-mysql — позволяет взаимодействовать PHP с MySQL
sudo apt install php libapache2-mod-php php-mysql
На этом установка LAMP закончена.
Но прежде чем мы сможем запустить свой сайт, нужно создать для него виртуальный хост. Создадим директорию для нашего сайта и зададим настройки для нашего хоста.
Выполним команду:
sudo mkdir /var/www/mysite
Вместо mysite
указываем домен нашего сайта.
Мы создали директорию, используя sudo
, т.е. под пользователем root
. Изменим права и группу для данной директории, чтобы она принадлежала нашему пользователю atlex
.
sudo chown -R $USER:$USER /var/www/mysite
Далее нужно создать файл конфигурации для нашего виртуального хоста. Файлы конфигурации хранятся в директории /etc/apache2/sites-available
.
Откроем консольный текстовый редактор nano
и создадим файл конфигурации. Выполним команду:
sudo nano /etc/apache2/sites-available/mysite.conf
Вставим следующий код:
<VirtualHost *:80>
ServerName ip_адрес_сервера
ServerAlias ip_адрес_сервера
ServerAdmin atlex@localhost
DocumentRoot /var/www/mysite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Обратите внимание, для ServerName
мы указали IP-адрес нашего сервера, если у вас есть домен, то следует указать его.
Выходим из редактора nano
, для этого нажимаем Ctrl + X
, вводим 'yes'
, чтобы сохранить файл.
Для того чтобы веб-сервер активировал наш виртуальный хост, выполним команду:
sudo a2ensite mysite
Для того чтобы изменения вступили в силу, необходимо перезагрузить сервер. Выполняем команду:
sudo systemctl reload apache2
Создадим тестовую страницу в нашем каталоге, где должны располагаться файлы нашего сайта.
Снова воспользуемся текстовым редактором nano
:
nano /var/www/mysite/index.php
И в него добавим следующий код:
<?php
phpinfo();
Это PHP-функция, которая выведет подробную информацию о текущей конфигурации php
. Вводим IP-адрес нашего сервера в адресную строку браузера и видим, что у нас открывается страница с информацией о конфигурации PHP.
Мы рассмотрели базовые шаги установки Apache, PHP, MySQL и научились создавать виртуальные хосты. Теперь вы можете установить практически любую CMS и запустить свой бизнес в интернете или вести блог.