Как развернуть на удалённом сервере Ubuntu LAMP

Это простой туториал для себя. Частенько приходится разворачивать новые проекты на сервере. Как-то раз пришлось за одну ночь переносить проект с OpenServer на удалённый сервер. Это оказалось не так-то просто. Поэтому я собрал здесь всё что может помочь в этом не очень простом деле. Это делается ещё и с прицелом на будущее, ведь проект вместе с готовым окружением позволяет работать с ним далее.

Итак, начнём! Первое - вы арендовали VPS или VDS. Теперь можете установить на него Ubuntu (кстати, версия не ниже 18.04) вместе с LAMP, многие хостинги позволяют это делать по десять раз на дню. Но именно здесь, в начальных установках по умолчанию и зарыта собака. Именно после установки LAMP под root superuser начинаются вопросы, почему среда конфликтует с php, или php конфликтует с окружением. Поэтому устанавливает LAMP после установки Ubuntu и после создания на сервере не ROOT - пользователя так:

1. Установка Apache2 и настройка UFW

В командной строке набираем:

$ sudo apt update

$ sudo apt install apache2

$ sudo ufw app list

Получаем вывод:

Available applications: Apache Apache Full Apache Secure OpenSSH

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

$ sudo ufw app info "Apache Full"

Получаем вывод:

Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp

Разрешим входящий трафик HTTP HTTPS для нашего профиля:

$ sudo ufw allow in "Apache Full"

После этого ваш сайт будет виден при наборе его URL или IP, причём вы увидите Default page Apache2 Ubuntu

2. Установка MySQL

Набираем в командной строке:

$ sudo apt install mysql-server

После завершения установки настроим окружение MySQL безопасным образом:

$ sudo mysql_secure_installation

Далее на все вопросы отвечайте Y, но читайте при этом. Установите пароль. По умолчанию ваш root пользователь имеет аутентификацию auth_socket. Можно изменить её на mysql_native_password. Для этого войдём в mysql:

$ sudo mysql

Далее, пишем последовательно такие команды:

mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

mysql>FLUSH PRIVILEGES;

mysql>exit

Теперь наша система управления базами данных установлена и мы можем приступить к установке PHP:

3. Установка PHP

Следующая команда установит PHP на наш удалённый сервер без каких-либо проблем:

$ sudo apt install php libapache2-mod-php php-mysql

Настроим Apache так чтобы он искал в первую очередь файл index.php а не index.html, для этого введём команду:

$ sudo nano /etc/apache2/mods-enabled/dir.conf

В открывшемся файле передвинем на первое место index.php затем Ctrl+X затем Y и Enter. Далее перезапускаем Apache для применения изменений:

$ sudo systemctl restart apache2

4. Тестирование PHP на удалённом веб-сервере

Чтобы проверить, что наша система настроена правильно, создаём простой PHP файл info.php. Чтобы Apache нашел и обработал файл корректно, он должен быть сохранен в директории web root, данная директория находится по адресу /var/www/html/. Мы можем создать там файл следующей командой:

$ sudo systemctl restart apache2

В этом файле пишем phpinfo(); с соответствующими тегами. Теперь, если ввести этот SCRIPT_NAME в составе URL, мы увидим информацию о вашем сервере, примерно как на картинке-заставке этой статьи. Здесь полезная информация для отладки, но об этом в другой статье.

Поздравляю, LAMP вы установили!

Создание non-root пользователя на сервере Ubuntu

Пользователь root является superuser - администратором в среде Linux и имеет широкие права. Ввиду таких его прав учетной записи root не рекомендуется использовать ее на постоянно, т.к. некоторые его права дают возможность вносить непоправимые изменения, в том числе случайно.

1. Вход в систему под именем root

Если вы еще не подключены к серверу, войдите в систему под именем root, используя следующую команду (замените выделенную часть команды на публичный IP-адрес вашего сервера):

$ ssh root@your_server_ip

Подтвердите предупреждение о подлинности хоста, если оно появится. Если вы используете аутентификацию по паролю, укажите пароль root для входа в систему. Если вы используете SSH-ключ, защищенный кодовой фразой, то при первом использовании ключа в каждом сеансе вам может быть предложено ввести кодовую фразу. Если вы впервые входите на сервер с помощью пароля, вам также может быть предложено изменить пароль root.

2. Создание нового пользователя

В этом примере показан процесс создания нового пользователя под именем sasha:

# adduser sasha

Вам будут заданы несколько вопросов, начиная с установки пароля. При желании, укажите дополнительную информацию, если это не требуется, нажмите ENTER если хотите пропустить.

3. Предоставление прав администратора

Чтобы избежать необходимости выхода из учетной записи обычного пользователя и входа в систему под именем root, мы можем настроить так называемые права “superuser” или root для нашей обычной учетной записи. Это позволит обычному пользователю запускать команды с правами администратора путем добавления слова sudo перед каждой командой. Чтобы назначить данные права нашему новому пользователю, необходимо добавить нового пользователя в группу sudo. По умолчанию на сервере Ubuntu 18.04 пользователям группы sudo разрешается использовать команду sudo. Запустите данную команду под именем root, чтобы добавить нового пользователя в группу sudo (замените выделенное слово на имя нового пользователя):

# usermod -aG sudo sasha

Теперь после входа в систему в качестве обычного пользователя вы можете вводить sudo перед командами для выполнения действий с правами superuser.

4. Установка брандмауэра

Различные приложения могут регистрировать свои профили при установке UFW. Данные профили позволяют UFW управлять приложениями по имени. Сервис OpenSSH, позволяющий подключиться к нашему серверу, имеет зарегистрированный профиль в UFW. Вы можете проверить это, набрав:

# ufw app list

Необходимо убедиться, что брандмауэр разрешает SSH-соединения, чтобы можно было войти в систему в следующий раз. Мы можем разрешить эти соединения путем ввода:

# ufw allow OpenSSH

Затем мы можем активировать брандмауэр путем ввода:

# ufw enable

Введите Y и ENTER, чтобы продолжить. Можно увидеть, что SSH-соединения разрешены, путем ввода:

# ufw status

5. Предоставление внешнего доступа для обычного пользователя

После создания обычного пользователя для повседневной работы необходимо убедиться, что мы можем использовать SSH непосредственно в учетной записи. Процесс настройки SSH-доступа для нового пользователя зависит от того, использует ли учетная запись root сервера пароль или SSH-ключи для аутентификации. Если учетная запись Root использует аутентификацию по паролю Если вы вошли в учетную запись root, используя пароль, значит, для SSH активирована аутентификация по паролю. Вы можете использовать SSH для своей новой учетной записи пользователя, открыв новый сеанс и используя SSH с новым именем пользователя:

$ ssh sasha@your_server_ip

После ввода пароля обычного пользователя вы войдете в систему. Помните, что при необходимости запуска команды с административными правами, введите sudo перед командой:

$ sudo command_to_run

Поздравляю, теперь у вас есть non-root пользователь и вы можете устанавливать LAMP на свой сервер!