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!