Introdução
Na computação, as coisas nem sempre saem como planejado. Muitas vezes, falhas inesperadas do sistema levam os administradores de sistema a iniciar reinicializações e reiniciar serviços individuais. Descobrir e reiniciar cada serviço que seu aplicativo precisa para funcionar após uma falha do sistema ou reinicialização pode ser tedioso. Nesta primeira parte do tutorial de duas partes, mostraremos como configurar serviços para iniciarem automaticamente após uma falha do sistema ou reinicialização do servidor com exemplos práticos. A segunda parte cobrirá informações teóricas sobre o que alcançamos na parte um.
Usaremos o MySQL serviço de banco de dados para exemplos práticos. No entanto, os mesmos princípios se aplicam a outros processos que compõem um servidor completo, como Nginx, Apache, Redis, ou outros aplicativos. Você pode conferir nossos tutoriais sobre como instalar o MySQL, Nginx, e Apache.
Em Linux distribuições, existem três principais sistemas de inicialização (init), dependendo da distribuição que você está executando. Algumas distribuições podem vir com dois ou mais sistemas init, conforme descrito abaixo:
- System V – um sistema init mais antigo encontrado em distribuições mais antigas como:
- Ubuntu 9.04 e anteriores
- CentOS 5 e anteriores
- Debian 6 e anteriores
- Upstart – usado em distribuições anteriores, tais como:
- CentOS 6
- Ubuntu 9.10 a Ubuntu 14.10 e Ubuntu 14.04
- Systemd – usado nas distribuições mais recentes, tais como:
- CentOS 7
- Debian 7 e 8.
- Ubuntu 15.04 e mais recentes
Contexto
É comum que sistemas operacionais, e especialmente sistemas Linux e Unix tenham processos e serviços executando em segundo plano. Tais serviços podem ter sido fornecidos com o software do sistema operacional. Alguns podem ter vindo com os aplicativos de usuário que você instala.
Os serviços do Sistema Operacional incluem:
- sshd – É o daemon que permite conexões remotas.
- cupsd – É o daemon que controla a impressão.
Os serviços de aplicativos instalados incluem:
- httpd/apache2 – Um serviço que vem com o servidor web Apache2.
- nginx – Um serviço que vem com o servidor web Nginx.
Para garantir que nossos aplicativos web, bancos de dados, servidores de e-mail, etc. estejam acessíveis, tais serviços devem ser executados continuamente. Se você é um administrador de sistemas ou um desenvolvedor de aplicativos curioso, deseja garantir que esses serviços sejam executados continuamente e, no caso infeliz de uma falha do sistema, que eles iniciem automaticamente após a reinicialização do sistema. E é exatamente isso que aprenderemos neste tutorial prático.
Embora definir alertas e monitorar continuamente sua distribuição Linux seja crucial, alguns serviços Linux podem se autorrecuperar se bem configurados, graças aos sistemas init que gerenciam os serviços.
Nas distribuições Linux, existem modos de operação que implementam a inicialização do sistema chamados runlevels. Para que um serviço seja iniciado automaticamente, ele deve ser adicionado a um runlevel. Todo sistema do tipo Linux e Unix possui quatro runlevels comuns, conforme listado abaixo:
- 0 – O Runlevel 0 indica o desligamento do sistema.
- 1 – O Runlevel 1 indica o modo de usuário único, modo de recuperação.
- 2, 3, 4 – Estes runlevels indicam estados em que o sistema foi inicializado em modo multiusuário, com rede habilitada, em modo texto.
- 5 – O Runlevel 5 indica o modo multiusuário com rede habilitada, modo gráfico.
- 6 – O Runlevel 6 indica a reinicialização do sistema.
Neste tutorial, você aprenderá como configurar um serviço Linux para iniciar automaticamente quando o sistema reiniciar usando os três modos init diferentes explicados anteriormente: System V, Upstart e Systemd.
Pré-requisitos
Este tutorial prático pressupõe que você tenha um VPS Linux que possa usar para acompanhar. Você pode aproveitar o período de teste gratuito na Cloudsigma e iniciar alguns servidores para testar os comandos. Você pode acompanhar com o nosso tutorial passo a passo sobre como configurar seus servidores Ubuntu.
Os servidores que você criar neste tutorial servem puramente para acompanhar as práticas reais e você não deve testar os comandos em um servidor de produção, pois muitos serviços serão interrompidos.
Algumas das distribuições de que você precisará:
- Ubuntu 9.04 e anteriores, ou Debian 6 x64 (será usado para demonstrar o sistema init System V)
- Ubuntu 14.04 x64 (será usado para demonstrar o Upstart)
- CentOS 7 x64 (será usado para demonstrar o systemd).
Certifique-se de ter configurado um usuário não-root com privilégios sudo. Você pode dar uma olhada no nosso tutorial sobre como configurar o arquivo sudoers aqui.
Usando o System V
Este é o sistema init mais antigo que era usado em distribuições Linux anteriores, tais como:
- Debian 6 e anteriores
- CentOS 5 e anteriores
- Ubuntu 9.04 e anteriores
A maioria das aplicações de servidor instaláveis, como MySQL e Nginx, vem com scripts init salvos no diretório /etc/init.d por padrão. Esses scripts permitem que elas iniciem após uma reinicialização. No entanto, elas podem não estar configuradas para iniciar automaticamente após uma falha do sistema.
Lista de verificação de inicialização automática para o System V
O primeiro passo é verificar a disponibilidade de um script init Bash funcional no diretório /etc/init.d/service. Para habilitar o serviço, nas distribuições Debian ou Ubuntu, use o comando update-rc.d, em um sistema CentOS, use chkconfig. Substitua pelo nome real do seu serviço:
|
1 |
sudo update-rc.d service enable |
O comando acima cria um link simbólico no diretório /etc/rc2.d que se parece com a saída abaixo. Não o crie você mesmo, pois ele é gerado automaticamente:
|
1 |
lrwxrwxrwx 1 root root 20 Dec 10 07:09 S02mysql -> ../init.d/service |
No final do arquivo /etc/inittab adicione uma linha respawn como mostrado no exemplo genérico abaixo. Lembre-se de substituí-la pelo caminho real para o script de inicialização da sua aplicação:
|
1 |
id:2345:respawn:/bin/sh /path/to/your-application/startup |
Insira os seguintes comandos para parar e iniciar o serviço:
|
1 2 |
sudo service service-name stop sudo service service-name start |
Em seguida, reinicie o servidor:
|
1 |
sudo reboot |
Como testar as alterações?
Após reiniciar o servidor, verifique se o serviço está ativo procurando pelo número do processo usando o comando:
|
1 |
ps -ef | grep service-name |
Encerre o processo usando o comando:
|
1 |
sudo kill -9 process_number |
Após cinco minutos, verifique se o serviço está ativo e em execução.
Configuração prática do System V com um serviço real
Nas etapas a seguir, testaremos uma aplicação de servidor real, como o MySQL. Você deve ter acesso a uma máquina virtual Debian 6. Com uma conta que tenha privilégios sudo, conecte-se a ela usando SSH ou putty se estiver em um desktop Windows.
Step 1: Install MySQL
Insira o seguinte comando para instalar o MySQL:
|
1 |
sudo apt-get install mysql-server -y |
Quando a instalação começar, você será solicitado a inserir uma senha root. Em seguida, insira uma senha de sua escolha e confirme-a. Aguarde a conclusão da instalação e insira o seguinte comando para começar a proteger o MySQL:
|
1 |
mysql_secure_installation |
Você será solicitado a inserir a senha root que definiu anteriormente. Pressione N para mantê-la. Em seguida, pressione Y para aceitar as solicitações seguintes para remover usuários anônimos, desabilitar o login remoto do root e remover o banco de dados de teste. Por fim, aceite recarregar a tabela de privilégios para que as alterações sejam refletidas automaticamente.
Isso conclui a instalação do MySQL. Você pode verificar se o serviço está em execução inserindo o seguinte comando:
|
1 |
service mysql status |
Step 2: Configure MySQL to Auto-start after Reboot
O MySQL é configurado por padrão para iniciar após uma reinicialização do sistema. Você pode encontrar o link simbólico para o script de inicialização do MySQL no diretório /etc/rc2.d. Esses links simbólicos não são criados manualmente. Você pode usar o comando update-rc.d para habilitar e desabilitar serviços.
Insira o seguinte comando para listar o conteúdo do diretório:
|
1 |
ls -l /etc/rc2.d |
Verifique se você consegue notar o link simbólico para o script init do MySQL:
|
1 |
lrwxrwxrwx 1 root root 15 Dec 2 10:42 S01mysql -> ../init.d/mysql |
O S é importante, porque desde que você consiga ver um S script no diretório de runlevel padrão para o serviço, o sistema init iniciará o serviço quando o servidor for inicializado. Para verificar se o MySQL iniciará automaticamente após a reinicialização, insira o seguinte comando para reiniciar o sistema:
|
1 |
sudo reboot |
A sua conexão ssh será encerrada durante a reinicialização. Aguarde um ou dois minutos e conecte-se novamente. Execute o seguinte comando para verificar se o serviço está em execução:
|
1 |
service mysql status |
A saída indicará que o serviço está em execução. Isso significa que ele iniciou automaticamente após a reinicialização. Para serviços que não estão configurados para iniciar automaticamente, você terá que configurá-los manualmente.
Podemos desativar o serviço MySQL e reiniciar o sistema para testar se ele inicia automaticamente. Em sistemas Debian e Ubuntu, você pode usar o comando update-rc.d para adicionar ou remover serviços do sistema init. Insira o seguinte comando para desativar o serviço MySQL:
|
1 |
sudo update-rc.d mysql disable |
Reinicie o sistema e conecte-se novamente usando ssh. Tente conectar-se ao MySQL usando o seguinte comando:
|
1 |
mysql -u root -p |
Você receberá um erro do MySQL como:
|
1 |
ERROR 2002 (HY000): Can't connect to local MySQL server |
Em seguida, insira o seguinte comando para reativar o serviço:
|
1 |
sudo update-rc.d mysql enable |
Se você estiver em uma distribuição CentOS, o comando será:
|
1 |
sudo chkconfig mysql enable |
Como o MySQL não estava iniciando inicialmente, você precisa iniciá-lo. Insira o seguinte comando:
|
1 |
sudo service mysql start |
Passo 3: Configurar um Serviço (MySQL) para Iniciar Automaticamente após uma Falha do Sistema
O System V não iniciará um processo automaticamente após uma falha. Podemos simular uma falha do sistema encontrando o ID do processo do MySQL e encerrando-o. Insira o seguinte comando para encontrar o ID do processo do MySQL:
|
1 |
ps -ef | grep mysql |
A partir da saída, encontre os processos do MySQL. Os principais processos que executam o MySQL são mysqld_safe e mysqld. Anote seus IDs de processo (estes são números) e use os seguintes comandos para encerrá-los:
|
1 2 |
sudo kill -9 mysqldsafe_number sudo kill -9 mysqld_number |
Verifique o status do serviço MySQL usando o comando:
|
1 |
sudo service mysql status |
A saída indicará que o MySQL parou. Podemos reiniciá-lo manualmente usando o comando service start. No entanto, queremos um processo automático. Para alcançar esse comportamento automático, precisamos editar o arquivo /etc/inittab. Este é o primeiro arquivo que o System V init lê ao inicializar. O arquivo /etc/inittab contém instruções sobre como um processo deve se comportar se falhar. Se configurado corretamente, ele reinicia o sistema novamente quando houver uma falha. No nosso caso, queremos garantir que o MySQL seja um desses serviços.
O arquivo /etc/inittab é extremamente crucial para uma distribuição Linux. Ele determina se o seu sistema irá reiniciar ou não. Se você cometer um erro nos comandos, o sistema pode não iniciar quando você reiniciar. Como indicamos, esperamos que você esteja apenas testando esses comandos em um ambiente de servidor de teste e não em um ambiente de produção.
Primeiro, faça uma cópia do arquivo antes de começar a editar:
|
1 |
sudo cp /etc/inittab /etc/inittab.original |
Em seguida, abra o arquivo usando o nano:
|
1 |
sudo nano /etc/inittab |
Role até o final do arquivo e adicione o seguinte trecho de código:
|
1 |
ms:2345:respawn:/bin/sh /usr/bin/mysqld_safe |
O comando acima reinicia o processo mysql_safe após uma falha do sistema. Ele possui quatro campos separados por dois-pontos, conforme explicado abaixo:
- ms: Especifica um ID para o processo.
- 2345: Especifica os runlevels aos quais o comando se aplica. Neste caso: runlevels 2, 3, 4, 5.
- respawn: Especifica a ação. Neste caso, estamos recriando (respawning) ou reiniciando o processo.
- /bin/sh /usr/bin/mysqld_safe: A última parte define o processo – o comando que é executado para reiniciar o processo.
Agora pressione Ctrl + O and Enter para salvar o arquivo. Em seguida, pressione Ctrl + X para fechar o editor. Insira o seguinte comando para iniciar o serviço:
|
1 |
sudo service mysql start |
Reinicie o servidor e execute os comandos explicados anteriormente para encontrar o número do processo. Em seguida, encerre os processos, começando com o comando ps -ef | grep mysql. Aguarde alguns minutos e insira o seguinte comando para verificar o status do MySQL:
|
1 |
sudo service mysql status |
A saída deve indicar que o serviço MySQL está ativo e em execução, o que significa que ele foi capaz de reiniciar após uma falha. Você pode seguir o mesmo processo para outros serviços no seu servidor.
Iniciando serviços automaticamente com o Upstart
Upstart é outro sistema de inicialização que foi introduzido inicialmente no Ubuntu 6 e posteriormente tornou-se o padrão no Ubuntu 9.10. O RHEL 6 e seus derivados, e o Chrome OS do Google também usam o sistema de inicialização Upstart. Para as etapas desta seção, você deve ter um servidor executando qualquer uma das seguintes distribuições:
- Ubuntu 9.10 a Ubuntu 14.10, e a versão LTS do Ubuntu, ou seja, Ubuntu 14.04.
- CentOS 6
Vejamos como você pode configurar os arquivos do Upstart para iniciar automaticamente os serviços do seu servidor em caso de reinicializações ou falhas do sistema. O Upstart usa arquivos de configuração armazenados no diretório /etc/init para controlar serviços em uma distribuição Linux. As versões mais recentes de aplicativos de servidor, como MySQL e Nginx, instalam seus próprios scripts de inicialização no diretório /etc/init. Assim, eles serão iniciados após a reinicialização e após uma falha do sistema sem que você precise fazer nada.
Lista de verificação de inicialização automática para o Upstart
Aqui estão algumas configurações de referência para verificar e garantir que seu serviço esteja configurado para iniciar automaticamente.
- Certifique-se de que o serviço tenha um script de inicialização no diretório /etc/init/service_name.conf – service_name sendo o nome real do seu serviço específico. Você deve verificar as duas linhas seguintes no arquivo /etc/init/service_name.conf arquivo:
- Uma linha contendo algo como start on runlevel [2345]. Ela indica que o serviço será iniciado na reinicialização do sistema.
- Uma linha contendo algo como respawn. Ela indica que o serviço será recriado/reiniciado após uma falha do sistema.
- Certifique-se de que não haja nenhum arquivo de substituição de serviço (override) no diretório: /etc/init/service_name.override. A menos que você ou outro administrador do sistema o tenha criado anteriormente.
- Insira os seguintes comandos para parar e iniciar o serviço:
|
1 2 |
sudo initctl stop service_name sudo initctl start service_name |
- Reinicie o sistema e conecte-se novamente após alguns minutos. Agora, execute alguns testes para ver se as coisas estão funcionando
- Após a reinicialização, verifique se o serviço está ativo e em execução. Insira o seguinte comando para procurar o número do processo, substituindo service_name pelo nome real do serviço que você está testando:
|
1 |
ps -ef | grep service_name |
- Assim que tiver o número do processo, insira o seguinte comando para encerrar o processo:
|
1 |
sudo kill -9 process_number |
- Aguarde alguns segundos e verifique novamente se o processo está ativo e em execução.
Configuração prática do Upstart com um serviço real
Na próxima seção, tentaremos demonstrar como você pode usar o Upstart com um serviço real. Executaremos os testes em um servidor de máquina virtual Ubuntu 14.04 com o MySQL como serviço. Conecte-se ao seu servidor de teste Ubuntu 14.04 usando ssh ou putty se estiver no Windows. Como regra geral, você deve usar um usuário não-root com privilégios sudo. Assim que estiver logado, podemos começar as etapas:
Etapa 1: Instalar o MySQL
Lembre-se sempre de atualizar seus pacotes antes de instalar qualquer software novo:
|
1 |
sudo apt-get update |
Agora, insira o seguinte comando para instalar o servidor MySQL:
|
1 |
sudo apt-get install mysql-server –y |
Crie uma senha root quando solicitado. Aguarde a conclusão da instalação e execute o seguinte comando para começar a proteger sua instalação do MySQL:
|
1 |
mysql_secure_installation |
Siga as instruções, como fez na seção anterior. Em seguida, limpe os privilégios (flush privileges) para que as alterações tenham efeito imediato.
Passo 2: Configurando um Serviço (MySQL) para Iniciar Automaticamente após a Reinicialização do Sistema
O MySQL está configurado para iniciar automaticamente após uma reinicialização. Estamos apenas analisando seus arquivos de configuração para aprender como podemos configurar nossos aplicativos personalizados para também iniciarem automaticamente após uma reinicialização. O serviço MySQL foi iniciado automaticamente após a instalação. No entanto, vamos confirmar se ele está em execução digitando o seguinte comando:
|
1 |
sudo initctl status mysql |
Você deve ver uma saída indicando que o serviço MySQL está em execução, algo como:
|
1 |
mysql start/running, process 2553 |
Reinicie o servidor e faça login novamente. Digite novamente o seguinte comando para testar se ele está em execução:
|
1 |
sudo initctl status mysql |
A saída indicará que o MySQL está em execução, o que significa que ele foi iniciado automaticamente após a reinicialização. Neste caso, nada precisa ser alterado. No entanto, esse comportamento pode não ser o mesmo para outros aplicativos. Você deve estar se perguntando como o sistema de inicialização Upstart sabe que deve iniciar automaticamente o MySQL após a reinicialização. O MySQL instala seu arquivo de configuração de inicialização do Upstart no local /etc/init/mysql.conf. Os arquivos do Upstart não são scripts de shell, mas arquivos de texto com blocos de script para eventos pré-inicialização (pre-start) e pós-inicialização (post-start). Os blocos instruem o sistema Upstart sobre o que executar quando o processo MySQLd estiver iniciando ou quando já tiver iniciado.
Digite o seguinte comando para abrir o arquivo no editor nano:
|
1 |
sudo nano /etc/init/mysql.conf |
A saída do arquivo deve ser semelhante a esta:
|
1 2 3 4 5 6 7 8 |
description "MySQL Server" author "Mario Limonciello <superm1@ubuntu.com>" start on runlevel [2345] stop on starting rc RUNLEVEL=[016] respawn respawn limit 2 5 |
Como visto, o bloco start instrui o MySQL a iniciar nos runlevels 2, 3, 4, 5, e não em 0, 1, 6. Se você estiver definindo uma configuração do Upstart para o seu aplicativo, você a definirá nesta seção. O bloco respawn instrui o Upstart sobre o que fazer após uma falha. Discutiremos isso na próxima seção, portanto, mantenha o arquivo aberto no editor nano.
Passo 3: Configurando um Serviço (MySQL) para Iniciar Automaticamente Após uma Falha
A diretiva respawn no arquivo /etc/init/mysql.conf instrui o Upstart a reiniciar o serviço MySQL após uma falha.
A diretiva respawn limit instrui o Upstart sobre quantas vezes ele deve tentar reiniciar o serviço MySQL que falhou em um intervalo especificado em segundos. O primeiro argumento, (2), indica o número de tentativas. O segundo argumento, (5), indica o intervalo em segundos. Se, após uma falha, o Upstart não conseguir reiniciar (respawn) o serviço MySQL dentro do limite, ele permanecerá parado. Esse comportamento foi projetado para proteger o sistema, evitando afetar sua estabilidade caso ele continue tentando reiniciar serviços que falham continuamente. Agora você pode fechar o editor sem fazer nenhuma alteração.
Vamos testar se o MySQL voltará a funcionar automaticamente após uma falha. Digite o seguinte comando para verificar o status e obter o número do processo do serviço MySQL:
|
1 |
sudo initctl status mysql |
A saída deve ser algo como isto. Anote o número do processo, pois o usaremos mais tarde:
|
1 |
mysql start/running, process 738 |
Em seguida, digite o seguinte comando para encerrar (kill) o processo. Isso simula uma falha. Substitua pelo número do processo que você obteve no comando anterior:
|
1 |
sudo kill -9 7738 |
Verifique novamente o status do MySQL digitando o seguinte comando:
|
1 |
sudo initctl status mysql |
Ele deve estar em execução novamente, mas provavelmente com um número de processo diferente:
|
1 |
mysql start/running, process 1428 |
Isso acontece por causa da diretiva respawn no /etc/init/mysql.conf arquivo. Ele garante que, em caso de qualquer falha no sistema, o MySQL iniciará automaticamente. Portanto, sua aplicação que depende de um banco de dados MySQL continuará funcionando conforme o esperado.
Iniciando serviços automaticamente com o Systemd
Systemd é um sistema de inicialização encontrado na maioria das distribuições Linux recentes. É provável que seja o que você usará quando você criar um novo VPS. Ele foi introduzido pela primeira vez no Fedora. Ele vem com o RHEL 7 e seus derivados, como o CentOS 7. A partir do Ubuntu 15.04, você encontrará o Systemd nativamente. O Systemd é compatível com versões anteriores dos scripts e comandos de inicialização do System V. Portanto, qualquer serviço do System V deve funcionar no Systemd. A maioria dos comandos usados no System V e Upstart foi modificada para funcionar com o Systemd.
Com o Systemd, a maioria dos aplicativos de servidor, como o MySQL e o Nginx, iniciará automaticamente após uma reinicialização ou desligamento, sem que você precise alterar nada. Para seus aplicativos personalizados, você deve criar seus próprios scripts de inicialização para reiniciar os serviços automaticamente.
Para obter informações mais detalhadas sobre o Systemd, confira nosso tutorial sobre como gerenciar serviços e unidades do Systemd com o Systemctl.
Lista de verificação de inicialização automática para o Systemd
Aqui estão algumas configurações de referência para verificar e garantir que seu serviço esteja configurado para iniciar automaticamente com o Systemd.
- O serviço deve ter um script de inicialização do Systemd funcional localizado em /etc/systemd/system/multi-user.target.wants/serviceName.service. ServiceName é o nome real do serviço que você está configurando.
- O comando para habilitar o serviço é:
|
1 |
sudo systemctl enable serviceName.service |
- O comando cria um link simbólico no diretório /etc/systemd/system/multi-user.target.wants/ que pode parecer semelhante a:
|
1 |
lrwxrwxrwx 1 root root 11 Dez 1 04:43 /etc/systemd/system/multi-user.target.wants/serviceName.service -> /usr/lib/systemd/system/serviceName.service |
- Com esse link simbólico configurado, você terá habilitado a reinicialização automática após a inicialização.
- Para ativar as alterações, recarregue o daemon do sistema e, em seguida, reinicie o serviço usando os seguintes comandos:
|
1 2 3 |
sudo systemctl daemon-reload sudo systemctl restart serviceName.service |
- Para testar se suas configurações iniciarão o serviço após uma reinicialização, você pode reiniciar o sistema:
|
1 |
sudo reboot |
- Quando o sistema reiniciar, procure pelo número do processo usando o comando:
|
1 |
ps -ef | grep serviceName |
- Anote o número do processo e encerre-o usando o comando:
|
1 |
sudo kill -9 process_number |
- Aguarde alguns segundos e procure pelo serviço novamente para verificar se ele está ativo novamente.
Configuração prática do Systemd com um serviço real
Nesta seção, tentaremos configurar o serviço MySQL em uma máquina virtual Ubuntu 20.04.
Passo 1: Conecte-se ao seu Servidor Virtual Privado (Ubuntu 20.04 ou CentOS 7 x64)
Faça login no seu VPS ou crie um a partir do painel da Cloudsigma e conecte-se usando SSH ou Putty se estiver no Windows. Estamos usando o servidor Ubuntu 20.04 para esta seção do tutorial. Os mesmos comandos podem ser aplicados ao CentOS 7. Certifique-se de usar um usuário não-root com privilégios sudo.
Passo 2: Instalar o MySQL (o serviço que estamos configurando)
Primeiro, atualize seu sistema:
|
1 |
sudo apt update |
Em seguida, você pode instalar o servidor MySQL usando o comando:
|
1 |
sudo apt install mysql-server –y |
Em seguida, execute o seguinte comando para começar a proteger o MySQL:
|
1 |
sudo mysql_secure_installation |
O script pergunta se você deseja configurar o componente VALIDATE PASSWORD ou pressionar qualquer letra para prosseguir sem ativar o componente. Siga este link para saber mais sobre o componente de validação de senha do MySQL.
Pressione 1 para ativá-lo e, em seguida, escolha o nível médio pressionando 1. Insira uma senha forte: uma combinação de maiúsculas, minúsculas, caracteres especiais e números. Confirme a senha e confirme a solicitação que pergunta se você gostaria de usar a senha inserida como a senha root. Para as demais solicitações, pressione y para aceitá-las como fez nas seções anteriores. Por fim, limpe os privilégios do MySQL para recarregar as alterações.
Passo 3: Configurar o MySQL para Iniciar Automaticamente Após a Reinicialização
O MySQL está configurado para iniciar após uma reinicialização, portanto não há alterações a serem feitas. No entanto, podemos usar os arquivos de configuração do MySQL para aprender como configurar nossos arquivos personalizados.
Primeiro, verifique se o serviço do MySQL foi configurado para iniciar no momento da inicialização. Insira o seguinte comando (observe que no CentOS o serviço do MySQL é chamado de mysqld):
|
1 |
sudo systemctl is-enabled mysql.service |
Aqui está a saída:

Em seguida, reinicie o VPS inserindo o seguinte comando:
|
1 |
sudo reboot |
Conecte-se novamente usando ssh e insira o seguinte comando para verificar o status do serviço MySQL:
|
1 |
sudo systemctl status mysql.service |
Você deve obter uma saída semelhante à mostrada na captura de tela abaixo:

Para desativar o serviço MySQL, insira o seguinte comando:
|
1 |
sudo systemctl disable mysql.service |
Aqui a saída indica que os links simbólicos para o serviço MySQL foram removidos do Systemd:

Você pode testar se o serviço está ativado com o sistema de inicialização Systemd inserindo o seguinte comando:
|
1 |
sudo systemctl is-enabled mysql.service |
A saída mostrará que ele está desativado. Se você reiniciar o sistema, o MySQL não iniciará no momento da inicialização:
![]()
Ative o serviço inserindo o seguinte comando:
|
1 |
sudo systemctl enable mysql.service |
A saída mostra o link simbólico para o serviço MySQL criado no init do Systemd:

Quando você reiniciar, o serviço MySQL iniciará automaticamente.
Passo 4: Configurar o MySQL para Iniciar Automaticamente Após uma Falha
O MySQL está configurado para reiniciar automaticamente após uma falha. Vamos ver como essa configuração é implementada no Systemd. O Systemd usa arquivos de unidade para configuração. Insira o seguinte comando para abrir o arquivo de configuração mysql.service no nano:
|
1 |
sudo nano /etc/systemd/system/multi-user.target.wants/mysql.service |
A saída se parece com isso:

Nossa preocupação é com a diretiva Restart. Conforme definido, o MySQL será reiniciado se houver uma falha. A diretiva Restart define o que deve acontecer no Systemd, assim como a diretiva Respawn no Upstart.
Nem todos os serviços terão essa diretiva. Para permitir que um serviço seja reiniciado após uma falha, você sempre pode adicionar a diretiva Restart sob o bloco [Service] do arquivo de unidade de configuração do serviço. Se o cabeçalho [Service] não existir, adicione-o. Agora, saia do editor pressionando Ctrl + X.
Para emular uma falha, encontre o ID do processo do MySQL inserindo o seguinte comando:
|
1 |
sudo systemctl status mysql.service |
O comando de verificação de status exibe um ID de processo, no nosso caso é 3555:

Insira o seguinte comando para encerrar o processo. Substitua-o pelo ID do processo que você obteve no seu servidor:
|
1 |
sudo kill -9 3555 |
Insira o seguinte comando para verificar o status:
|
1 |
sudo systemctl status mysql.service |
A saída mostra que o MySQL está em execução, mas com um novo ID de processo. Isso significa que ele foi reiniciado automaticamente após a falha:

Conclusão
Neste tutorial, apresentamos a você os três sistemas de inicialização em distribuições Linux: System V, Upstart e Systemd. Aprendemos como usar qualquer um dos sistemas init para configurar seus serviços de execução contínua para iniciarem automaticamente após uma reinicialização ou falha do sistema. Isso deve servir como um ponto de partida para quando você precisar configurar seus serviços. A parte um desta série foi principalmente um tutorial prático. O a segunda parte é mais teórica e apresenta mais detalhes sobre o que estivemos fazendo na parte um. Não exclua seus servidores de teste ainda, pois você também os usará na parte dois.
Feliz computação!
Comentários
Nenhum comentário ainda. Seja o primeiro.