Neste artigo iremos abordado a instalação e configuração de um servidor de impressão no Linux. Utilizaremos o pacote “Cups” como servidor de impressão, e o webservice Jasmine como um sistema de bilhetagem que tem por finalidade contabilizar as páginas impressas em diferentes impressoras, disponibilizando relatórios de impressão integrados com um controlador de Domínio.
CONSIDERAÇÕES.
Iremos utilizar como sistema operacional a distribuição “Debian 8.5 – jessie“. Também vamos considerar que você já esteja com seu Linux instalado e ingressado em um domínio. Se ainda não fez estes passos, sugiro que primeiramente leia nosso artigo “Colocando Linux no Domínio” antes de dar continuidade na implementação do servidor de impressão.
1) INSTALANDO CUPS.
Com a máquina integrada ao domínio, devemos instalar o pacote “Cups” (anteriormente um acrónimo para Common Unix Printing System, mas agora com nenhuma expansão oficial), um sistema de impressão para sistemas operativos de computador tipo unix, que permite que um computador aja como um servidor de impressão. Fonte: https://pt.wikipedia.org/wiki/CUPS. Conforme o seguinte comando ilustrado abaixo.
apt-get install cups
2) INSTALAÇÃO SERVIDOR WEB.
Após a instalação do pacote “Cups” precisamos realizar a instalação do gerenciador de relatórios “Jasmine”. Vamos considerar que você já esteja com um servidor web Linux instalado, neste artigo vamos utilizar o “Apache2”. Se ainda não fez estes passos, sugiro que primeiramente leia nosso artigo “Servidor Web com apache2” antes de dar continuidade na implementação do servidor de impressão.
3) INSTALAÇÃO JASMINE – DOWNLOAD.
Pra instalar o “Jasmine”, precisamos primeiramente baixar seus pacotes. Vamos utilizar o comando “wget” para baixa-los conforme ilustrado abaixo.
Nota: Lembre-se que o comando “wget” baixa as informações solicitadas para a pasta atual. Para melhor organização, crie uma pastas chamada “jasmine” e acesse-a.
mkdir ~/jasmine && cd ~/jasmine
wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-MySQL-0.0.3.tar.bz2 wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-Backend-0.0.3.tar.bz2 wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-Web-0.0.3.tar.bz2
Após baixar os arquivos precisamos descompactados, utilizaremos o comando “tar” para realizar este procedimento conforme comando ilustrado abaixo.
tar -xvjf JASmine-Backend-0.0.3.tar.bz2 tar -xvjf JASmine-Web-0.0.3.tar.bz2 tar -xvjf JASmine-MySQL-0.0.3.tar.bz2
4) INSTALAÇÃO JASMINE – BANCO DE DADOS.
Precisamos também criar um banco de dados para a nossa aplicação “Jasmine”. Vamos utilizar os comandos “mysql” conforme ilustrado abaixo.
Acesse o Mysql:
mysql -uusuario -psenha
Cria um banco de dados chamado jasmine:
mysql>CREATE DATABASE jasmine;
Cria um usuário para acessar o banco de dados:
mysql>CREATE USER 'jasmine'@'localhost' IDENTIFIED BY 'senha_usuario_jasmine';
De permissão de acesso total para o usuário criado, somente para o banco “jasmine” especificado:
mysql>GRANT USAGE ON *.* TO 'jasmine'@'localhost' IDENTIFIED BY 'senha_usuario_jasmine' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; mysql>GRANT ALL PRIVILEGES ON `jasmine`.* TO 'jasmine'@'localhost';
Feito isso, precisamos agora rodar um script sql para criar as tabelas que serão utilizadas na nossa aplicação “jasmine”. Acessando o pasta descompactada do JASmine-MySQL-0.0.3.tar.bz2, repare que existe um arquivo chamado “jasmine.sql”. Este arquivo está com erro de sintax devido as novas versões que hoje já estão sendo utilizada pelo MySQL. Versões acima do MySQL 5.5 devem utilizar o script com nova sintax. Crie um novo arquivo chamado “jasmine2.sql” e adicione o código abaixo, salve e saia do arquivo.
CREATE TABLE IF NOT EXISTS `jobs_log` ( `id` mediumint(9) NOT NULL AUTO_INCREMENT, `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `job_id` tinytext NOT NULL, `printer` tinytext NOT NULL, `user` tinytext NOT NULL, `server` tinytext NOT NULL, `title` tinytext NOT NULL, `copies` smallint(6) NOT NULL DEFAULT '0', `pages` smallint(6) NOT NULL DEFAULT '0', `options` tinytext NOT NULL, `doc` tinytext NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=24;
Agora vamos rodar o script em nosso banco de dados conforme comando ilustrado abaixo.
mysql -uroot -psenha jasmine < jasmine2.sql
5) INSTALAÇÃO JASMINE – BACKEND.
Precisamos instalar o backend de nossa aplicação “jasmine” para isso vamos acessar a pasta descompactada do JASmine-Backend-0.0.3.tar.gz, e realizar a instalação conforme comando ilustrado abaixo.
cd ~/jasmine/JASmine-Backend-0.0.3 tar zxvf pkpgcounter-2.10.tar.gz cd pkpgcounter-2.10 ./setup.py install cd ..
Agora precisamos mover os arquivos “jasmine” e “dummy” para o diretório “/usr/lib/cups/backend” de nossa máquina e dar permissão de leitura, escrita e execução.
cp jasmine /usr/lib/cups/backend chmod 755 /usr/lib/cups/backend/jasmine cp dummy /usr/lib/cups/backend chmod 755 /usr/lib/cups/backend/dummy
Precisamos modificar algumas linhas do arquivo “/usr/lib/cups/backend/jasmine”, de forma que nosso backend identifique o banco de dados criado. Realize as alterações conforme ilustrado abaixo.
my $DBhost="localhost"; my $DBlogin="jasmine"; my $DBpassword="senha_do_usuario_jasmine"; my $DBdatabase="jasmine"; my $Want_Sys_Syslog=1; my $Debug_Mode=0; my $path_to_pkpgcounter="/usr/local/bin/pkpgcounter"; my $path_to_python="/usr/bin/python";
Nota: Após instalação do “Jasmine” observar que o mesmo não esta contabilizando as páginas impressas. Verifique as linhas “$path_to_python” e “$path_to_pkpgcounter”. Provavelmente uma delas ou ambas, estão apontamento para o caminho errado.
6) INSTALAÇÃO JASMINE – FRONTEND
Vamos então realizar também a instalação do frontend de nossa aplicação “jasmine”. Para isto, será necessário criarmos uma pasta chamada “jasmine” dentro de nosso diretório web do apache2, conforme comando ilustrado abaixo.
mkdir /var/www/html/jasmine
Copie todo o conteúdo da pasta descompactada do arquivo JASmine-Web-0.0.3.tar.gz, para a nova pasta criada.
cp -R ~/jasmine/JASmine-Web-0.0.3/* /var/www/html/jasmine
Renomeie o arquivo “config.php.dist” para config.php.
cp /var/www/html/jasmine/config.php.dist /var/www/html/jasmine/config.php
Também precisamos modificar algumas linhas do arquivo “/var/www/html/jasmine/conf.php”, de forma que nosso frontend identifique o banco de dados criado. Realize as alterações conforme ilustrado abaixo.
$DB_host="localhost"; $DB_login="jasmine"; $DB_pass="senha_do_usuario_jasmine"; $DB_db="jasmine"
7) EDITANDO O ARQUIVO “/etc/cups/cupsd.conf”
Com o jasmine praticamente configurado, precisamos agora configurar nosso servidor “Cups”. Para isto, edite o arquivo “/etc/cups/cupsd.conf” conforme informações ilustrada abaixo.
Dica: Sempre faça uma copia de backup do arquivo a ser alterado.
cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bkp
Substitua as informações contidas no arquivo pelas ilustradas abaixo, lembre-se de alterar para mascara de sua rede. Em nosso exemplo estamos usando 192.168.*. Você também pode alterar a porta do “cups” se desejar, em nosso exemplo utilizaremos a porta padrão.
LogLevel warning SystemGroup lpadmin Port 631 Listen /var/run/cups/cups.sock MaxCopies 100 Browsing On BrowseOrder allow,deny BrowseAddress @LOCAL DefaultAuthType Basic <Location /> Allow From 127.0.0.1 Allow From 192.168.* Order allow,deny Allow @LOCAL </Location> <Location /admin> Allow From 127.0.0.1 Allow From 192.168.* Order allow,deny Allow @LOCAL </Location> <Location /admin/conf> AuthType Default Require user @SYSTEM Allow From 127.0.0.1 Allow From 192.168.* Order allow,deny Allow @LOCAL </Location> <Policy default> <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job> Require user @OWNER @SYSTEM Order deny,allow </Limit> <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default> AuthType Default Require user @SYSTEM Order deny,allow </Limit> <Limit Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs> AuthType Default Require user @SYSTEM Order deny,allow </Limit> <Limit CUPS-Authenticate-Job> Require user @SYSTEM Order deny,allow </Limit> <Limit All> Order deny,allow </Limit> </Policy> DefaultEncryption Never
Reinicie o serviço cups, conforme comando ilustrado abaixo.
systemctl restart cups.service
ou
/etc/init.d/cups restart
Agora você já deve acessar seu servidor de impressão pelo navegador de internet. Para isso utilize o endereço conforme ilustrado abaixo.
http://nomeservidor:631/
Exemplo:
http://serverprinter:631/
ou (Acesso pelo IP)
http://192.168.2.5:631/
8) CONFIGURAÇÃO DO SAMBA “/etc/samba/smb.conf”.
Para que possamos enxergar as impressoras, que por ventura vierem a ser instaladas no servidor pela rede, precisamos realizar algumas configurações no samba, em especial o arquivo “/etc/samba/smb.conf”. E necessário disponibilizar através do samba o acesso as impressoras e drivers.
Dica: Sempre faça uma copia de backup do arquivo a ser alterado.
cp /etc/samba/smb.conf /etc/samba/smb.conf.bkp
No exemplo a seguir estamos levando em consideração que as configurações do samba já estão corretas, faltando somente acrescentar as informações referente ao serviço “Cups”. Caso tenha dúvidas e deseja confirmar as configurações do samba leia nosso artigo “Colocando Linux no domínio“. Insira as configurações conforme ilustrado abaixo.
#=============================Configuração de impressão==============+======. printing = cups load printers = yes #=========================Compartilhamentos=================================. [printers] comment = Impressoras do Servidor path = /var/spool/samba printable = Yes printing = cups public = yes writable = yes load printers = yes print ok = yes guest ok = yes browseable = yes [print$] comment = Drivers Impressora. path = /var/lib/samba/printers writable = no #read only = yes valid users = @dl_t_driversimpressao, @dl_p_driversimpressao write list = @dl_t_driversimpressao browseable = no create mask = 0660 directory mask = 0770 force group = @dl_t_driversimpressao
Nota: Repare que em “valid users“, “writer list” e “force group“, estamos utilizando grupos de domínio. Uma maneira correta da aplicação de grupos é utilizando uma técnica chamada “AGDLP”. Esta técnica nos da a liberdade de trabalharmos com permissões diretamente do controlador de domínio, não tendo necessidade de alteração do arquivo “/etc/samba/smb.conf” toda vez que for necessário dar ou retirar permissão de grupos e usuários.
Precisamos também dar permissão as pastas informadas em nosso mapeamento Samba. Para a pasta “/var/lib/samba/printers” vamos adicionar o grupo “dl_t_driversimpressao” como grupo dono da pasta, conforme comando ilustrado abaixo.
chgrp -R dl_t_driversimpressao /var/lib/samba/printers
Agora vamos dar permissão de “rwx” (Leitura, Escrita e Execução) para o “u = Dono da Pasta” e “g = Grupo Dono da Pasta”, já o “o = Grupo Outros” vamos deixar com permissão “r-x” (Leitura e Execução), conforme comando ilustrado abaixo.
chmod -R 775 /var/lib/samba/printers
Com isso somente o “Dono” e o “Grupo Dono” da pasta poderão adicionar drivers de impressora, enquanto o grupo “dl_p_driversimpressao” informado no arquivo de configuração Samba, se enquadra nas permissões do grupo “Outros”, tendo somente permissão de utilização de leitura e execução.
Reinicie o serviço Samba conforme comando ilustrado abaixo.
systemctl restart smbd.service
ou
/etc/init.d/smbd restart
Pronto! Nosso servidor de impressão está configurado.
ADENDO: Também é necessário realizar a liberação do grupo de operações de impressão para o grupo dl_t_driversimpressao que utilizamos na configuração do Samba. Este passo e importante pq evita que os usuários que estejam dentro deste grupo recebam a msn de acesso negado ao administrar o servidor de impressão remotamente através da ferramenta RSAT. Como por exemplo realizar a adição de drivers adicionais.
Acesse seu servidor de impressão via Shell com a senha root e execute o seguinte comando:
net -S localhost rpc rights grant 'SEUDOMINIO\dl_t_driversimpressao' SePrintOperatorPrivilege -U'SEUDOMINIO\administrador'
CONCLUSÃO
Neste artigo foi abordado a instalação do servidor de impressão “Cups” + “Jasmine” utilizando uma distribuição Linux. Agora precisamos realizar as instalações de impressoras em nosso servidor, mas isso fica para um próximo post.
Se você gostou deste post e através dele pude lhe ajudar, o que acha de aproximarmos nosso contato? Siga meu blog e me adicione no Linkedin, aproveite para classificar algumas das minhas competências/recomendações, este simples gesto faz toda a diferença.
Att,
Rafael Oliveira
SysAdmin
FONTE: https://itbr.org/phpbb3/viewtopic.php?t=835
Continuação: “Instalando Impressoras no Cups“.
28 respostas
Boa tarde Rafael. Estou tendo dificuldade na instalação. Se você tiver uma VM pronta teria como disponibilizar para download?
Desde já agradeço pela dedicação, seus posts ajudam muita gente.
Bom dia Marcio, blz cara?
Não tenho uma VM pronta para isso, mas te desafio a refazer o artigo, lembrando em ficar atendo as novas versões dos pacotes. Forte Abraço.
Rafael, parabens pelo otimo tutorial, eu fiz tudo, só estou com 1 problema, quando tento acessar http://localhost/jasmine
ele da o seguinte erro:
No MySQL support MySQL support does not seem to be installed on this server
Check that the MySQL support for PHP is installed: It is usually a package called something like “php-mysql” on GNU/Linux distribs.Do not forget to restart your web server if needed.
Obs: Estou usando Debian 9
Eu ja fiz o download do php-mysql, configurei, rodei o script exatamente igual ao seu, mas continua o erro.
Bom dia Guilherme! Este poste é de 2017, reveja os pontos, com o passar do tempo os pacotes também vão sendo atualizados, é necessário observar esta demanda. No momento não consigo realizar nenhuma instalação para lhe auxiliar.
Estou com o mesmo problema.
Boa noite Rudival! Que pena cara, esse artigo é de 2017, pode ser que algo mudou, mas não estou mais utilizando o XenServer para poder ti auxiliar melhor. Migrei para o Proxmox! 🙁
Tenho o cups na minha empresa, e hoje só tem impressoras Brothers. Com estas impressoras (Brother) não consigo imprimir mais de uma cópia. Quero saber se você já passou por algo do tipo. Qualquer coisa entre em contato comigo pelo facebook. Obrigado.
Bom dia Leo! Cara aconteceu sim o mesmo comigo, na configuração da impressora na maquina do usuário vc pode desabilitar a opção de desagrupar paginas, assim vc consegue imprimir normal, foi na época um paliativo que consegui arrumar para o problema. Se achar uma nova solução compartilhe conosco, abr.
Olá qual distribuição utilizou nesses testes ? pois na versao do ubuntu server 16.04 a versão do php é a 7 para conseguir o php5 é necessario realizar via ppa. Acho que seria interessante descrever no seu post qual sistema utilizou tal como versao do php, apache e etc..
Bom dia Denis, essas informações são mencionadas no item “2 – Instalação de Servidor Web”, você chegou a ler? Os arquivos que descrevo seguem uma logica, talvez por isso deve ter estranhado, mas o intuito é ser sempre mais especifico ao assunto no qual estou tratando. Imagine se para cada artigo que eu fizer tiver que falar de instalação de Apache, php, etc…, sambemos que não é só o cups que depende de tais configurações. Utilize a mesma logica do artigo mas sempre utilize os pacotes atuais. Abr.
Boa tarde!!
Rafael, poderia me informar quais são prós e contras em usar essa ferramenta em um ambiente corporativo ??
Boa tarde Gabriel!
Ótima pergunta.
Prós – O Cups é um excelente pacote de gerenciamento de Impressões, por rodar em Linux sua administração se torna eficaz. Algumas vantagens são: Centralização de Impressoras, fácil gerência unificado, otimização de configuração de impressoras e gerenciamento unificado via browser. Também vejo como vantagem a utilização do Linux, sistema este robusto e seguro, que domina o âmbito de servidores da maioria das empresas, possibilitando inclusive a diminuição de custos com compra de licenças. Viva ao software livre! 😉
Contras – Por mais simples que seja, tem que saber operar no Linux, é necessário ter familiaridade com o SO para realizar as configurações adequadas e dar suporte ao serviço, como por exemplo: Atualizações, Configurações Adicionais, etc… Talvez isso não seria nem um contra, mas é extremamente necessário conhecer Linux para obter uma melhor similaridade com a utilização do Cups.
Espero ter ajudado.
Att,
Prezado Rafael,
Informo que o servidor de impressão e as estações de trabalho estão ingressados no LDAP. Eu já havia visto suas observações sobre o ingresso do servidor do domínio. Então, o problema persiste.
Então, caso o nobre amigo tenha mais alguma sugestão, desde já agradeço!
Prezado Rafael,
obrigado por responder! Então, todas as estações estão ingressando normalmente no LDAP, inclusive o servidor de impressão (Debian Stretch). Eu já tinha visto suas observações sobre ingresso das estações e servidores no Domínio. Talvez, sendo LDAP, tenha alguma diferença no momento em que o Jasmine faz a pesquisa. Então, o problema persiste. Caso você tenha mais alguma sugestão, eu desde já agradeço!
Boa noite Amauri, este tipo de problema não consegui reproduzir, estarei observando, caso tenha alguma informação relevante informo aqui. Peço que faça o mesmo, assim ajudaremos outras pessoas também. Grande abraço.
Outra informação importante: O referido servidor de impressão está ingressando nesta mesma Base LDAP!
Aproveito para perguntar, se é possível integrar o Jasmine com o LDAP, ou seja, há alguma configuração que possa ser feita no Jasmine para que o mesmo possa ser integrado ao LDAP?
Grato!
Fala Amauri, prazer falar contigo! Fico feliz em poder ajudar. Com relação a sua dúvida é possível observar ali no inicio do artigo em “Considerações” sobre a necessidade de realizar a integração com o domínio antes de realizar a configuração do servidor de impressão. Isso é interessante pois abordo algumas informações importantes que justamente atendem a esse requisitos de usuários no Jasmine. Da uma verificada, aqui eu utilizo servidor de impressão autenticado no AD e com relatório Jasmine 100% funcional. Abr.
Boa tarde!
Prezado Rafael, inicialmente o parabenizo pelo excelente material disponibilizado!
O Jasmine está gerando relatório, somente de usuários locais, ou seja, a partir de estações de trabalho, cujos usuários são locais, ele gera o relatório normalmente (Data, Título, Servidor, Impressora e o Total de páginas impressas.
Porém, nas mesmas estações de trabalho, quando eu efetuo login, utilizando um usuário do LDAP, ele imprime normalmente, porém não gera nenhum relatório no Jasmine, ou seja, não aparece nenhum registro da impressão por parte do referido usuário do LDAP. No Cups, fica registrada a impressão.
Por fim, fica registrada a seguinte mensagem de erro: “jasmine: DB insert query failed”
Caso o nobre amigo, tenha passado por esse problema e possa dar uma ajuda na solução do mesmo, desde já agradeço a atenção!
Como disse na resposta anterior creio que seu problema está relacionado a questão de configuração do Linux no domínio. Resolvendo isso creio que seu problema já será resolvido. Com relação a esse erro citado, nunca aconteceu comigo, mas pode estar relacionado a questão do LDAP também. Eu sempre recomento para ambientes de produção, primeiramente ajustar e ingressar o Linux no domínio antes de começar a disponibilizar serviços de rede, pois o LDAP e base para muita coisa. Da uma revisada nesta questão, qualquer coisa só falar, sobrando um tempinho tento ajudar na medida do possível. abr.
na parte 5) INSTALAÇÃO JASMINE – BACKEND. você diz para passar o diretório dummy para outro local, porém que diretório é esse? não foi criado igual o jasmine
Boa Tarde Ana!
Falei sim, veja o código do item 5. Após descompactar o arquivo é criado uma pasta, esta pasta que você vai acessar.
“vamos acessar a pasta descompactada do JASmine-Backend-0.0.3.tar.gz” = “cd ~/jasmine/JASmine-Backend-0.0.3”
Me referi a pasta descompactada. 😉
Att,