Como instalar e configurar o Concourse CI no CentOS 7

Introdução

A Integração Contínua é uma prática de desenvolvimento de software DevOps que permite que os desenvolvedores mesclem frequentemente o código modificado no repositório compartilhado várias vezes ao dia. Após cada mesclagem, compilações e testes automáticos são executados para detectar problemas no código. Ele permite que os desenvolvedores encontrem e resolvam os erros rapidamente, para melhorar a qualidade do software e fornecer a entrega contínua do software. Mudar de um lado para o outro do Concourse é muito fácil, pois mantém toda a sua configuração em arquivos declarativos que podem ser verificados no controle de versão. Ele também fornece uma interface com o usuário da web que exibe as informações de construção interativamente.

Componentes do concurso.
  • O ATC é o principal componente do concurso. É responsável pela execução da interface do usuário da Web e API. Ele também cuida de toda a programação do pipeline.
  • O TSA é um servidor SSH personalizado. É responsável por registrar com segurança um trabalhador no ATC.
  • Os trabalhadores executam ainda dois serviços diferentes:
    1. Garden é um tempo de execução do contêiner e uma interface para orquestrar contêineres remotamente em um trabalhador.
    2. Baggageclaim é um servidor de gerenciamento de cache e artefatos.
  • Fly é uma interface de linha de comando usada para interagir com o ATC para configurar os Concourse Pipelines.

Pré-requisitos

Certifique-se de substituir todas as ocorrências 192.0.2.1e ci.example.comcom seu endereço IP público e nome de domínio reais da Vultr.

Atualize seu sistema básico usando o guia Como atualizar o CentOS 7 . Depois que seu sistema for atualizado, continue com a instalação do PostgreSQL.

Instale e configure o banco de dados PostgreSQL

O PostgreSQL é um sistema de banco de dados relacional de objetos. Concourse armazena seus dados de pipeline em um banco de dados PostgreSQL. Adicione o repositório PostgreSQL.

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

Instale o servidor de banco de dados PostgreSQL.

sudo yum -y install postgresql96-server postgresql96-contrib

Inicialize o banco de dados.

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

initdbcria um novo cluster de banco de dados PostgreSQL, que é uma coleção de bancos de dados gerenciados por uma única instância do servidor. Edite o pg_hba.confarquivo para habilitar a autenticação baseada em MD5.

sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf

Encontre as seguintes linhas e altere os valores peere identna METHODcoluna para truste md5, respectivamente.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Uma vez atualizada, a configuração deve ficar assim.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Inicie o servidor PostgreSQL e ative-o automaticamente no momento da inicialização.

sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

Mude a senha do usuário padrão do PostgreSQL.

sudo passwd postgres

Faça o login como usuário do PostgreSQL:

sudo su - postgres

Crie um novo usuário do PostgreSQL para o Concourse CI.

createuser concourse

Nota : O usuário padrão do PostgreSQL pode ser usado para autenticação do banco de dados, mas é recomendável usar um usuário dedicado para autenticação do banco de dados Concourse em uma configuração de produção.

O PostgreSQL fornece um shell para executar consultas no banco de dados. Alterne para o shell do PostgreSQL executando:

psql

Defina uma senha para o usuário do banco de dados do Concourse recém-criado.

ALTER USER concourse WITH ENCRYPTED password 'DBPassword';

Importante : Substitua DBPasswordpor uma senha forte. Anote a senha, conforme exigida posteriormente no tutorial.

Crie um novo banco de dados para o Concourse.

CREATE DATABASE concourse OWNER concourse;

Saia do psqlshell.

\q

Mude para o usuário sudo do usuário atual do postgres.

exit

Baixe e instale o CI do Concourse

Baixe a versão mais recente do Concourse executável e armazene-a /usr/binpara que possa ser executada diretamente. A versão mais recente dos binários Concourse e Fly pode ser encontrada na página de download do Concourse . Novos lançamentos são muito frequentes. Substitua o link abaixo pelo novo link da versão mais recente.

sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/concourse_linux_amd64 -O /usr/bin/concourse

Da mesma forma, baixe a versão mais recente do executável fly e armazene-a /usr/bin.

sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/fly_linux_amd64 -O /usr/bin/fly

Fly é a interface da linha de comandos para conectar-se à API ATC do Concourse CI. O Fly está disponível para várias plataformas, como Linux, Windows e MacOS.

Atribua permissão de execução aos binários concoursee baixados fly.

sudo chmod +x /usr/bin/concourse /usr/bin/fly

Verifique se Concourse e Fly estão funcionando corretamente, verificando sua versão.

concourse -version
fly -version

Gerar e configurar chaves RSA

Os pares de chaves RSA fornecem uma maneira de criptografar a comunicação entre os componentes do Concourse.

Para o concurso funcionar, pelo menos três pares de chaves devem ser gerados. Para criptografar os dados da sessão, gere a session_signing_key. Essa chave também será usada pela TSA para assinar os pedidos feitos ao ATC. Para proteger o servidor TSA SSH, gere a tsa_host_key. Por fim, gere um worker_keypara cada trabalhador.

Crie um novo diretório para armazenar as chaves e a configuração relacionadas ao IC do Concourse.

sudo mkdir /opt/concourse

Gere as chaves necessárias.

sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key

Autorize a chave pública dos trabalhadores, copiando seu conteúdo para o authorized_worker_keysarquivo:

sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys

Concourse inicial

O Concourse fornece dois componentes separados que precisam ser iniciados, a web e o trabalhador. Inicie a web do Concourse.

sudo concourse web \
  --basic-auth-username admin \
  --basic-auth-password StrongPass \
  --session-signing-key /opt/concourse/session_signing_key \
  --tsa-host-key /opt/concourse/tsa_host_key \
  --tsa-authorized-keys /opt/concourse/authorized_worker_keys \
  --postgres-user=concourse \
  --postgres-password=DBPassword \
  --postgres-database=concourse \
  --external-url http://192.0.2.1:8080

Altere o nome de usuário e a senha do, basic-authse desejar. Verifique se o caminho para os arquivos de chave está correto e se o valor correto para nome de usuário e senha na configuração do banco de dados PostgreSQL é fornecido.

Nota : O ATC escutará a porta padrão 8080e o TSA escutará a porta 2222. Se a autenticação não for desejada, passe a --no-really-i-dont-want-any-authopção após remover as opções básicas de autenticação.

Depois que o servidor da web é iniciado, a seguinte saída deve ser exibida.

{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}

Pare o servidor por enquanto, pois mais algumas coisas ainda precisam ser configuradas.

Inicie o Concourse CI Worker.

sudo concourse worker \
  --work-dir /opt/concourse/worker \
  --tsa-host 127.0.0.1 \
  --tsa-public-key /opt/concourse/tsa_host_key.pub \
  --tsa-worker-private-key /opt/concourse/worker_key

O comando acima assumirá que o TSA está sendo executado no host local e escutando a porta padrão 2222.

Embora a web e o trabalhador do Concourse possam ser iniciados facilmente usando os comandos acima, é recomendável usar o Systemd para gerenciar o servidor.

Configurar ambiente e serviço Systemd

O uso do serviço Systemd para gerenciar o aplicativo garante que o aplicativo seja iniciado automaticamente em caso de falhas e no momento da inicialização. O servidor Concourse não aceita dados de nenhum arquivo de configuração, mas pode acessar os dados de variáveis ​​de ambiente. Em vez de definir variáveis ​​de ambiente globais, crie um novo arquivo para armazenar as variáveis ​​de ambiente e depois passe as variáveis ​​para o Concourse CI usando o serviço Systemd.

Crie um novo arquivo de ambiente para a web do Concourse.

sudo nano /opt/concourse/web.env

Preencher o arquivo.

CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys

CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse

CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080

Altere o nome de usuário e a senha do, BASIC_AUTHse desejar. Verifique se o caminho para os arquivos de chave está correto e se o valor correto para nome de usuário e senha na configuração do banco de dados PostgreSQL é fornecido.

Da mesma forma, crie um arquivo de ambiente para o trabalhador.

sudo nano /opt/concourse/worker.env

Preencher o arquivo.

CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1

Como os arquivos de ambiente contêm nome de usuário e senhas, altere suas permissões para que não possam ser acessados ​​por outros usuários.

sudo chmod 600 /opt/concourse/*.env

Agora crie um novo usuário para o Concourse para executar o ambiente da web. Isso garantirá que o servidor da web esteja sendo executado em um ambiente isolado.

sudo adduser --system concourse

Conceda ao usuário do concurso a propriedade do diretório do arquivo de IC do concurso.

sudo chown -R concourse:concourse /opt/concourse

Crie um novo arquivo de serviço systemd para o serviço da web Concourse.

sudo nano /etc/systemd/system/concourse-web.service

Preencher o arquivo.

[Unit]
Description=Concourse CI web server
After=postgresql-9.6.service

[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web

[Install]
WantedBy=multi-user.target

Salve e feche o arquivo. Crie um novo arquivo de serviço para o serviço do trabalhador do Concourse.

sudo nano /etc/systemd/system/concourse-worker.service

Preencher o arquivo.

[Unit]
Description=Concourse CI worker process
After=concourse-web.service

[Service]
Type=simple
User=root
Group=root
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker

[Install]
WantedBy=multi-user.target

O serviço da web e do trabalhador agora pode ser iniciado diretamente executando:

sudo systemctl start concourse-web concourse-worker

Para permitir que o processo de trabalho e da Web seja iniciado automaticamente no momento da inicialização, execute:

sudo systemctl enable concourse-worker concourse-web

Para verificar o status dos serviços, execute:

sudo systemctl status concourse-worker concourse-web

Se o serviço não for iniciado, ou no FAILEDestado, remova o cache do /tmpdiretório.

sudo rm -rf /tmp/*

Reinicie os serviços.

sudo systemctl restart concourse-worker concourse-web

Observe que desta vez os serviços foram iniciados corretamente. A saída ao verificar o status dos serviços deve ser semelhante.

[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
   Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
 Main PID: 3037 (concourse)
   CGroup: /system.slice/concourse-worker.service
           └─3037 /usr/bin/concourse worker

Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...

● concourse-web.service - Concourse CI web server
   Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
 Main PID: 3036 (concourse)
   CGroup: /system.slice/concourse-web.service
           └─3036 /usr/bin/concourse web

Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.

Ajuste seu firewall para permitir a porta 8080, na qual o ATS está sendo executado, e a porta 2222, no qual o TSA está em execução.

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload

Conectando ao servidor

Depois que o servidor é iniciado, a interface da web do Concourse CI pode ser acessada acessando http://192.0.2.1:8080qualquer navegador. Efetue login usando o nome de usuário e a senha fornecidos no arquivo de ambiente.

Para conectar-se ao servidor usando o Fly, execute:

fly -t my-ci login -c http://192.0.2.1:8080

O comando acima é usado para o logon inicial no servidor. -té usado para fornecer um nome de destino. substitua my-cipor qualquer nome de destino desejado. O comando acima fará login na equipe padrão main. Ele solicitará o nome de usuário e a senha fornecidos no arquivo de ambiente.

A saída será semelhante à seguinte.

[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'

username: admin
password:

target saved

O login de destino será salvo por um dia. Depois disso, ele expirará.

Para sair imediatamente.

fly -t my-ci logout

O fly pode ser usado para efetuar login no servidor fora da rede, mas apenas se o servidor tiver um endereço IP público e puder ser acessado de fora da rede. O binário do Windows ou MacOS pode ser baixado do site de download ou da interface do usuário da web do servidor.

Configurando o Proxy Reverso do Nginx

Logins e outras informações enviadas pela interface da web para o servidor Concourse não são protegidos. A conexão não está criptografada. Um proxy reverso Nginx pode ser configurado com um SSL grátis Let's Encrypt.

Instale o servidor da web Nginx e o Certbot, que é o aplicativo cliente da autoridade de certificação Let's Encrypt.

sudo yum -y install certbot-nginx nginx

Inicie e ative o Nginx para iniciar automaticamente no momento da inicialização:

sudo systemctl start nginx
sudo systemctl enable nginx

Antes que uma solicitação possa ser feita para os certificados, as portas 80 e 443, ou serviços HTTP e HTTPS padrão, devem ser ativados pelo firewall. O Certbot verificará a autoridade do domínio antes de emitir certificados.

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

A porta 8080 não precisa mais ser permitida pelo firewall, porque o Concourse agora será executado na porta HTTPS padrão. Remova a entrada do firewall para permitir a porta 8080.

sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload

Nota

Para obter certificados da Let's Encrypt CA, o domínio para o qual os certificados devem ser gerados deve estar apontado para o servidor. Caso contrário, faça as alterações necessárias nos registros DNS do domínio e aguarde a propagação do DNS antes de fazer a solicitação de certificado novamente. O Certbot verifica a autoridade do domínio antes de fornecer os certificados.

Gere os certificados SSL.

sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com

Os certificados gerados provavelmente serão armazenados no /etc/letsencrypt/live/ci.example.com/diretório O certificado SSL será armazenado como fullchain.peme a chave privada será armazenada como privkey.pem.

Vamos criptografar certificados expiram em 90 dias, portanto, é recomendável que a renovação automática seja feita usando cronjobs. Cron é um serviço do sistema usado para executar tarefas periódicas.

Abra o arquivo de tarefa cron.

sudo crontab -e

Adicione a seguinte linha no final do arquivo.

30 5 * * 1 /usr/bin/certbot renew --quiet

O trabalho cron acima será executado toda segunda-feira às 05:30. Se o certificado estiver vencido, ele será renovado automaticamente.

Crie um novo host virtual.

sudo nano /etc/nginx/conf.d/concourse-ssl.conf

Preencher o arquivo.

server {
    listen 80;
    server_name ci.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name ci.example.com;

    ssl_certificate           /etc/letsencrypt/live/ci.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/ci.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log    /var/log/nginx/concourse.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;
      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;

      proxy_redirect      http://localhost:8080 https://ci.example.com;
    }
  }

Nota : Substitua ci.example.compelo domínio real.

Edite o arquivo de ambiente criado para o concurso da Web.

sudo nano /opt/concourse/web.env

Altere o valor de CONCOURSE_EXTERNAL_URLe também adicione mais duas linhas no final do arquivo.

CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080

Salve o arquivo e reinicie o servidor da web Concourse Web, Worker e Nginx:

sudo systemctl restart concourse-worker concourse-web nginx

Todos os dados enviados para e do navegador agora estão protegidos com criptografias SSL.



Configure sua própria rede privada com o OpenVPN

Configure sua própria rede privada com o OpenVPN

O Vultr oferece uma incrível conectividade de rede privada para servidores executando no mesmo local. Mas às vezes você quer dois servidores em países diferentes

Como instalar e configurar o CyberPanel no servidor CentOS 7

Como instalar e configurar o CyberPanel no servidor CentOS 7

Usando um sistema diferente? Introdução O CyberPanel é um dos primeiros painéis de controle do mercado, tanto de código aberto quanto de OpenLiteSpeed. What thi

Instale o eSpeak no CentOS 7

Instale o eSpeak no CentOS 7

Usando um sistema diferente? O ESpeak pode gerar arquivos de áudio de conversão de texto em fala (TTS). Isso pode ser útil por vários motivos, como criar seu próprio Turim

Monitore seus dispositivos usando o LibreNMS no CentOS 7

Monitore seus dispositivos usando o LibreNMS no CentOS 7

Usando um sistema diferente? O LibreNMS é um sistema de monitoramento de rede de código aberto completo. Ele usa o SNMP para obter os dados de diferentes dispositivos. Uma variedade

Como usar o Sudo no Debian, CentOS e FreeBSD

Como usar o Sudo no Debian, CentOS e FreeBSD

Usar um usuário sudo para acessar um servidor e executar comandos no nível raiz é uma prática muito comum entre o Linux e o Unix Systems Administrator. O uso de um sud

Como instalar o RabbitMQ no CentOS 7

Como instalar o RabbitMQ no CentOS 7

Usando um sistema diferente? O RabbitMQ é um intermediário de mensagens de código aberto amplamente usado, escrito na linguagem de programação Erlang. Como um middleware orientado a mensagens

Configurar o Nginx-RTMP no CentOS 7

Configurar o Nginx-RTMP no CentOS 7

Usando um sistema diferente? O RTMP é ótimo para veicular conteúdo ao vivo. Quando o RTMP é emparelhado com o FFmpeg, os fluxos podem ser convertidos em várias qualidades. Vultr i

Como instalar o Gradle no CentOS 7

Como instalar o Gradle no CentOS 7

Usando um sistema diferente? Gradle é um conjunto de ferramentas de automação de compilação de código aberto e gratuito baseado nos conceitos do Apache Ant e Apache Maven. Gradle fornece

Instale um servidor FTP com ProFTPd no CentOS 6 ou CentOS 7

Instale um servidor FTP com ProFTPd no CentOS 6 ou CentOS 7

Usando um sistema diferente? Neste guia, veremos como configurar um servidor FTP (ProFTPd) para transferir arquivos entre o seu PC e o seu servidor.

Instalando o Netdata no CentOS 7

Instalando o Netdata no CentOS 7

Usando um sistema diferente? O Netdata é uma estrela em ascensão no campo do monitoramento de métricas do sistema em tempo real. Comparado com outras ferramentas do mesmo tipo, o Netdata:

Como instalar o Apache Cassandra 3.11.x no CentOS 7

Como instalar o Apache Cassandra 3.11.x no CentOS 7

Usando um sistema diferente? O Apache Cassandra é um sistema de gerenciamento de banco de dados NoSQL gratuito e de código aberto, projetado para fornecer escalabilidade, alta

Como instalar um servidor Just Cause 2 (JC2-MP) no CentOS 7

Como instalar um servidor Just Cause 2 (JC2-MP) no CentOS 7

Neste tutorial, aprenda como configurar um servidor multiplayer Just Cause 2. Pré-requisitos Verifique se o sistema está totalmente atualizado antes de começarmos

Como instalar o servidor Starbound no CentOS 7

Como instalar o servidor Starbound no CentOS 7

Usando um sistema diferente? Neste tutorial, explicarei como configurar um servidor Starbound no CentOS 7. Pré-requisitos Você precisa ser o proprietário deste jogo

Instalando e configurando o ZNC no CentOS 7

Instalando e configurando o ZNC no CentOS 7

O ZNC é um segurança IRC gratuito e de código aberto que permanece permanentemente conectado a uma rede para que os clientes possam receber mensagens enviadas enquanto estiverem offline. Thi

Como instalar o Django no CentOS 7

Como instalar o Django no CentOS 7

O Django é uma estrutura Python popular para escrever aplicativos da web. Com o Django, você pode criar aplicativos mais rapidamente, sem reinventar a roda. Se você quiser você

Como instalar o CMS de outubro no CentOS 7

Como instalar o CMS de outubro no CentOS 7

Outubro é um sistema de gerenciamento de conteúdo de código aberto baseado no Laravel PHP Framework. Com uma interface elegante e uma arquitetura modular concisa

Como configurar a autenticação de dois fatores (2FA) para SSH no CentOS 6 usando o Google Authenticator

Como configurar a autenticação de dois fatores (2FA) para SSH no CentOS 6 usando o Google Authenticator

Após alterar a porta SSH, configurar a batida na porta e fazer outros ajustes para a segurança SSH, talvez haja mais uma maneira de protegê-lo

Como instalar o MyCLI no Linux (CentOS, Debian, Fedora e Ubuntu)

Como instalar o MyCLI no Linux (CentOS, Debian, Fedora e Ubuntu)

Introdução O MyCLI é um cliente de linha de comando para MySQL e MariaDB que permite concluir automaticamente e ajuda na sintaxe de seus comandos SQL. MyCL

Como instalar o Directus 6.4 CMS em um CentOS 7 LAMP VPS

Como instalar o Directus 6.4 CMS em um CentOS 7 LAMP VPS

Usando um sistema diferente? O Directus 6.4 CMS é um sistema de gerenciamento de conteúdo sem cabeça (CMS) poderoso e flexível, gratuito e de código aberto que fornece

Como instalar o Reader Self 3.5 RSS Reader em um CentOS 7 LAMP VPS

Como instalar o Reader Self 3.5 RSS Reader em um CentOS 7 LAMP VPS

Usando um sistema diferente? O Reader Self 3.5 é um leitor de RSS auto-hospedado, simples e flexível, gratuito e de código aberto, e uma alternativa ao Google Reader. Leitor Sel

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.