Configure vários sites em uma gota do Digital Ocean executando nginx e node.js

Configure sua gota

Primeiro você precisa configurar uma chave SSH

Clique na guia Chaves SSH e, em seguida, clique em Adicionar chave SSH

Guia digital do oceano

Crie a chave em OpenSSH no Mac OSX ou Linux, ou usando Putty para Windows.

Copie a chave ssh e adicione-a ao Digital Ocean e dê um nome a ela.

Faça um backup de sua chave SSH em seu disco rígido externo, etc …

Agora clique na guia Criar gota e preencha os campos para a sua gota

Selecione seu nome de host do Droplet, selecione seu tamanho, planos de US $ 5 ou US $ 10 por mês são provavelmente os melhores se você estiver usando apenas para projetos de desenvolvimento.

Selecione sua região e distribuição, eu fui com Ubuntu e New York.

Na guia Imagem / Aplicativos, selecione os aplicativos que deseja configurar por padrão, como o nó.

Agora clique em Criar gota para adicionar sua gota

Conecte-se ao seu Droplet

Guia digital do oceano

Conecte-se via SSH a partir do Terminal da seguinte maneira e, se sua chave SSH estiver configurada em seu PC, você deverá estar logado.

ssh root@SERVER_IP_ADDRESS

Configuração do servidor

Guia digital do oceano

Crie um novo usuário para que você não faça login com o usuário root, em vez de steven, adicione seu próprio nome

adduser steven

Adicione privilégios de “superusuário” ou root para nossa nova conta.

gpasswd -a steven sudo

Agora seu usuário pode executar comandos com privilégios de superusuário sudo!

Copie a chave pública para o servidor

digite <b> sair </b> para sair de sua sessão remota

em sua <b> máquina local </b>, pegue sua chave SSH e copie-a para a área de transferência

cat ~/.ssh/id_rsa.pub

agora faça login novamente no servidor como root

ssh root@SERVER_IP_ADDRESS

insira o seguinte comando para mudar para o novo usuário (substitua seu próprio usuário):

su - steven

Crie um novo diretório chamado .ssh e restrinja suas permissões

mkdir .ssh
chmod
700 .ssh

Abra um arquivo em .ssh chamado authorized_keys com um editor de texto.

nano .ssh/authorized_keys

Insira sua chave pública de sua área de transferência colando-a no editor.

Pressione CTRL-X para sair do arquivo, depois Y para salvar as alterações feitas e ENTER para confirmar o nome do arquivo.

restrinja as permissões do arquivo authorized_keys com este comando:

chmod 600 .ssh/authorized_keys

Digite exit para retornar ao usuário root

Agora você pode fazer o login SSH como seu novo usuário, usando a chave privada como autenticação.

Proteja nosso servidor um pouco modificando sua configuração SSH. Edite o arquivo de configuração

nano /etc/ssh/sshd_config

Altere o valor da porta SSH da porta 22 para algo entre 1025 e 65536

Ao alterar esse valor, você precisará ter em mente que o servidor está sendo executado na nova porta.
Por exemplo, se você alterar para 4444. Isso significa que, quando você se conectar, será necessário informar ao cliente SSH para usar essa nova porta não padrão.

Port 4444

Agora, para restringir o login do Root, precisamos encontrar a linha que se parece com esta:

PermitRootLogin yes

Modifique esta linha para “não” se desejar desativar o login de root:

PermitRootLogin no

Desativar o login de root remoto é altamente recomendado em todos os servidores!

Salve e feche o arquivo usando o método que vimos anteriormente (CTRL-X, depois Y e depois ENTER).

Recarregue o SSH, precisamos reiniciar o serviço SSH para que ele use nossa nova configuração.

service ssh restart

Agora, antes de sair do servidor, devemos testar nossa nova configuração.

Não queremos nos desconectar até que possamos confirmar que novas conexões podem ser estabelecidas com sucesso.

Abra uma nova janela de terminal. Na nova janela, precisamos iniciar uma nova conexão com nosso servidor.

Desta vez, em vez de usar a conta root, queremos usar a nova conta que criamos e nosso novo número de porta para ssh

ssh -p 4444 steven@SERVER_IP_ADDRESS

Será solicitada a senha do novo usuário que você configurou. Depois disso, você estará conectado como seu novo usuário.

Lembre-se, se você precisar executar um comando com privilégios de root, digite “sudo” antes desta forma:

sudo command_to_run

Se tudo estiver bem, você pode sair de suas sessões digitando:

exit

Etapas adicionais para novo servidor

Guia digital do oceano

Primeiro, para <b> configurar nosso firewall </b>, precisamos criar uma exceção para conexões SSH para que possamos manter o acesso para administração remota.

O Ubuntu vem com uma ferramenta chamada ufw que pode ser usada para configurar suas políticas de firewall.

sudo ufw allow 4444/tcp

permitir acesso à porta 80 para executar um servidor web HTTP

sudo ufw allow 80/tcp

Se você planeja executar um servidor da web com SSL habilitado, deve permitir o tráfego para essa porta também:

sudo ufw allow 443/tcp

Se você precisa que o e-mail SMTP esteja habilitado, a porta 25 deverá ser aberta:

sudo ufw allow 25/tcp

você pode habilitar o firewall digitando:

sudo ufw enable

Defina o <b> fuso horário do servidor </b> reconfigurando o pacote tzdata selecionando sua região geográfica

sudo dpkg-reconfigure tzdata

Para configurar a <b> sincronização NTP </b>, usaremos um serviço ntp, que podemos instalar a partir dos repositórios padrão do Ubuntu:

sudo apt-get update
sudo apt
-get install ntp

Agora, para <b> criar um arquivo de troca </b>, a Digital Ocean sugere que uma quantidade igual ou o dobro da quantidade de RAM em seu sistema é um bom tamanho. Estou usando 1 GB com o plano de US $ 10 por mês.

sudo fallocate -l 1G /swapfile

Depois de criar o arquivo, precisamos executar os seguintes comandos, um após o outro, para permitir que o sistema use o arquivo de troca automaticamente a cada inicialização

sudo chmod 600 /swapfile
sudo mkswap
/swapfile
sudo swapon
/swapfile
sudo sh
-c 'echo "/swapfile none swap sw 0 0" >> /etc/fstab'

Se você está satisfeito com sua configuração e deseja usá-la como base para futuras instalações, você pode <b> tirar um instantâneo do seu servidor </b> através do painel de controle DigitalOcean.

Para fazer isso, desligue o servidor a partir da linha de comando digitando:

sudo poweroff

Agora, no painel de controle DigitalOcean, você pode tirar um instantâneo visitando a guia “Instantâneos” do seu servidor:

Depois de tirar seu instantâneo, você poderá usar essa imagem como base para futuras instalações, selecionando o instantâneo na guia “Meus instantâneos”.

Nó de instalação

Guia digital do oceano

Ubuntu 14.04 contém uma versão do Node.js em seus repositórios padrão. A versão nos repositórios é 0.10.25. Esta não será a versão mais recente, mas deve ser bastante estável.

sudo apt-get update
sudo apt
-get install nodejs

Por causa de um conflito com outro pacote, o executável dos repositórios do Ubuntu é chamado de nodejs em vez de node.

O comando a seguir deve vincular nó a nodejs, para que seja executado corretamente quando você executar comandos de nó, link

sudo ln -s /usr/bin/nodejs /usr/bin/node

Agora instale o npm, gerenciador de pacotes Node.js.

sudo apt-get install npm

Configure o Filezilla para transferência ftp

Guia digital do oceano

Abra o cliente FileZilla, clique no item de menu Arquivo e selecione Gerenciador de sites.

No lado esquerdo do gerente do site, clique no botão Novo site e digite um nome exclusivo em Meus sites para sua conexão

Agora, na guia Geral, preencha o host com os campos de endereço IP e porta

Tipo de logon, selecione Interativo e clique em Conectar

Configurar nginx

Guia digital do oceano

Instale e inicie o nginx

sudo apt-get install nginx
sudo service nginx start

Confirme se o nginx foi iniciado

ifconfig eth0 | grep inet | awk '{ print $2 }'

Isso mostrará o endereço IP do seu servidor virtual. Navegue até ele em seu navegador e você verá as palavras “Bem-vindo ao nginx”

Certifique-se de que o nginx estará ativo após a reinicialização

update-rc.d nginx defaults

Configurar nomes de domínio

Guia digital do oceano

Aponte seus servidores de nome para DigitalOcean. Os servidores de domínio DigitalOcean são

ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com

Agora, para configurar seu Domínio, vá para o painel de controle do DigitalOcean.

Na seção DNS, clique em Adicionar Domínio e preencha o campo do nome do domínio e o endereço IP do seu servidor

Preencha o registro A para o seu domínio, ele deve ter atualizado os servidores de nomes para estar correto,

Se você deixar como @, será

http://example.com

Ou você pode especificar um nome prefixado ao seu nome de domínio, por exemplo, digite <i> teste </i>

test.example.com

Preencha os registros AAAA. Digite o endereço IPv6 do droplet em que deseja hospedar seu nome de domínio e o próprio nome do host,

Para adicionar www ao seu URL, clique na guia CNAME e preencha os 2 campos.

www and @

Configurar hosts virtuais nginx

Guia digital do oceano

Faça login novamente via ssh em seu servidor. Agora eu queria configurar vários domínios para meu servidor Nginx.

Para demonstração, vamos supor que os nomes de domínio sejam example.com e test.com, obviamente, use seus próprios domínios que você configurou com Digital Ocean e comprou em algum lugar como iwantmyname.com

sudo apt-get update
sudo apt
-get install nginx

Por padrão, o Nginx no Ubuntu 14.04 tem um bloco de servidor habilitado por padrão. Ele é configurado para servir documentos fora de um diretório em:

/usr/share/nginx/html

Não usaremos o padrão, pois é mais fácil trabalhar com as coisas no diretório / var / www.

Queremos um diretório para cada um de nossos sites dentro do diretório / var / www e teremos um diretório sob esses, chamado html, para armazenar nossos arquivos reais.

Crie os diretórios necessários. Podemos fazer isso com o seguinte comando

sudo mkdir -p /var/www/example.com/html
sudo mkdir
-p /var/www/test.com/html

Agora que os diretórios foram criados, precisamos transferir a propriedade para nosso usuário regular. Podemos usar a variável de ambiente $ USER para substituir a conta de usuário na qual estamos conectados no momento.

sudo chown -R $USER:$USER /var/www/example.com/html
sudo chown
-R $USER:$USER /var/www/test.com/html

Crie páginas de amostra para cada site

Crie um arquivo index.html em seu primeiro domínio:

nano /var/www/example.com/html/index.html

Agora insira uma página de índice básico que indica qual site estamos acessando no momento

<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>

Faça o mesmo para o seu segundo domínio

Agora que temos o conteúdo que desejamos servir, precisamos <b> criar os blocos de servidor </b> que dirão ao Nginx como fazer isso.

Vamos <b> criar nosso primeiro bloco de servidor </b> arquivo de configuração copiando o arquivo padrão:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com

Agora, abra o novo arquivo que você criou em seu editor de texto com privilégios de root:

sudo nano /etc/nginx/sites-available/example.com

Defina seu primeiro servidor como o bloco de servidor padrão, então deixe a opção default_server neste arquivo

Ajuste a raiz do documento, especificada pela diretiva root. Aponte para a raiz do documento do site que você criou:

root /var/www/example.com/html;

Modifique o server_name para corresponder às solicitações de nosso primeiro domínio. Também podemos adicionar quaisquer aliases como www.example.com

server_name example.com www.example.com;

Salve e feche o arquivo

Agora que temos nossa configuração inicial de bloco de servidor, podemos usá-la como base para nosso <b> segundo arquivo de bloco de servidor </b>.

Copie-o para criar um novo arquivo:

sudo cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/test.com

Abra o novo arquivo com privilégios de root em seu editor:

sudo nano /etc/nginx/sites-available/test.com

Remova a opção de servidor padrão e ipv6only = on para que as 2 linhas resultantes sejam:

listen 80;
listen
[::]:80;

Ajuste a diretiva raiz do documento para apontar para a raiz do documento do seu segundo domínio:

root /var/www/test.com/html;

Ajuste o server_name para corresponder ao seu segundo domínio e quaisquer aliases:

server_name test.com www.test.com;

Ao adicionar blocos de servidor adicionais para outros domínios, copie este segundo arquivo e você só terá que modificar a raiz do documento e o nome do domínio, alias

Salve e feche o arquivo

Agora você tem seus blocos de servidor criados, precisamos <b> habilitá-los e reiniciar o nginx </b>.

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln
-s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/

Esses arquivos agora estão no diretório habilitado. Precisamos desabilitar o arquivo de bloqueio do servidor padrão removendo o link simbólico.

sudo rm /etc/nginx/sites-enabled/default

Também precisamos ajustar uma configuração rapidamente no arquivo de configuração padrão do Nginx. Abra-o digitando:

sudo nano /etc/nginx/nginx.conf

Remova o comentário da linha atualmente comentada.

server_names_hash_bucket_size 64;

Agora, estamos prontos para reiniciar o Nginx para habilitar suas alterações.

sudo service nginx restart

Agora você deve ser capaz de visitar seus 2 novos domínios e, com sorte, tudo funcionará bem e poderá começar a construir seus sites.