Nuvem para instituições de caridade: guia de migração

Nuvem para instituições de caridade: guia de migração

Não faz muito tempo, Mail.Ru Cloud Solutions (MCS) e o serviço Dobro Mail.Ru lançaram o projeto “Nuvem para instituições de caridade”, graças ao qual organizações sem fins lucrativos podem obter gratuitamente os recursos da plataforma em nuvem MCS. Fundação de caridade "Aritmética do bem» participou do projeto e implantou com sucesso parte de sua infraestrutura baseada em MCS.

Depois de passar na validação, um NPO pode receber capacidade virtual do MCS, mas a configuração adicional requer certas qualificações. Neste material, queremos compartilhar instruções específicas para configurar um servidor Ubuntu baseado em Linux para executar o site principal e vários subdomínios usando certificados SSL gratuitos. Para muitos, este será um guia simples, mas esperamos que a nossa experiência seja útil para outras organizações sem fins lucrativos, e não só.

FYI: O que você pode obter do MCS? 4 CPUs, 32 GB de RAM, HDD de 1 TB, sistema operacional Ubuntu Linux, armazenamento de objetos de 500 GB.

Etapa 1: inicie o servidor virtual

Vamos direto ao ponto e crie nosso servidor virtual (também conhecido como “instância”) em sua conta pessoal MCS. Na app store, você precisa selecionar e instalar uma pilha LAMP pronta, que é um conjunto de software de servidor (LAMP = Linux, Apache, MySQL, PHP) necessário para executar a maioria dos sites.

Nuvem para instituições de caridade: guia de migração
Nuvem para instituições de caridade: guia de migração
Nuvem para instituições de caridade: guia de migração
Selecione a configuração de servidor apropriada e crie uma nova chave SSH. Após clicar no botão “Instalar”, será iniciada a instalação do servidor e da pilha LAMP, o que levará algum tempo. O sistema também oferecerá o download de uma chave privada para o seu computador para gerenciar a máquina virtual através do console, salve-a.

Depois de instalar o aplicativo, vamos configurar imediatamente o firewall, isso também é feito na sua conta pessoal: vá até a seção “Computação em nuvem -> Máquinas virtuais” e selecione “Configurar o firewall”:

Nuvem para instituições de caridade: guia de migração
Você precisa adicionar permissão para tráfego de entrada pelas portas 80 e 9997. Isso será necessário no futuro para instalar certificados SSL e trabalhar com o phpMyAdmin. Como resultado, o conjunto de regras deve ficar assim:

Nuvem para instituições de caridade: guia de migração
Agora você pode se conectar ao seu servidor através da linha de comando usando o protocolo SSH. Para fazer isso, digite o seguinte comando, apontando para a chave SSH do seu computador e o endereço IP externo do seu servidor (você pode encontrá-lo na seção “Máquinas Virtuais”):

$ ssh -i /путь/к/ключу/key.pem ubuntu@<ip_сервера>

Ao conectar-se ao servidor pela primeira vez, é recomendável instalar todas as atualizações atuais nele e reiniciá-lo. Para fazer isso, execute os seguintes comandos:

$ sudo apt-get update

O sistema receberá uma lista de atualizações, instale-as usando este comando e siga as instruções:

$ sudo apt-get upgrade

Após instalar as atualizações, reinicie o servidor:

$ sudo reboot

Etapa 2: configurar hosts virtuais

Muitas organizações sem fins lucrativos precisam manter vários domínios ou subdomínios ao mesmo tempo (por exemplo, um site principal e várias landing pages para campanhas promocionais, etc.). Tudo isso pode ser convenientemente colocado em um servidor criando vários hosts virtuais.

Primeiro precisamos criar uma estrutura de diretórios para os sites que serão exibidos aos visitantes. Vamos criar alguns diretórios:

$ sudo mkdir -p /var/www/a-dobra.ru/public_html

$ sudo mkdir -p /var/www/promo.a-dobra.ru/public_html

E especifique o proprietário do usuário atual:

$ sudo chown -R $USER:$USER /var/www/a-dobra.ru/public_html

$ sudo chown -R $USER:$USER /var/www/promo.a-dobra.ru/public_html

Variável $USER contém o nome de usuário com o qual você está conectado no momento (por padrão, este é o usuário ubuntu). Agora o usuário atual possui os diretórios public_html onde armazenaremos o conteúdo.

Também precisamos editar um pouco as permissões para garantir que o acesso de leitura seja permitido ao diretório da web compartilhado e a todos os arquivos e pastas que ele contém. Isso é necessário para que as páginas do site sejam exibidas corretamente:

$ sudo chmod -R 755 /var/www

Seu servidor web agora deve ter as permissões necessárias para exibir o conteúdo. Além disso, seu usuário agora tem a capacidade de criar conteúdo nos diretórios necessários.

Já existe um arquivo index.php no diretório /var/www/html, vamos copiá-lo para nossos novos diretórios - este será nosso conteúdo por enquanto:

$ cp /var/www/html/index.php /var/www/a-dobra.ru/public_html/index.php

$ cp /var/www/html/index.php /var/www/promo.a-dobra.ru/public_html/index.php

Agora você precisa ter certeza de que o usuário pode acessar seu site. Para fazer isso, primeiro configuraremos os arquivos do host virtual, que determinam como o servidor web Apache responderá às solicitações para diferentes domínios.

Por padrão, o Apache possui um arquivo host virtual 000-default.conf que podemos usar como ponto de partida. Vamos copiar isso para criar arquivos de host virtual para cada um dos nossos domínios. Começaremos com um domínio, configuraremos, copiaremos para outro domínio e, em seguida, faremos as edições necessárias novamente.

A configuração padrão do Ubuntu requer que cada arquivo host virtual tenha uma extensão *.conf.

Vamos começar copiando o arquivo do primeiro domínio:

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/a-dobra.ru.conf

Abra um novo arquivo em um editor com direitos de root:

$ sudo nano /etc/apache2/sites-available/a-dobra.ru.conf

Edite os dados da seguinte maneira, especificando a porta 80, seus dados para ServerAdmin, ServerName, ServerAlias, bem como o caminho para o diretório raiz do seu site, salve o arquivo (Ctrl+X e depois Y):

<VirtualHost *:80>
 
    ServerAdmin [email protected]
    ServerName a-dobra.ru
    ServerAlias www.a-dobra.ru
 
    DocumentRoot /var/www/a-dobra.ru/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
 
    <Directory /var/www/a-dobra.ru/public_html>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
 
    <FilesMatch .php$>
        SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>
 
</VirtualHost>

ServerName define o domínio primário, que deve corresponder ao nome do host virtual. Este deve ser o seu nome de domínio. Segundo, ServerAlias, define outros nomes que devem ser interpretados como se fosse o domínio primário. Isso é conveniente para usar nomes de domínio adicionais, por exemplo, www.

Vamos copiar esta configuração para outro host e também editá-la da mesma forma:

$ sudo cp /etc/apache2/sites-available/a-dobra.ru.conf /etc/apache2/sites-available/promo.a-dobra.ru.conf

Você pode criar quantos diretórios e hosts virtuais para seus sites desejar! Agora que criamos nossos arquivos de host virtual, precisamos habilitá-los. Podemos usar o utilitário a2ensite para habilitar cada um de nossos sites assim:

$ sudo a2ensite a-dobra.ru.conf

$ sudo a2ensite promo.a-dobra.ru.conf 

Por padrão, a porta 80 está fechada no LAMP e precisaremos dela mais tarde para instalar um certificado SSL. Então, vamos editar imediatamente o arquivo ports.conf e reiniciar o Apache:

$ sudo nano /etc/apache2/ports.conf

Adicione uma nova linha e salve o arquivo para que fique assim:

Listen 80
Listen 443
Listen 9997

Após concluir as configurações, você precisa reiniciar o Apache para que todas as alterações tenham efeito:

$ sudo systemctl reload apache2

Etapa 3: configurar nomes de domínio

Em seguida, você precisa adicionar registros DNS que apontarão para o seu novo servidor. Para gerenciar domínios, nossa Fundação Arithmetic of Good usa o serviço dns-master.ru, mostraremos isso com um exemplo.

A configuração de um registro A para o domínio principal é geralmente indicada da seguinte forma (sinal @):

Nuvem para instituições de caridade: guia de migração
O registro A para subdomínios geralmente é especificado assim:

Nuvem para instituições de caridade: guia de migração
O endereço IP é o endereço do servidor Linux que acabamos de criar. Você pode especificar TTL = 3600.

Depois de algum tempo será possível visitar o seu site, mas por enquanto apenas através http://. Na próxima etapa adicionaremos suporte https://.

Etapa 4: configurar certificados SSL gratuitos

Você pode obter certificados SSL Let's Encrypt gratuitos para seu site principal e todos os subdomínios. Você também pode configurar a renovação automática, o que é muito conveniente. Para obter certificados SSL, instale o Certbot em seu servidor:

$ sudo add-apt-repository ppa:certbot/certbot

Instale o pacote Certbot para Apache usando apt:

$ sudo apt install python-certbot-apache 

Agora que o Certbot está pronto para uso, execute o comando:

$ sudo certbot --apache -d a-dobra.ru -d www.a-dobra.ru -d promo.a-dobra.ru

Este comando executa certbot, chaves -d definir os nomes dos domínios para os quais o certificado deve ser emitido.

Se esta for a primeira vez que você inicia o certbot, será solicitado que você insira seu endereço de e-mail e concorde com os termos de uso do serviço. O certbot entrará em contato com o servidor Let's Encrypt e verificará se você realmente controla o domínio para o qual solicitou o certificado.

Se tudo correr bem, o certbot perguntará como você deseja definir a configuração HTTPS:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Recomendamos selecionar a opção 2 e pressionar ENTER. A configuração será atualizada e o Apache será reiniciado para aplicar as alterações.

Seus certificados agora foram baixados, instalados e funcionando. Tente recarregar seu site com https:// e você verá o ícone de segurança em seu navegador. Se você testar seu servidor Teste de servidor SSL Labs, ele receberá nota A.

Os certificados Let's Encrypt são válidos apenas por 90 dias, mas o pacote certbot que acabamos de instalar renovará os certificados automaticamente. Para testar o processo de atualização, podemos fazer uma simulação do certbot:

$ sudo certbot renew --dry-run 

Se você não encontrar nenhum erro como resultado da execução deste comando, tudo está funcionando!

Etapa 5: acesse MySQL e phpMyAdmin

Muitos sites usam bancos de dados. A ferramenta phpMyAdmin para gerenciamento de banco de dados já está instalada em nosso servidor. Para acessá-lo, acesse seu navegador usando um link como:

https://<ip-адрес сервера>:9997

A senha para acesso root pode ser obtida em sua conta pessoal MCS (https://mcs.mail.ru/app/services/marketplace/apps/). Não se esqueça de alterar sua senha root na primeira vez que fizer login!

Etapa 6: configurar o upload de arquivos via SFTP

Os desenvolvedores acharão conveniente fazer upload de arquivos para o seu site via SFTP. Para fazer isso, criaremos um novo usuário, chamaremos ele de webmaster:

$ sudo adduser webmaster

O sistema solicitará que você defina uma senha e insira alguns outros dados.

Alterando o proprietário do diretório do seu site:

$ sudo chown -R webmaster:webmaster /var/www/a-dobra.ru/public_html

Agora vamos alterar a configuração do SSH para que o novo usuário tenha acesso apenas ao SFTP e não ao terminal SSH:

$ sudo nano /etc/ssh/sshd_config

Role até o final do arquivo de configuração e adicione o seguinte bloco:

Match User webmaster
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/www/a-dobra.ru
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

Salve o arquivo e reinicie o serviço:

$ sudo systemctl restart sshd

Agora você pode se conectar ao servidor através de qualquer cliente SFTP, por exemplo, através do FileZilla.

Total

  1. Agora você sabe criar novos diretórios e configurar hosts virtuais para seus sites dentro do mesmo servidor.
  2. Você pode criar facilmente os certificados SSL necessários - é gratuito e eles serão atualizados automaticamente.
  3. Você pode trabalhar convenientemente com o banco de dados MySQL através do familiar phpMyAdmin.
  4. Criar novas contas SFTP e configurar direitos de acesso não exige muito esforço. Essas contas podem ser transferidas para desenvolvedores web e administradores de sites terceirizados.
  5. Não se esqueça de atualizar periodicamente o sistema, e também recomendamos fazer backups - no MCS você pode tirar “instantâneos” de todo o sistema com um clique e, se necessário, lançar imagens inteiras.

Recursos usados ​​que podem ser úteis:

https://www.digitalocean.com/community/tutorials/apache-ubuntu-14-04-lts-ru
https://www.digitalocean.com/community/tutorials/apache-let-s-encrypt-ubuntu-18-04-ru
https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-ubuntu-18-04

By the way, aqui Você pode ler no VC como nossa fundação implantou uma plataforma de educação online para órfãos baseada na nuvem MCS.

Fonte: habr.com

Adicionar um comentário