Apesar de ter toda a intenção de seguir em frente com o Discourse, dada a completa falta de documentação atual que não seja hiperfocada em CentOS/Nginx, uma pessoa incrivelmente generosa e paciente da DigitalOcean respondeu a um tópico que criei lá e, após alguns testes e erros, ajudou a montar um tutorial simples de seguir para usuários prospectivos do Discourse nas mesmas circunstâncias que as minhas.
Como lembrete, essas circunstâncias são:
Instalando o Discourse no mesmo servidor que o Apache | Usando Ubuntu 18.04 | DigitalOcean
créditos a Bobbyiliev @ DigitalOcean
Install Discourse on a droplet with WordPress served by Apache ? | DigitalOcean (primeira resposta)
Pré-requisitos
- Para garantir a segurança, faça backup do seu Droplet, para que, caso algo dê errado, você possa reverter para uma versão funcional
- Acesse seu Droplet via SSH
- Apache instalado; você pode seguir os passos para fazer isso aqui:
Passo 1 - Instalar o Docker
Para instalar o Docker, siga os passos aqui:
Passo 2 - Baixar o Discourse
Primeiro, crie um diretório onde você armazenará os arquivos do Discourse:
mkdir /var/discourse
Em seguida, clone a imagem oficial do Docker do Discourse para /var/discourse.
git clone https://github.com/discourse/discourse_docker.git /var/discourse
Passo 3 - Configurar o Discourse para escutar na porta 8080
Usaremos o modelo standalone.yml, que inclui todos os serviços necessários, como PostgreSQL, Redis, entre outros.
Copie o arquivo de exemplo com o seguinte comando:
cp /var/discourse/samples/standalone.yml /var/discourse/containers/app.yml
Depois, edite o arquivo com seu editor favorito. Abra /var/discourse/containers/app.yml e atualize as portas nas linhas 23 e 24:
## quais portas TCP/IP este container deve expor?
expose:
- "8080:80" # encaminha a porta 8080 do host para a porta 80 do container (http)
- "8443:443" # encaminha a porta 8443 do host para a porta 443 do container (https)
Além disso, se você ainda não possui um certificado SSL, certifique-se de comentar a linha 16:
#- "templates/web.ssl.template.yml"
Basta adicionar o símbolo # antes da linha - "templates/web.ssl.template.yml", caso contrário o Discourse não iniciará.
Passo 4 - Configurar o Discourse
Mude o diretório:
cd /var/discourse
Em seguida, inicie o Discourse (como esta é a primeira vez que você está iniciando o serviço, ele irá inicializar o aplicativo com as novas alterações que você fez no seu arquivo app.yml):
./discourse-setup
Observação: Certifique-se de fornecer configurações válidas do servidor de e-mail; caso contrário, a configuração pode falhar.
Passo 5 - Configurar o Apache
Em /etc/apache2/sites-available/, crie um novo arquivo chamado forum.exemplo.com.conf e adicione o seguinte conteúdo de Vhost:
<VirtualHost *:80>
ServerName forum.exemplo.com
ServerAlias www.forum.exemplo.com
<IfModule proxy_module>
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
- Ative o Vhost com o seguinte comando:
a2ensite forum.exemplo.com
- Ative o módulo Proxy:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
- Reinicie o Apache:
systemctl restart apache2
Após isso, você poderá acessar o Discourse diretamente pelo nome do seu domínio.
Observação 1: Ao instalar o Discourse, o arquivo app.yml pode ser sobrescrito e as linhas 16/17 (SSL) serão descomentadas. Você precisará comentá-las novamente e depois reconstruir o aplicativo (não se esqueça de mudar o diretório): ./launcher rebuild app
Observação 2: O SSL não está habilitado para o Discourse com este guia. Não surpreendentemente, parece não existir documentação para habilitar o SSL do Let’s Encrypt se você já o tiver habilitado para o Apache. Se alguém encontrar uma solução para isso, por favor, entre em contato.