Назад в блог

Как настроить автозапуск службы Linux после перезагрузки или системного сбоя: Часть 1 (Практические примеры)

Как настроить автозапуск службы Linux после перезагрузки или системного сбоя: Часть 1 (Практические примеры)

Введение

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

Мы будем использовать MySQL в качестве службы базы данных для практических примеров. Однако те же принципы применимы и к другим процессам, составляющим полноценный сервер, таким как Nginx, Apache, Redis, или другим приложениям. Вы можете ознакомиться с нашими руководствами по установке MySQL, Nginx, и Apache.

В дистрибутивах Linux существуют три основные системы инициализации (init), в зависимости от используемого вами дистрибутива. Некоторые дистрибутивы могут поставляться с двумя или более системами инициализации, как описано ниже:

  • System V — более старая система инициализации, встречающаяся в старых дистрибутивах, таких как:
    • Ubuntu 9.04 и более ранние версии
    • CentOS 5 и более ранние версии
    • Debian 6 и более ранние версии
  • Upstart — использовалась в прежних дистрибутивах, таких как:
    • CentOS 6
    • Ubuntu от 9.10 до Ubuntu 14.10 и Ubuntu 14.04
  • Systemd — используется в самых последних дистрибутивах, таких как:
    • CentOS 7
    • Debian 7 и 8.
    • Ubuntu 15.04 и новее

Общие сведения

Для операционных систем, и особенно для систем Linux и Unix, характерно наличие процессов и служб, работающих в фоновом режиме. Такие службы могли поставляться вместе с программным обеспечением операционной системы. Некоторые из них могли появиться вместе с устанавливаемыми вами пользовательскими приложениями.

Службы операционной системы включают в себя:

  • sshd — это демон, позволяющий выполнять удаленные подключения.
  • cupsd — это демон, управляющий печатью.

Службы установленных приложений включают в себя:

  • httpd/apache2 – служба, которая поставляется с веб-сервером Apache2.
  • nginx — служба, которая поставляется с веб-сервером Nginx.

Чтобы обеспечить доступность наших веб-приложений, баз данных, почтовых серверов и т. д., такие службы должны работать непрерывно. Если вы системный администратор или любознательный разработчик приложений, вы хотите, чтобы такие службы работали непрерывно, а в случае сбоя системы автоматически запускались после перезагрузки. И это именно то, чему мы научимся в этом практическом руководстве.

Хотя настройка оповещений и непрерывный мониторинг вашего дистрибутива Linux имеют решающее значение, некоторые службы Linux могут восстанавливаться самостоятельно при правильной настройке благодаря системам инициализации, управляющим службами.

В дистрибутивах Linux существуют режимы работы, реализующие инициализацию системы, называемые уровнями запуска (runlevels). Чтобы служба запускалась автоматически, она должна быть добавлена на уровень запуска. Каждая система типа Linux и Unix имеет четыре общих уровня запуска, перечисленных ниже:

  • 0 — уровень запуска 0 означает выключение системы.
  • 1 — уровень запуска 1 означает однопользовательский режим восстановления.
  • 2, 3, 4 — эти уровни запуска указывают на состояния, когда система загружена в многопользовательском текстовом режиме с поддержкой сети.
  • 5 — уровень запуска 5 указывает на многопользовательский графический режим с поддержкой сети.
  • 6 — уровень запуска 6 означает перезагрузку системы.

В этом руководстве вы узнаете, как настроить автоматический запуск службы Linux при перезагрузке системы с использованием трех различных режимов инициализации, описанных ранее: System V, Upstart и Systemd.

Предварительные требования

Для прохождения этого практического руководства вам понадобится VPS на Linux. Вы можете воспользоваться бесплатным пробным периодом в Cloudsigma и запустить несколько серверов для тестирования команд. Вы можете следовать нашему пошаговому руководству по настройке серверов Ubuntu.

Серверы, которые вы создаете в этом руководстве, предназначены исключительно для выполнения практических заданий, и вам не следует тестировать эти команды на рабочем (production) сервере, так как работа многих служб будет нарушена.

Некоторые из дистрибутивов, которые вам понадобятся:

  • Ubuntu 9.04 и более ранние версии или Debian 6 x64 (будут использоваться для демонстрации системы инициализации System V)
  • Ubuntu 14.04 x64 (будет использоваться для демонстрации Upstart)
  • CentOS 7 x64 (будет использоваться для демонстрации systemd).

Убедитесь, что вы настроили пользователя без прав root с привилегиями sudo. Вы можете ознакомиться с нашим руководством по настройке файла sudoers здесь.

Использование System V

Это старейшая система инициализации, которая использовалась в более ранних дистрибутивах Linux, таких как:

  • Debian 6 и более ранние версии
  • CentOS 5 и более ранние версии
  • Ubuntu 9.04 и более ранние версии

Большинство устанавливаемых серверных приложений, таких как MySQL и Nginx, по умолчанию поставляются с init-скриптами, сохраненными в каталоге /etc/init.d. Эти скрипты позволяют им запускаться после перезагрузки. Однако они могут быть не настроены для автоматического запуска после сбоя системы.

Контрольный список автозапуска для System V

Первым шагом является проверка наличия работающего init-скрипта Bash в каталоге /etc/init.d/service. Чтобы включить службу, в дистрибутивах Debian или Ubuntu используйте команду update-rc.d, а в системе CentOS используйте chkconfig. Замените на фактическое имя вашей службы:

Вышеупомянутая команда создает символическую ссылку в каталоге /etc/rc2.d, которая выглядит как показано ниже. Не создавайте ее вручную, так как она генерируется автоматически:

В самом низу файла /etc/inittab добавьте строку respawn, как показано в общем примере ниже. Не забудьте заменить ее фактическим путем к сценарию запуска вашего приложения:

Введите следующие команды, чтобы остановить и запустить службу:

Затем перезагрузите сервер:

Как протестировать изменения?

После перезагрузки сервера убедитесь, что служба запущена, выполнив поиск номера процесса с помощью команды:

Завершите процесс с помощью команды:

Через пять минут убедитесь, что служба запущена и работает.

Практическая настройка System V на примере реальной службы

На следующих шагах мы опробуем реальное серверное приложение, такое как MySQL. У вас должен быть доступ к виртуальной машине Debian 6. Подключитесь к ней по SSH или с помощью putty, если вы используете ОС Windows.

Step 1: Install MySQL

Введите следующую команду для установки MySQL:

При начале установки вам будет предложено ввести пароль root. Введите желаемый пароль и подтвердите его. Дождитесь завершения установки, а затем введите следующую команду, чтобы начать настройку безопасности MySQL:

Вам будет предложено ввести пароль root, который вы ввели ранее. Нажмите N, чтобы оставить его без изменений. Затем нажмите Y, чтобы принять последующие запросы на удаление анонимных пользователей, отключение удаленного входа root и удаление тестовой базы данных. Наконец, согласитесь перезагрузить таблицу привилегий, чтобы изменения применились автоматически.

На этом установка MySQL завершена. Вы можете проверить, работает ли служба, введя следующую команду:

Step 2: Configure MySQL to Auto-start after Reboot

По умолчанию MySQL настроен на запуск после перезагрузки системы. Вы можете найти символическую ссылку на скрипт инициализации MySQL в каталоге /etc/rc2.d. Эти символические ссылки не создаются вручную. Вы можете использовать команду update-rc.d для включения и отключения служб.

Введите следующую команду, чтобы вывести содержимое каталога:

Проверьте, видите ли вы символическую ссылку на init-скрипт MySQL:

Символ S важен, потому что пока вы видите S скрипт в каталоге уровня запуска по умолчанию для службы, система инициализации запустит службу при загрузке сервера. Чтобы убедиться, что MySQL автоматически запустится после перезагрузки, введите следующую команду для перезагрузки системы:

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

Вывод укажет на то, что служба запущена. Это означает, что она запустилась автоматически после перезагрузки. Для служб, которые не настроены на автоматический запуск, вам придется настроить их самостоятельно.

Мы можем отключить службу MySQL и перезагрузить систему, чтобы проверить, запустится ли она автоматически. В системах Debian и Ubuntu вы можете использовать команду update-rc.d, чтобы добавлять или удалять службы из системы инициализации. Введите следующую команду, чтобы отключить службу MySQL:

Перезагрузите систему и подключитесь обратно по SSH. Попробуйте подключиться к MySQL с помощью следующей команды:

Вы получите ошибку MySQL вида:

Затем введите следующую команду, чтобы снова включить службу:

Если вы используете дистрибутив CentOS, команда будет следующей:

Поскольку MySQL изначально не запускался, вам нужно запустить его. Введите следующую команду:

Шаг 3. Настройка автоматического запуска службы (MySQL) после сбоя системы

System V не запускает процесс автоматически после сбоя. Мы можем симулировать сбой системы, найдя идентификатор процесса MySQL и завершив его. Введите следующую команду, чтобы найти идентификатор процесса MySQL:

В выводе найдите процессы MySQL. Основными процессами, запускающими MySQL, являются mysqld_safe и mysqld. Запишите их идентификаторы процессов (это цифры) и используйте следующие команды для их принудительного завершения:

Проверьте статус службы MySQL с помощью команды:

Вывод укажет на то, что MySQL остановлен. Мы можем перезапустить его вручную с помощью команды запуска службы. Однако нам нужен автоматический процесс. Чтобы добиться такого автоматического поведения, нам нужно отредактировать файл /etc/inittab. Это первый файл, который считывает инициализация System V при загрузке. Файл /etc/inittab содержит инструкции о том, как должен вести себя процесс в случае сбоя. При правильной настройке он снова перезапускает службу при возникновении сбоя. В нашем случае мы хотим убедиться, что MySQL является одной из таких служб.

Файл /etc/inittab крайне важен для дистрибутива Linux. Он определяет, перезагрузится ли ваша система или нет. Если вы допустите ошибку в командах, система может не запуститься при перезагрузке. Как мы уже указывали, мы надеемся, что вы пробуете эти команды только в тестовой серверной среде, а не в рабочей среде.

Сначала сделайте копию файла перед началом редактирования:

Затем откройте файл с помощью nano:

Прокрутите в конец файла и добавьте следующий фрагмент кода:

Приведенная выше команда перезапускает процесс mysql_safe после сбоя системы. Она содержит четыре поля, разделенных двоеточиями, как описано ниже:

  • ms: указывает идентификатор процесса.
  • 2345: указывает уровни запуска, к которым применяется команда. В данном случае: уровни запуска 2, 3, 4, 5.
  • respawn: указывает действие. В данном случае мы перезапускаем процесс.
  • /bin/sh /usr/bin/mysqld_safe: последняя часть определяет процесс — команду, которая выполняется для перезапуска процесса.

Теперь нажмите Ctrl + O и Enter, чтобы сохранить файл. Затем нажмите Ctrl + X, чтобы закрыть редактор. Введите следующую команду для запуска службы:

Перезагрузите сервер, затем выполните описанные ранее команды, чтобы найти номер процесса. Далее завершите процессы, начиная с команды ps -ef | grep mysql. Подождите несколько минут и введите следующую команду, чтобы проверить статус MySQL:

Вывод должен указывать на то, что служба MySQL запущена и работает, что означает, что она смогла перезапуститься после сбоя. Вы можете проделать то же самое для других служб на вашем сервере.

Автозапуск служб с помощью Upstart

Upstart — это еще одна система инициализации, которая изначально была представлена в Ubuntu 6, а затем стала стандартной в Ubuntu 9.10. RHEL 6 и его производные, а также Google Chrome OS также используют систему инициализации Upstart. Для выполнения шагов в этом разделе вам понадобится сервер под управлением любого из следующих дистрибутивов:

  • Ubuntu от 9.10 до Ubuntu 14.10, а также LTS-версия Ubuntu, то есть Ubuntu 14.04.
  • CentOS 6

Давайте посмотрим, как можно настроить файлы Upstart для автозапуска служб вашего сервера в случае перезагрузки или сбоя системы. Upstart использует конфигурационные файлы, хранящиеся в каталоге /etc/init для управления службами в дистрибутиве Linux. Большинство последних версий серверных приложений, таких как MySQL и Nginx, устанавливают свои собственные сценарии инициализации в каталог /etc/init . Таким образом, они будут запускаться после перезагрузки и после сбоя системы без вашего участия.

Контрольный список автозапуска для Upstart

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

  • Убедитесь, что у службы есть сценарий инициализации в каталоге /etc/init/service_name.conf service_name, где это фактическое имя вашей конкретной службы. Вам следует проверить наличие следующих двух строк в файле /etc/init/service_name.conf:
    • Строка, содержащая что-то вроде start on runlevel [2345]. Это указывает на то, что служба будет запущена при перезагрузке системы.
    • Строка, содержащая что-то вроде respawn. Это указывает на то, что служба будет перезапущена после сбоя системы.
  • Убедитесь, что в каталоге нет файла переопределения службы: /etc/init/service_name.override, если только вы или другой системный администратор не создали его ранее.
  • Введите следующие команды, чтобы остановить и запустить службу:
  • Перезагрузите систему и подключитесь снова через несколько минут. Теперь проведите несколько тестов, чтобы проверить работоспособность
  • После перезагрузки убедитесь, что служба запущена и работает. Введите следующую команду для поиска номера процесса, заменив service_name на фактическое имя тестируемой службы:
  • Получив номер процесса, введите следующую команду, чтобы завершить процесс:
  • Подождите несколько секунд и снова убедитесь, что процесс запущен и работает.

Практическая настройка Upstart на примере реальной службы

В следующем разделе мы попытаемся продемонстрировать, как можно использовать Upstart с реальной службой. Мы будем проводить тесты на сервере виртуальной машины Ubuntu 14.04 со службой MySQL. Подключитесь к вашему тестовому серверу Ubuntu 14.04 с помощью ssh или putty, если вы работаете в Windows. Как обычно, вы должны использовать пользователя без прав root с привилегиями sudo. После входа в систему мы можем приступить к выполнению шагов:

Шаг 1. Установка MySQL

Всегда помните о необходимости обновления пакетов перед установкой любого нового программного обеспечения:

Теперь введите следующую команду для установки сервера MySQL:

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

Следуйте подсказкам, как вы делали в предыдущем разделе. Затем сбросьте привилегии (flush privileges), чтобы изменения вступили в силу немедленно.

Шаг 2: Настройка автоматического запуска службы (MySQL) после перезагрузки системы

MySQL настроен на автоматический запуск после перезагрузки. Мы рассматриваем его конфигурационные файлы только для того, чтобы узнать, как настроить наши собственные приложения для автоматического запуска после перезагрузки. Служба MySQL была запущена автоматически после установки. Тем не менее, давайте подтвердим, что она работает, введя следующую команду:

Вы должны увидеть вывод, указывающий на то, что служба MySQL запущена, примерно следующий:

Перезагрузите сервер и войдите снова. Еще раз введите следующую команду, чтобы проверить, что служба работает:

Вывод укажет на то, что MySQL запущен, то есть он был автоматически запущен после перезагрузки. В данном случае ничего менять не нужно. Однако для других приложений поведение может отличаться. Возможно, вам интересно, как система инициализации Upstart узнает, что она должна автоматически запускать MySQL после перезагрузки. MySQL устанавливает свой конфигурационный файл запуска Upstart по пути /etc/init/mysql.conf. Файлы Upstart — это не скрипты оболочки, а текстовые файлы с блоками скриптов для событий pre-start и post-start. Эти блоки указывают системе Upstart, что выполнять при запуске процесса MySQLd или когда он уже запущен.

Введите следующую команду, чтобы открыть файл в редакторе nano:

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

Как видно, блок start указывает MySQL запускаться на уровнях выполнения 2,3,4,5, но не 0,1,6. Если вы определяете конфигурацию Upstart для своего приложения, вы будете описывать ее в этом разделе. Блок respawn указывает Upstart, что делать после сбоя. Мы обсудим это в следующем разделе, поэтому оставьте файл открытым в редакторе nano.

Шаг 3: Настройка автоматического запуска службы (MySQL) после сбоя

Директива respawn в файле /etc/init/mysql.conf указывает Upstart перезапустить службу MySQL после сбоя.

Директива respawn limit указывает Upstart, сколько раз следует пытаться перезапустить аварийно завершившуюся службу MySQL за интервал, указанный в секундах. Первый аргумент (2) указывает количество попыток. Второй аргумент (5) указывает интервал в секундах. Если после сбоя Upstart не удастся перезапустить службу MySQL в пределах этого порога, она останется остановленной. Такое поведение разработано для защиты стабильности системы в случае, если она будет непрерывно пытаться перезапускать постоянно падающие службы. Теперь вы можете закрыть редактор без внесения изменений.

Давайте проверим, запустится ли MySQL автоматически после сбоя. Введите следующую команду, чтобы проверить статус и получить номер процесса службы MySQL:

Вывод должен быть примерно таким. Запишите номер процесса, так как мы будем использовать его позже:

Затем введите следующую команду, чтобы принудительно завершить процесс. Это имитирует сбой. Замените число на номер процесса, который вы получили в предыдущей команде:

Снова проверьте статус MySQL, введя следующую команду:

Служба должна снова работать, но, вероятно, с другим номером процесса:

Это происходит из-за директивы respawn в /etc/init/mysql.conf файл. Он гарантирует, что в случае любого системного сбоя MySQL запустится автоматически. Таким образом, ваше приложение, зависящее от базы данных MySQL, продолжит работать должным образом.

Автозапуск служб с помощью Systemd

Systemd — это система инициализации, используемая в большинстве современных дистрибутивов Linux. Скорее всего, именно её вы будете использовать, когда запустите новый VPS. Впервые она была представлена в Fedora. Она поставляется с RHEL 7 и его производными, такими как CentOS 7. Начиная с Ubuntu 15.04, Systemd присутствует по умолчанию. Systemd обратно совместима со скриптами инициализации и командами System V. Следовательно, любая служба System V должна работать под управлением Systemd. Большинство команд, используемых в System V и Upstart, были изменены для работы с Systemd.

С Systemd большинство серверных приложений, таких как MySQL и Nginx, будут запускаться автоматически после перезагрузки или выключения, без необходимости что-либо менять. Для ваших собственных приложений вам необходимо создать свои собственные скрипты инициализации для автоматического перезапуска служб.

Для получения более подробной информации о Systemd ознакомьтесь с нашим руководством по управлению службами и юнитами Systemd с помощью Systemctl.

Чек-лист автозапуска для Systemd

Вот несколько справочных конфигураций, которые следует проверить, чтобы убедиться, что ваша служба настроена на автоматический запуск с помощью Systemd.

  • Служба должна иметь рабочий скрипт инициализации Systemd, расположенный по адресу /etc/systemd/system/multi-user.target.wants/serviceName.service. ServiceName — это фактическое имя настраиваемой вами службы.
  • Команда для включения службы:
  • Команда создает символическую ссылку в каталоге /etc/systemd/system/multi-user.target.wants/, которая может выглядеть примерно так:
  • После создания этой символической ссылки вы включите автоматический перезапуск после загрузки.
  • Чтобы активировать изменения, перезагрузите системный демон, а затем перезапустите службу с помощью следующих команд:
  • Чтобы проверить, запустит ли ваша конфигурация службу после перезагрузки, вы можете перезагрузить систему:
  • После перезагрузки системы найдите номер процесса с помощью команды:
  • Обратите внимание на номер процесса и завершите его с помощью команды:
  • Подождите несколько секунд и снова выполните поиск службы, чтобы убедиться, что она снова запущена.

Практическая настройка Systemd на примере реальной службы

В этом разделе мы попробуем настроить службу MySQL на виртуальной машине Ubuntu 20.04.

Шаг 1. Подключитесь к своему виртуальному приватному серверу (Ubuntu 20.04 или CentOS 7 x64)

Войдите на свой VPS или создайте его в панели Cloudsigma и подключитесь с помощью SSH или Putty, если вы используете Windows. В этой части руководства мы используем сервер Ubuntu 20.04. Те же команды применимы и к CentOS 7. Обязательно используйте пользователя без прав root, но с привилегиями sudo.

Шаг 2. Установите MySQL (настраиваемую службу)

Сначала обновите систему:

Затем вы можете установить сервер MySQL с помощью команды:

Затем выполните следующую команду, чтобы начать настройку безопасности MySQL:

Скрипт спросит вас, хотите ли вы настроить компонент VALIDATE PASSWORD, или вы можете нажать любую клавишу, чтобы продолжить без включения этого компонента. Перейдите по этой ссылке, чтобы узнать больше о компоненте проверки паролей MySQL.

Нажмите 1, чтобы включить его, а затем выберите средний уровень, нажав 1. Введите надежный пароль: комбинацию заглавных и строчных букв, специальных символов и цифр. Подтвердите пароль и подтвердите запрос, в котором вас спрашивают, хотите ли вы использовать введенный пароль в качестве пароля root. Для остальных запросов нажмите y, чтобы принять их, как вы делали в предыдущих разделах. Наконец, сбросьте привилегии (flush privileges) для MySQL, чтобы перезагрузить изменения.

Шаг 3: Настройка автозапуска MySQL после перезагрузки

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

Сначала проверьте, была ли служба MySQL настроена для запуска при загрузке. Введите следующую команду (обратите внимание, что в CentOS служба MySQL называется mysqld):

Вот вывод:

CS screenshot

Затем перезагрузите VPS, введя следующую команду:

Подключитесь обратно по SSH и введите следующую команду, чтобы проверить статус службы MySQL:

Вы должны получить вывод, похожий на тот, что показан на скриншоте ниже:

System Crash 3

Чтобы отключить службу MySQL, введите следующую команду:

Вывод указывает на то, что символические ссылки на службу MySQL были удалены из Systemd:

screenshot it 4

Вы можете проверить, включена ли служба в системе инициализации Systemd, введя следующую команду:

Вывод покажет, что она отключена. Если вы перезагрузите систему, MySQL не запустится при загрузке:

disabled screenshot

Включите службу, введя следующую команду:

Вывод показывает символическую ссылку на службу MySQL, созданную в инициализации Systemd:

screenshot 5

При перезагрузке служба MySQL запустится автоматически.

Шаг 4: Настройка автозапуска MySQL после сбоя

MySQL настроен на автоматический перезапуск после сбоя. Давайте посмотрим, как эта конфигурация реализована в Systemd. Systemd использует юнит-файлы для конфигурации. Введите следующую команду, чтобы открыть конфигурационный файл mysql.service в nano:

Вывод выглядит следующим образом:

System Crash 2

Нас интересует директива Restart. Согласно определению, MySQL перезапустится в случае сбоя. Директива Restart определяет, что должно происходить в Systemd, точно так же, как директива Respawn в Upstart.

Не все службы имеют эту директиву. Чтобы включить перезапуск службы после сбоя, вы всегда можете добавить директиву Restart в блок [Service] конфигурационного юнит-файла службы. Если заголовок [Service] не существует, добавьте его. Теперь выйдите из редактора, нажав Ctrl + X.

Чтобы сымитировать сбой, найдите идентификатор процесса (PID) MySQL, введя следующую команду:

Команда проверки статуса отображает идентификатор процесса, в нашем случае это 3555:

System Crash 1

Введите следующую команду, чтобы принудительно завершить процесс. Замените его на идентификатор процесса, который вы получили на своем сервере:

Введите следующую команду для проверки статуса:

Вывод показывает, что MySQL запущен, но с новым идентификатором процесса. Это означает, что он был автоматически перезапущен после сбоя:

screenshot 8

Заключение

В этом руководстве мы познакомили вас с тремя системами инициализации в дистрибутивах Linux: System V, Upstart и Systemd. Мы узнали, как использовать любую из систем инициализации для настройки автозапуска постоянно работающих служб после перезагрузки или сбоя системы. Это должно послужить отправной точкой, когда вам понадобится настроить свои службы. Первая часть этой серии была в основном практическим руководством. вторая часть более теоретическая и содержит больше подробностей о том, что мы делали в первой части. Пока не удаляйте свои тестовые серверы, так как вы будете использовать их и во второй части.

Приятной работы!

 

author

Manpreet Singh

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.