Parte 1 – Criação da Instância

escrevo depois

Parte 2 – Configuração da Instância

Nesse ponto, quando o Google disser “OK”, o que nós temos? Uma instãncia Linux já executando, mas sem nada de útil ainda. A primeira coisa que precisamos é torná-la pública, através da vinculação de um IP externo estático, através do qual vamos acessá-la, primeiro por SSH, depois pelos serviços que ela vier a presta (site, por exemplo). Claro, você pode fazer toda a configuração sem o IP externo, usando o cliente SSH do próprio Google Cloud ou mesmo acessando pelo IP temporário que ele atribui a toda máquina. mas o IP estático tem lá suas vantagens, e a primeira delas tem a ver com DNS, sendo muito mais prático atribuir um domínio ao IP e vice-versa.

A segunda coisa que precisamos fazer é nos dar acesso ao servidor. A máquina já vem com um usuário “ubuntu” padrão, e o Google Cloud ainda cria um segundo usuário com o nome da conta Google, que ele usa para os acessos SSH via sua interface (console fornecido pelo Cloud). O que eu recomendo fazer é, se você usa Linux como máquina de trabalho, pegar a sua chave pessoal pública em ~/.ssh/id_rsa.pub e incluí-la na lista de chaves permitidas. Isso vai liberar o acesso à sua máquina com o seu nome de usuário local (é possível ajustar, caso precise, desde que antes de confirmar). Todos os usuários criados até agora são super-administradores (poder de sudo). Mais usuários podem ser criados e gerenciados pelo Linux normalmente. Lembrando que por default o SSH da instância não permite acesso por senha, somente por Chave Pública (liberar é possível, mas reduz a segurança do sistema).

A terceira coisa a se fazer é atualizar o sistema. Isso pode ser feito com um único mega-comando, no caso abaixo pensando numa pilha LAMP básica sem muita frescura:

sudo add-apt-repository ppa:certbot/certbot -y && sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install -y language-pack-pt && sudo locale-gen && sudo dpkg-reconfigure tzdata && sudo apt-get install -y apache2 php mysql-server mysql-client php-cli php-gd phpmyadmin software-properties-common python-certbot-apache ssh vim zip unzip rar unrar wget curl nmap git subversion libapache2-mod-php php-mcrypt php-mysqlnd molly-guard

Alguns pontos sobre o comando acima:

  • CertBOT é o gerador automático e gratuito de certificados SSL. Para o Ubuntu a melhor forma de instalar é via um repositório PPA, que é seguro.
  • Atualizar a lista de pacotes e atualizar os existentes é um primeiro passo bem sensato.
  • Instalar o idioma português e configurar o fuso-horário do servidor, além de facilitar nosso uso, ainda elimina algumas possíveis mensagens chatas e confusões mais tarde.
  • A lista de programas inclui Apache (2.4) com PHP (7.0), MySQL (5.6), phpMyAdmin, versionadores de código e alguns utilitários que de vez em quando são úteis.
  • No processo, você deverá responder algumas perguntas, incluindo seu fuso-horário, senha de root para o MySQL, e configuração do phpMyAdmin, entre outros possivelmente.

Tem um passo nessa hora que eu gosto de executar, embora não afete em nada o servidor, mas facilita (pra mim) o uso dele. Editando o arquivo ~/.bash_profile podemos configurar um prompt colorido e talvez mais informativo, além de definir alguns atalhos úteis. Pode ser feito a nível de sistema via /etc/profile.d também, se quiser aplicar a todos os usuários.

#!/bin/bash
alias dir=’/bin/ls -lahF –color=auto’
alias grep=’/bin/grep –exclude-dir=.svn –exclude-dir=.git –color=auto’
alias grepi=’/bin/grep –exclude-dir=.svn –exclude-dir=.git –color=auto -i’
alias ls=’/bin/ls –color=auto’
alias dir=’/bin/ls -lhF –color=auto’
alias rm=’/bin/rm -i’
alias cp=’/bin/cp -i’
alias mv=’/bin/mv -i’
export PS1=”\[\e[35m\]\u\[\e[m\]@\h:[\W]\$ “

Agora a configuração passa para os dados hospedados e especificidades de serviços. Vai variar conforme a função do servidor. Outras coisas comuns que podem ser feitas:

  • Definir a senha do root (sudo passwd), já que a padrão aleatória (gestão orientada à sudo). Recomendo a mesma do root do MySQL.
  • Definir a senha do seu usuário (sudo passwd whoami), pelo mesmo motivo
  • Esconder, restringir ou mudar o ponto de acesso do phpMyAdmin, para aumentar a segurança
  • Instalar PHP-FPM ou suphp se o servidor tiver sites de mais de um cliente

Uma recomendação legal é criar 1 arquivo de configuração do Apache para cada domínio que tem ligação com o servidor. Inclusive para domínios de simples redirecionamento, que podemos gerar com um script simples:

export from=”dominio.com.br”; export to=”https://www.dominio.com.br/”; echo -e “<VirtualHost *:80>\n\tServerName $from\n\tDocumentRoot /var/www/html\n\tRedirectPermanent / $to\n</VirtualHost>” > /tmp/tmpdom && sudo mv /tmp/tmpdom /etc/apache2/sites-available/$from.conf && sudo a2ensite $from && sudo apachectl configtest && sudo service apache2 reload && sudo certbot –apache -d $from

O último comando da sequência acima usa o CertBOT para gerar um SSL, sendo que na primeira vez que é executado ele pede um e-mail e aceitação dos termos de uso. Sendo redirecionamentos, ao final escolha a opção (1) para não redirecionar, assim o destino final é alcançado sem hops intermediários. Para configurar domínios de uso real, é melhor ver com a sua aplicação.