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
- Uma instalação do CentOS7, caso não possua sugerimos executar a Instalação padrão do CentOS 7 de acordo com nosso Post;
- Será necessário um servidor MySQL ou MariaDB. Caso não possua, instale o banco seguindo um de nossos posts:
- Altere as partes em cinza desse documento conforme a sua realidade;
- Será necessário um registro DNS, aqui usaremos o nome documentos.suaempresa.com.br
- Para a integração com o Active Directory será necessário:
- Uma credencial (usuário e senha) com acesso ao AD;
- Inserir alguns distinghished names, caso não sabia como obter isso leia nosso post sobre Como obter o Distinguished Name (DN) no Active Directory.
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.