Pesquisa de site

Instalar - configurar o Ghost no openSUSE 42.2 Leap


O que é Fantasma?

Na era da Web 2.0, os blogs são uma parte importante da vida de muitas pessoas, e a popularidade do WordPress e do Tumblr, por exemplo, demonstra um fato.
Hoje falaremos sobre uma plataforma para criar e executar publicações on-line (como blogs, revistas etc.) chamada Ghost. Esta ferramenta é de código aberto e totalmente hackeável, escrita em JavaScript e executada em Node.js.
Neste tutorial, veremos como instalar – configurar o Ghost no openSUSE Leap 42.2, usando Apache como servidor web.

Versão Node.js.

O Ghost é executado em cima do Node.js. Para ser mais exato, os desenvolvedores decidiram oferecer suporte apenas às versões LTS. Neste tutorial, usaremos a versão 4.2.x.
Mesmo que isso signifique que o Ghost não pode usar os recursos mais recentes do Node.js, a escolha parece razoável, pois deixa espaço para eles gastarem seu tempo construindo novos recursos e corrigindo bugs, em vez de rastrear alterações no Node e ter que testar novamente sua plataforma para cada lançamento.
Para usuários finais e administradores, isso resulta em uma plataforma mais estável e com suporte, que muitos consideram atraente.

Primeiros passos – Instale Node.js e npm

A versão 4 do Node.js já está disponível no openSUSE. Para instalá-lo, basta usar

zypper

:

zypper in nodejs
The following NEW package is going to be installed:
  nodejs4

1 new package to install.
Overall download size: 3.3 MiB. Already cached: 0 B. After the operation, additional
12.7 MiB will be used.
Continue? [y/n/? shows all options] (y): y
Retrieving package nodejs4-4.6.1-3.1.x86_64        (1/1),   3.3 MiB ( 12.7 MiB unpacked)
Retrieving: nodejs4-4.6.1-3.1.x86_64.rpm ...........................[done (846.4 KiB/s)]
Checking for file conflicts: .....................................................[done]
(1/1) Installing: nodejs4-4.6.1-3.1.x86_64 .......................................[done]

Em seguida, instale

npm

:

zypper in npm

Confira a versão:

npm --version
2.15.9

Instalando o Fantasma

Mude o diretório para

/srv/www

e baixe o Fantasma:

cd /srv/www
wget https://ghost.org/zip/ghost-latest.zip

Descompacte-o em um novo diretório chamado

ghost

usando o seguinte código:

unzip -d ghost ghost-latest.zip

Vá para este novo diretório e instale o Ghost com

npm

:

cd ghost
npm install --production

Configurar Fantasma

O diretório ghost contém um exemplo do arquivo de configuração. Usa isto.

cp config.example.js config.js

A seguir, crie um novo usuário chamado ghostusr:

useradd -d /srv/www -s /bin/bash -U ghostusr
passwd ghostusr

Defina este usuário como o proprietário do diretório fantasma:

chown -R ghostusr:ghostusr /srv/www/ghost

Agora é possível testar o Ghost com

npm

executando os seguintes comandos:

su - ghostusr
cd ghost
npm start --production

Deve resultar em uma saída semelhante a esta:

Migrations: Creating tables...
Migrations: Creating table: posts
Migrations: Creating table: users
Migrations: Creating table: roles
Migrations: Creating table: roles_users
Migrations: Creating table: permissions
Migrations: Creating table: permissions_users
Migrations: Creating table: permissions_roles
Migrations: Creating table: permissions_apps
Migrations: Creating table: settings
Migrations: Creating table: tags
Migrations: Creating table: posts_tags
Migrations: Creating table: apps
Migrations: Creating table: app_settings
Migrations: Creating table: app_fields
Migrations: Creating table: clients
Migrations: Creating table: client_trusted_domains
Migrations: Creating table: accesstokens
Migrations: Creating table: refreshtokens
Migrations: Creating table: subscribers
Migrations: Running fixture populations
Migrations: Creating owner
Ghost is running in production... 
Your blog is now available on http://my-ghost-blog.com

Abra uma nova janela de terminal e teste para ver se o Ghost está funcionando efetivamente executando o seguinte comando:

curl -I localhost:2368
HTTP/1.1 200 OK
X-Powered-By: Express
Cache-Control: public, max-age=0
Content-Type: text/html; charset=utf-8
Content-Length: 4554
ETag: W/"11ca-93Do3c+nffISfn1kLrmRZg"
Vary: Accept-Encoding
Date: Mon, 13 Mar 2017 07:59:39 GMT
Connection: keep-alive

Na janela do terminal executando o Ghost, pare-o digitando CTRL+C.
Agora, crie um novo serviço systemd:

$EDITOR /etc/systemd/system/ghost.service

E cole a seguinte configuração lá:

[Unit]
Description=Ghost Blog - Publication platform
After=network.target

[Service]
Type=simple
Ghost installation Directory
WorkingDirectory=/srv/www/ghost
User=ghostusr
Group=ghostusr
ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost

[Install]
WantedBy=multi-user.target

Recarregue o daemon do systemd:

systemct daemon-reload

e então inicie o novo serviço:

systemctl start ghost

Verifique o status:

systemctl status ghost

E mostrará o seguinte:

ghost.service - Ghost Blog - Publication platform
   Loaded: loaded (/etc/systemd/system/ghost.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2017-03-13 09:06:41 CET; 5s ago

Para fazer com que ele inicialize no momento da inicialização:

systemctl enable ghost

Instalando e configurando o Apache

Instale o Apache 2 com

zypper

:

zypper in apache2

E crie um novo Host Virtual para o Ghost:

$EDITOR /etc/apache2/sites-available/ghost.conf

Pronto, cole:

 <VirtualHost *:80> 
    #Domain Name 
    ServerName myghostblog.com 
    ServerAlias www.myghostblog.com 
 
    #HTTP proxy/gateway server 
    ProxyRequests off  
    ProxyPass / http://127.0.0.1:2368/  
    ProxyPassReverse / http:/127.0.0.1:2368/      
</VirtualHost>

Salve e saia.
Ative o módulo proxy, ative o Ghost e reinicie tudo:

a2enmod proxy proxy_http
ln -s /etc/apache2/sites-available/ghost.conf /etc/apache2/sites-enabled/ghost.conf
systemctl restart apache2
systemctl restart ghost

Abra um navegador da web e visite http://localhost:2368 e:

Habilitar SSL

Crie um novo diretório que conterá certificados:

mkdir -p /etc/apache2/certs

E gere um novo certificado lá:

openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/apache2/certs/ghost.key -out /etc/apache2/certs/ghost.crt

Alterar permissões:

chmod 600 /etc/apache2/certs/*

Por fim, edite a configuração do Virtual Host para ativar o SSL:

$EDITOR /etc/apache2/sites-available/ghost.conf
<VirtualHost *:80>
    ServerName myghostblog.com
    ServerAlias www.myghostblog.com

    # Force http to https
    Redirect permanent / https://myghostblog.com/
   ProxyRequests off 
   ProxyPass / http://127.0.0.1:2368/ 
   ProxyPassReverse / http:/127.0.0.1:2368/     
</VirtualHost>

<VirtualHost *:443>

   ServerName myghostblog.com

   SSLEngine on
   SSLCertificateFile /etc/apache2/certs/ghost.crt
   SSLCertificateKeyFile /etc/apache2/certs/ghost.key

   ProxyPass / http://127.0.0.1:2368/
   ProxyPassReverse / http:/127.0.0.1:2368/
   ProxyPreserveHost   On

   RequestHeader set X-Forwarded-Proto "https"

</VirtualHost>

Salve, saia e reinicie o Apache:

a2enmod ssl headers
systemctl restart apache2

Conclusão

O Ghost agora está instalado e funcionando. Vá para localhost:2368/ghost/ para finalizar a configuração da conta de administrador e comece a blogar!