Antes do nosso post, como é uma solução Open Source não tão conhecida, vamos para alguns pontos chaves:

O que é o BookStack?

O BookStack tem como objetivo simplificar a gestão de documentos, podendo ser usada como uma ferramenta Wiki, de base de conhecimento, ou até GED.

Além de ter uma interface extremamente direta e limpa, divisão de materiais por prateleiras, livros e capítulos (permitindo delegar responsabilidades e cada um desses níveis), permite a pesquisa indexada de qualquer documento.

Por que CentOS?

Como a maioria das soluções Open Source baseadas em Linux, o BookStack funciona em várias distribuições que suporte PHP. Porém, atuamos com a possibilidade de migrarmos o ambiente para uma plataforma com suporte enterprise, preferimos usar o CentOS para evitar retrabalhos em migrações para RedHat.

Por que a versão do CentOS 7?

A versão do BookStack desse post é a v21.04.6, que necessita do PHP 7.3 e possuí script de instalação para CentOS8. Porém, os pacotes PHP para o CentOS 8 exigiram mais trabalhos de adequação que deixaria o Post mais longo e complexo. Já na versão 7, não foram necessárias adequações.

Para instalar o BookStack, será necessário:

Requisitos

Criação do Banco

Crie um banco, um usuário e uma senha. Para isso, no servidor de banco de dados, execute:

mysql -u root -p

Será solicitado a senha do root, informe-a e em seguida (dentro do MySQL) execute:

create database bookstackdb default character set utf8 collate utf8_general_ci;

grant all privileges on bookstackdb.* to bookstackuser.* to ''@'%' identified by 'bookstackpass' with grant option;

flush privileges;

quit

Configuração do servidor Web

Confirmando que há o registro DNS documentos.suaempresa.com.br para o servidor WEB, para instalar o servidor Web, execute:

yum install httpd -y
systemctl enable httpd
mkdir -p /var/www/html/blank
touch /var/www/html/blank/index.html
chown -R apache.apache /var/www/html/blank
chmod -R 500 /var/www/html/blank
service httpd start

Instalação do módulo PHP 7.3

Para a instalação do PHP 7.3, instale novos repositórios e habilite o repositório do PHP 7.3 com os seguintes comandos:

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install yum-utils
yum-config-manager --enable remi-php73

Com o suporte para instalar o PHP 7.3, instale e configure o PHP com o seguinte comando:

yum install php php-cli php-fpm php-json php-gd php-mysqlnd php-xml php-openssl php-tokenizer php-mbstring php-mysqlnd php-tidy php-json php-pecl-zip -y

sed -i "s/;date.timezone =/date.timezone = America\/Sao_Paulo\n;/g" /etc/php.ini

Instalação do BookStack

Agora é necessário criar a pasta do site GLPI (assim como explicitado acima, o caso abaixo é para ambiente de produção, caso seja diferente disso altere o nome para o ambiente correto, exemplo: documentos.suaempresa.com.br)

sed -i "s/memory_limit = 128M/memory_limit = 256M/g" /etc/php.ini
sed -i "s/upload_max_filesize = 2M/ upload_max_filesize = 150M/g" /etc/php.ini
sed -i "s/max_execution_time = 30/ max_execution_time = 360/g" /etc/php.ini
yum install git unzip -y
mkdir -p /var/www/html/sessions
sed -i "s|^listen =.*$|listen = /var/run/php-fpm.sock|" /etc/php-fpm.d/www.conf
sed -i "s|^;listen.owner =.*$|listen.owner = apache|" /etc/php-fpm.d/www.conf
sed -i "s|^;listen.group =.*$|listen.group = apache|" /etc/php-fpm.d/www.conf
sed -i "s|^user = apache.*$|user = apache ; PHP-FPM running user|" /etc/php-fpm.d/www.conf
sed -i "s|^group = apache.*$|group = apache; PHP-FPM running group|" /etc/php-fpm.d/www.conf
sed -i "s|^php_value\[session.save_path\].*$|php_value[session.save_path] = /var/www/html/sessions" /etc/php-fpm.d/www.conf

systemctl enable --now php-fpm.service

mkdir -p /var/www/html/documentos.suaempresa.com.br

git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch /var/www/html/documentos.suaempresa.com.br

cd /usr/local/bin
curl -sS https://getcomposer.org/installer | php
mv composer.phar composer
cd /var/www/html/documentos.suaempresa.com.br

composer install
cp .env.example .env
vim .env.example .env

Pressione a tecla INSERT para entrar em modo de inserção, depois localize e altere as seguintes linhas (alterando as partes em cinza, de acordo com a configuração de seu ambiente):

APP_URL=http://documentos.suaempresa.com.br
DB_HOST=IP_do_servidor_de_banco_de_dados
DB_DATABASE=nome_do_banco_de_dados
DB_USERNAME=usuario_do_banco_de_dados
DB_PASSWORD=senha_do_banco_de_dados
MAIL_FROM_NAME="Documento"
MAIL_FROM=documento@suaempresa.com.br
MAIL_HOST=IP_do_servidor_SMTP_(liberado_relay)
MAIL_PORT=25

Feito isso digite a tecla ESC e em seguida digite :wq! e pressione ENTER para sair e salvar (lembre-se de liberar o relay em seu servidor de e-mail). Em seguida, execute:

php artisan key:generate --force
php artisan migrate --force
chown -R apache:apache /var/www/html/sessions
chmod -R 775 /var/www/html/sessions
chown -R apache:apache /var/www/html/documentos.suaempresa.com.br
chmod -R 775 /var/www/html/documentos.suaempresa.com.br

touch /var/log/httpd/documentos.suaempresa.com.br-error.log
touch /var/log/httpd/documentos.suaempresa.com.br
documentos.suaempresa.com.br-requests.log

vim /etc/httpd/conf.d/vhosts.conf

Pressione a tecla INSERT para entrar em modo de inserção, depois insira o seguinte conteúdo:

<VirtualHost *:80>
        ServerName documentos.suaempresa.com.br
        ServerAlias documentos
        ServerAdmin suporte@suaempresa.com.br
        DocumentRoot /var/www/html/documentos.suaempresa.com.br/public
        ErrorLog “/var/log/httpd/documentos.suaempresa.com.br-error.log”
        CustomLog “/var/log/httpd/documentos.suaempresa.com.br-requests.log” combined
</VirtualHost>
<Directory “/var/www/html/documentos.suaempresa.com.br/public”>    
      Options FollowSymlinks
      #AllowOverride None
      AllowOverride All
      Require all granted

      RewriteEngine On
      # Redirect Trailing Slashes If Not A Folder…
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)/$ /$1 [L,R=301]

      # Handle Front Controller…
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^ index.php [L]
</Directory>
<Directory “/var/www/html/documentos.suaempresa.com.br“>
      AllowOverride None
      Require all denied
</Directory>

Feito isso digite a tecla ESC e em seguida digite :wq! e pressione ENTER para sair e salvar. Em seguida, execute:

service httpd restart

Abra o endereço http://documentos.suaempresa.com.br (o usuário padrão é admin@admin.com e a senha é password)

Alterar o logo

Caso queira alterar a logo, vá na pasta /var/www/html/documentos.suaempresa.com.br e altere a imagem /public/logo.png por uma customizada. Ainda na pasta /var/www/html/documentos.suaempresa.com.br edite o arquivo /resources/views/common/resources/views/common/header.blade.php e, logo no começo, localize e apague as seguintes linhas:

                @if (setting(‘app-name-header’))
                    <span class=”logo-text”>{{ setting(‘app-name’) }}</span>
                @endif

Autenticação com o Active Directory (Opcional)

Primeiro, instale o módulo LDAP do PHP, com o seguinte comando:

yum install php-ldap -y

Após instalar o suporte LDAP do PHP, edite a configuração do BookStack. Para isso, execute o seguinte comando:

vim /var/www/html/documentos.suaempresa.com.br/.env

Antes de alterar a configuração, sugerimos que leia melhor o capitulo LDAP Authentication do site do Bookstack. Para integrar com o AD, pressiona a tecla INSERT do teclado para entrar em modo de edição e adicione o seguinte conteúdo no final do arquivo (alterando as partes em cinza conforme sua realidade).

AUTH_METHOD=ldap
LDAP_SERVER=IP_DO_SEU_DC
LDAP_BASE_DN=dc=suaempresa,dc=com,dc=br
LDAP_DN=”DISTINGUISHEDNAME_DO_USUARIO
LDAP_PASS=”SENHA_DESSE_USUARIO
LDAP_USER_FILTER=(&(sAMAccountName=${user}))
LDAP_VERSION=3
LDAP_ID_ATTRIBUTE=BIN;objectGUID
LDAP_EMAIL_ATTRIBUTE=mail
LDAP_DISPLAY_NAME_ATTRIBUTE=cn
LDAP_START_TLS=false

Feito isso digite a tecla ESC e em seguida digite :wq! e pressione ENTER para sair e salvar. Em seguida, execute:

service httpd restart

Fontes/Referências

NVLAN – Como obter o Distinguished Name (DN) no Active Directory
NVLAN – Instalação padrão do CentOS7
NVLAN – Instalando o MariaDB no CentOS
NVLAN – Instalando o MySQL 8 no CentOS

https://raw.githubusercontent.com/blogmotion/bm-bookstack-install/master/bookstack-install-centos8.sh
https://www.bookstackapp.com/docs/admin/ldap-auth/

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria