Não faz muito tempo, Mail.Ru Cloud Solutions (MCS) e o serviço Dobro Mail.Ru lançaram o projeto “
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.
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”:
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:
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 @
):
O registro A para subdomínios geralmente é especificado assim:
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
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 (
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
- Agora você sabe criar novos diretórios e configurar hosts virtuais para seus sites dentro do mesmo servidor.
- Você pode criar facilmente os certificados SSL necessários - é gratuito e eles serão atualizados automaticamente.
- Você pode trabalhar convenientemente com o banco de dados MySQL através do familiar phpMyAdmin.
- 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.
- 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:
By the way,
Fonte: habr.com