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
Ronie,
Bom Dia
Rafael excelente post, uma duvida encontrei na minha base teste, não sei porque alguns usuários que fazem a impressão de arquivos não saem com a identificação (nome do arquivo) e outros usuários fazem a impressão e apresentam o nome do arquivo. teria alguma ajuda a me oferecer ?
Boa dia Ronie blz? que bom que gostou, o intuito e ajudar mesmo!
Cara com relação a sua dúvida, e estranho uns conseguirem e outros não, infelizmente vou ficar ti devendo, não consegui simular o erro. 🙁
Boa Tarde, Primeiramente parabéns pelo excelente trabalho, em segundo, o CUPS + o Jasmine estão funcionando dentro do esperado, porém estou tendo problemas nas cópias, elas não estão sendo contabilizadas, imprimo várias cópias do mesmo arquivo e ainda sim só consta uma página impressa no Jasmine.
Sabe o que está provocando isso?
Boa Noite Eldher, obrigado que bom que de alguma forma posso ser útil! Este problema creio que esteja relacionado ao driver da impressora, vou deixar seu post aqui se caso alguém tenha o mesmo problema e puder compartilhar a solução conosco. Não consegui simular o erro no momento, mas já vi isso acontecer.
Boa tarde. Consegui realizar todos os passos, Rafael. Muito didático seu tutorial.
Estou apanhando um pouco para adicionar os drivers windows dentro do servidor linux apenas.
E me ocorre um erro, gostaria de saber se já passou pelo mesmo: Pausada – “jasmine: Couldn’t connect to the MySQL server !”
Saberia me dizer como solucionar?
Att,
Bom dia Charles Blz? Desculpa a demora em responder, mas pela mensagem parece que nao esta encontrando o banco de dados do jasmine, verifique se o banco foi criado corretamente.