
Há pouco tempo, a Mail.Ru Cloud Solutions (MCS) e o serviço Welcome Mail.Ru lançaram o projeto
Cloud for Charity Foundations , graças ao qual organizações sem fins lucrativos podem obter recursos da plataforma de nuvem MCS gratuitamente. A fundação de caridade
Aritmética do Bom participou do projeto e implantou com sucesso parte de sua infraestrutura com base no MCS.
Após a validação, um NPO pode receber energia virtual do MCS, mas o ajuste adicional requer certas qualificações. Neste artigo, queremos compartilhar instruções específicas para a configuração de um servidor baseado no Ubuntu Linux para a operação do site principal do fundo e vários subdomínios usando certificados SSL gratuitos. Para muitos, este será um guia simples, mas esperamos que nossa experiência seja útil para outras organizações sem fins lucrativos, e não apenas.
FYI : o que posso obter do MCS? 4 CPU, 32 GB de RAM, 1 TB de HDD, Ubuntu Linux OS, 500 GB de armazenamento de objetos.
Etapa 1: iniciar o servidor virtual
Vamos direto ao assunto imediatamente e criar nosso servidor virtual (também conhecido como "instância") em sua conta pessoal do MCS. Na loja de aplicativos, você precisa selecionar e instalar uma pilha LAMP pronta, que é um complexo de software de servidor (LAMP = Linux, Apache, MySQL, PHP), necessário para iniciar a maioria dos sites.
Escolha a configuração apropriada para o servidor e crie uma nova chave SSH. Depois de clicar no botão "Instalar", o servidor e a pilha LAMP começarão a instalar, isso levará algum tempo. O sistema também oferecerá o download de uma chave privada no computador para controlar a máquina virtual através do console e salve-a.
Depois de instalar o aplicativo, vamos configurar imediatamente o firewall, isso também é feito em sua conta pessoal: vá para a seção “Computação em nuvem -> máquinas virtuais” e selecione o item “Configurar firewall”:
Você precisa adicionar permissão para o tráfego recebido pelas portas 80 e 9997. Isso é necessário no futuro para instalar certificados SSL e trabalhar com o phpMyAdmin. No final, o conjunto de regras deve ficar assim:
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 no 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_>
Durante a primeira conexão com o servidor, é recomendável instalar todas as atualizações atuais 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 conter vários domínios ou subdomínios ao mesmo tempo (por exemplo, o site principal e várias páginas de destino para campanhas promocionais etc.). Tudo isso pode ser hospedado convenientemente em um único servidor, criando vários hosts virtuais.
Primeiro, precisamos criar uma estrutura de diretórios para 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 indique 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
A variável
$USER
contém o nome do usuário com o qual você está conectado no momento (por padrão, este é o usuário do
ubuntu
). Agora, o usuário atual possui os diretórios public_html nos quais 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, todos os arquivos e pastas nele contidos. Isso é necessário para que as páginas do site sejam exibidas corretamente:
$ sudo chmod -R 755 /var/www
Seu servidor da web agora deve ter as permissões necessárias para exibir o conteúdo. Além disso, agora seu usuário pode 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á o 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 garantir que o usuário possa entrar no seu site. Para fazer isso, primeiro de tudo, configuraremos os arquivos do host virtual, que determinam como exatamente o servidor da web Apache responderá às solicitações para diferentes domínios.
Por padrão, o Apache possui um arquivo de host virtual 000-default.conf, que podemos usar como ponto de partida. Vamos copiá-lo para criar arquivos de host virtual para cada um dos nossos domínios. Começaremos de um domínio, configurá-lo, copiá-lo para outro domínio e, em seguida, fazer 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 para o primeiro domínio:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/a-dobra.ru.conf
Abra um novo arquivo no editor com privilégios de root:
$ sudo nano /etc/apache2/sites-available/a-dobra.ru.conf
Edite os dados da seguinte maneira, indicando 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 Y):
<VirtualHost *:80> ServerAdmin e.valuisky@a-dobra.ru 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. O segundo,
ServerAlias
, define outros nomes que devem ser interpretados como se fosse o domínio principal. Isso é conveniente para usar nomes de domínio adicionais, por exemplo, usando www.
Copiamos essa configuração para outro host e também a editamos por analogia:
$ sudo cp /etc/apache2/sites-available/a-dobra.ru.conf /etc/apache2/sites-available/promo.a-dobra.ru.conf
Você pode criar qualquer número de diretórios e hosts virtuais para seus sites! Agora que criamos nossos arquivos de host virtual, precisamos incluí-los. Podemos usar o utilitário a2ensite para ativar cada um de nossos sites da seguinte maneira:
$ 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 no futuro para instalar um certificado SSL. Portanto, 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ê deve reiniciar o Apache para que todas as alterações entrem em vigor:
$ 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 gerenciamento de domínio, nossa Aritmetic of Good Foundation usa o serviço dns-master.ru, vamos mostrá-lo por exemplo.
A configuração de registro A para o domínio principal geralmente é indicada assim (sinal
@
):
O registro A para subdomínios é geralmente indicado da seguinte maneira:
O endereço IP é o endereço do servidor Linux que acabamos de criar. TTL pode especificar = 3600.
Depois de um tempo, já será possível acessar seu site, mas até agora apenas através de
http://
. Na próxima etapa, adicionaremos
https://
support.
Etapa 4: configurar certificados SSL gratuitos
Você pode obter certificados SSL grátis do Let's Encrypt para o 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 no seu servidor:
$ sudo add-apt-repository ppa:certbot/certbot
Instale o pacote Certbot para Apache usando o
apt
:
$ sudo apt install python-certbot-apache
Agora o Certbot está pronto para uso, executamos o comando:
$ sudo certbot --apache -d a-dobra.ru -d www.a-dobra.ru -d promo.a-dobra.ru
Este comando executa certbot, as opções
-d
especificam os nomes de domínio para os quais o certificado deve ser emitido.
Se for a primeira vez que você executa o certbot, será solicitado que você insira um endereço de e-mail e aceite os termos de serviço. Depois disso, o certbot entrará em contato com o servidor Let's Encrypt e depois verificará se você está realmente no controle do domínio para o qual solicitou o certificado.
Se tudo correu 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 que você selecione a opção 2 e pressione ENTER. A configuração será atualizada e o Apache reiniciado para aplicar as alterações.
Agora seus certificados estão carregados, instalados e funcionando. Tente recarregar seu site usando https: // e você verá o ícone de segurança no navegador. Se você testar seu servidor com um
Teste do SSL Labs Server , ele receberá uma nota A.
Os certificados Let's Encrypt são válidos apenas por 90 dias, mas o pacote certbot que acabamos de instalar renova os certificados automaticamente. Para testar o processo de atualização, podemos fazer um certbot de execução a seco:
$ sudo certbot renew --dry-run
Se você não encontrar nenhum erro resultante desse comando, tudo funcionará!
Etapa 5: acesso ao 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, clique no link do seu navegador, como:
https://<ip- >:9997
A senha para acesso root pode ser obtida em sua conta pessoal do MCS (
https://mcs.mail.ru/app/services/marketplace/apps/ ). Não se esqueça de alterar a senha root na primeira vez em que fizer login!
Etapa 6: configurar o upload do arquivo via SFTP
Será conveniente para os desenvolvedores fazer upload de arquivos para o seu site através do SFTP. Para fazer isso, criaremos um novo usuário, chame-o de webmaster:
$ sudo adduser webmaster
O sistema solicitará que você defina uma senha e insira alguns outros dados.
Mude o proprietário do diretório com 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 o arquivo de configuração até o final 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 recarregue o serviço:
$ sudo systemctl restart sshd
Agora você pode se conectar ao servidor através de qualquer cliente para SFTP, por exemplo, através do FileZilla.
Sumário
- Agora você sabe como criar novos diretórios e configurar hosts virtuais para seus sites no mesmo servidor.
- Você pode criar facilmente os certificados SSL necessários - é grátis e eles serão atualizados automaticamente.
- Você pode trabalhar convenientemente com o banco de dados MySQL através do phpMyAdmin usual.
- Criar novas contas SFTP e definir direitos de acesso não exigirá muito esforço. Essas contas podem ser transferidas para desenvolvedores da web e administradores de sites de terceiros.
- Não se esqueça de atualizar o sistema periodicamente e também recomendamos fazer backups - no MCS, você pode tirar "instantâneos" de todo o sistema com um clique e, se necessário, iniciar imagens inteiras.
Recursos utilizados que podem ser úteis:
https://www.digitalocean.com/community/tutorials/apache-ubuntu-14-04-lts-ruhttps://www.digitalocean.com/community/tutorials/apache-let-s-encrypt-ubuntu-18-04-ruhttps://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-ubuntu-18-04A propósito,
aqui você pode ler no VC como nossa fundação lançou uma plataforma para educação on-line de órfãos com base na nuvem MCS.