A Nota Fiscal de Serviços Eletrônica possui integração com entes públicos que utilizam o sistema e-Cidade, gerando cobranças automáticas no momento da emissão de guias e facilitando o processo de fiscalização. Além disso, o produto permite a integração com outros sistemas de gestão pública, visando sempre atender às necessidades dos nossos clientes.
O CentOS, abreviação de Community ENTerprise Operating System, é uma distribuição Linux de classe Enterprise derivada de códigos fonte gratuitamente distribuídos pela Red Hat Enterprise Linux e mantida pelo CentOS Project. Como o uso em servidores pode exigir uma maior compatibilidade com o hardware, a versão indicada para o uso com esta documentação é a CentOS 7.x.
A mídia de instalação pode ser obtida diretamente do site do projeto e gravada em CD, DVD ou pendrive. No site http://www.centos.org/download/ esta disponível a versão mais recente, mas utilizaremos a versão 7 x86_64 disponível em http://mirror.globo.com/centos/7/isos/x86_64/ (CentOS-7-x86_64-Minimal-1611.iso) por questões de compatibilidade com o produto.
O processo de instalação do sistema operacional não é coberto por esta documentação, mas recomendamos a utilização da imagem mínima, em “pt_BR” Português do Brasil.
Dica: Maiores informações sobre a instalação e personalização do sistema operacional podem ser obtidas em:
http://wiki.centos.org/Documentation
Durante o processo de configuração descrito nesta documentação, é necessário editar e modificar diversos arquivos de texto. Para realizar estas modificações, sugerimos a utilização do editor “vim”, mas você pode usar qualquer outro editor de texto de sua preferência.
Para instalar o editor de arquivos execute o comando:
[linux]# yum -y install vim
Dica: Mais informações sobre o editor de textos “vim” podem ser obtidas em:
http://www.vim.org/.
Atenção: Se você tiver problemas com a execução do Apache, certifique-se que o contexto de seus arquivos de configuração do Apache estão corretamente configurados no SELinux, ou altere o modo de execução do SELinux para permissivo, ou desative-o.
Para desativar o SELinux, edite o arquivo de configuração através do comando:
[linux]# vim /etc/selinux/config
Altere a linha de:
SELINUX=enforcing
Para:
SELINUX=disabled
Dica: Note que o valor correto é
disabled
, muitos usuários digitam apenasdisable
.
Para instalar o repositório de Pacotes Adicionais para Enterprise Linux (EPEL), execute o comando abaixo:
[linux]# yum -y install epel-release
Para instalar o repositório, execute o comando abaixo:
[linux]# yum -y localinstall http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
Após a instalação, recomendamos a atualização dos pacotes do sistema operacional, para realizar esta tarefa, execute o comando abaixo:
[linux]# yum -y update
Para reiniciar o servidor, utilize o comando:
[linux]# shutdown -r now
PostgreSQL é um sistema gerenciador de banco de dados objeto relacional (SGBDOR), desenvolvido como projeto de código aberto sem custo de licença. Este é o programa que vai gerenciar e armazenar o banco de dados relacional utilizado pelo NFS-e.
Dica: Mais informações sobre o PostgreSQL podem ser obtidas em:
http://www.postgresql.org/.
Para instalar o PostgreSQL 9.5.x e suas dependências, utilizaremos o gerenciador de pacotes yum
, que nos prove as últimas atualizações dos pacotes requeridos através de um canal seguro e confiável.
[linux]# yum -y localinstall https://yum.postgresql.org/9.5/redhat/rhel-7.2-x86_64/pgdg-centos95-9.5-3.noarch.rpm
Dica: Mais informações sobre o gerenciador de pacotes “yum” podem ser obtidas em:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-yum.html
Para realizar a instalação do PostgreSQL 9.5.x através do gerenciador de pacotes execute o comando:
[linux]# yum -y install postgresql95 postgresql95-contrib postgresql95-server
O NFS-e utiliza encoding UTF-8 no cluster do PostgreSQL 9.5.x. Por isso vamos parar, remover e recriar o cluster quer será utilizado pela aplicação.
Atenção: O NFS-e não pode ser instalado no mesmo cluster dos demais produtos como: e-cidade, e-cidadeonline, etc.
A codificação utilizada pelo NFS-e é UTF-8, enquanto que nos outros produtos é LATIN1!
Dica: Mais informações sobre a configuração do cluster:
http://www.postgresql.org/docs/9.5/static/sql-cluster.html
[linux]# export LC_ALL=pt_BR.UTF-8
[linux]# su - postgres -c "/usr/pgsql-9.5/bin/initdb -A trust -D /var/lib/pgsql/9.5/data -E UTF-8 --locale=pt_BR.UTF-8 -U postgres"
[linux]# vim /var/lib/pgsql/9.5/data/postgresql.conf
Atenção: Os demais parâmetros, não descritos aqui, não precisam ser alterados.
Localize e altere as linhas do arquivo do arquivo de configuração, descomentando-as se necessário (remover o caractere #
do início da linha), substituindo os valores correspondentes conforme a indicação abaixo.
listen_addresses = '*'
max_connections = 20
[linux]# systemctl start postgresql-9.5
[linux]# psql -U postgres -h localhost -l
A saída do comando deve ser parecida com os valores abaixo.
Nome | Dono | Codificação | Collate | Ctype | Privilégios de acesso
-----------+----------+-------------+------------------+------------------+-----------------------
postgres | postgres | UTF8 | pt_BR.UTF-8 | pt_BR.UTF-8 |
template0 | postgres | UTF8 | pt_BR.UTF-8 | pt_BR.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | pt_BR.UTF-8 | pt_BR.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
[linux]# systemctl enable postgresql-9.5
Vamos criar os usuários necessários para o funcionamento do NFS-e através dos comandos:
Atenção: Em ambientes de produção, nunca utilize senhas que tenham o mesmo nome da conta de usuário. Mais informações sobre segurança de senhas podem ser obtidas em:
http://cartilha.cert.br/senhas/.
psql -U postgres -c "CREATE ROLE nfse WITH SUPERUSER LOGIN PASSWORD 'nfse';"
Em seguida, utilize o comando abaixo para criar o banco de dados:
psql -U postgres -c "CREATE DATABASE nfse OWNER nfse;"
Apache é o servidor web mais usado em sistemas Linux. Servidores web são usados para servir páginas Web que, normalmente, são solicitadas pelos computadores clientes através de navegador, como o Firefox, Chromium, etc.
Dica: Mais informações sobre o Apache podem ser obtidas em:
http://www.apache.org/.
Para realizar a instalação do servidor web Apache através do gerenciador de pacotes, execute o comando:
[linux]# yum -y install httpd
[linux]# vim /etc/httpd/conf/httpd.conf
Localize os parâmetros e o bloco abaixo:
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
E altere para:
DocumentRoot "/var/www/html/nfse/public"
<Directory "/var/www/html/nfse/public">
DirectoryIndex index.php
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
SetEnv APPLICATION_ENV "production"
SetEnv no-gzip 1
Localize o bloco abaixo:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
E altere para:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
Dica: Mais informações sobre o VirtualHost podem ser obtidas em:
http://httpd.apache.org/docs/current/vhosts/examples.html.
[linux]# systemctl enable httpd
PHP é uma linguagem interpretada livre, usada originalmente apenas para o desenvolvimento de aplicações presentes e atuantes no lado do servidor, capazes de gerar conteúdo dinâmico na World Wide Web.
O PHP-FPM é uma alternativa ao PHP FastCGI com muitas funcionalidades voltadas a sites com grande número de acessos e carga.
Dica: Mais informações sobre o PHP podem ser obtidas em:
http://www.php.net/ e http://php-fpm.org/
Para realizar a instalação do PHP 5.6 através do gerenciador de pacotes, execute o comando:
[linux]# yum -y install php56 php56-php-cli php56-php-common php56-php-pear php56-php-pecl-jsonc php56-php-pecl-zip php56-php-process php56-php-xml php56-runtime php56-php-bcmath php56-php-gd php56-php-interbase php56-php-pecl-jsonc php56-php-mbstring php56-php-mcrypt php56-php-pgsql php56-php-soap php56-php-pecl-sqlite php56-php-xmlrpc php56-php-pecl-zip php56-php-fpm unzip zip xz xz-lzma-compat bzip2
[linux]# vim /etc/httpd/conf.d/php5.6-fpm.conf
<IfModule !mod_php5.c>
<IfModule proxy_fcgi_module>
<IfModule setenvif_module>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
SetHandler "proxy:fcgi://127.0.0.1:9000/"
</FilesMatch>
<Proxy "fcgi://127.0.0.1:9000/">
</Proxy>
<FilesMatch ".+\.phps$">
Require all denied
</FilesMatch>
<FilesMatch "^\.ph(p[3457]?|t|tml|ps)$">
Require all denied
</FilesMatch>
</IfModule>
</IfModule>
[linux]# vim /opt/remi/php56/root/etc/php-fpm.d/www.conf
Localize as linhas abaixo:
php_admin_value[error_log] = /opt/remi/php56/root/var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
E altere para:
;php_admin_value[error_log] = /opt/remi/php56/root/var/log/php-fpm/www-error.log
;php_admin_flag[log_errors] = on
[linux]# touch /var/log/php_errors.log
[linux]# chown apache.apache /var/log/php_errors.log
[linux]# vim /opt/remi/php56/root/etc/php.ini
Atenção: Os demais parâmetros, não descritos aqui, não precisam ser alterados.
Localize e altere as linhas do arquivo do arquivo de configuração, descomentando-as se necessário (remover o caractere ;
do início da linha), substituindo os valores correspondentes conforme a indicação abaixo.
short_open_tag = On
session.gc_maxlifetime = 7200
date.timezone = "America/Sao_Paulo"
[linux]# ln -s /opt/remi/php56/root/usr/bin/php /usr/bin/php
[linux]# systemctl restart php56-php-fpm
[linux]# systemctl enable php56-php-fpm
O pacote de instalação pode ser obtido diretamente do site do Portal do Software Público. No endereço da comunidade do e-cidade (https://softwarepublico.gov.br/social/e-cidade) estão disponíveis as últimas versões e suas atualizações. Como estamos realizando uma nova instalação, você deve baixar o pacote completo
, um exemplo de nome do pacote seria: e-cidadeonline2.completo.Vxxxxxx.tar.bz2
.
dbseller
através do comando:[linux]# useradd -d /home/dbseller -g apache -G wheel -k /etc/skel -m -s /bin/bash dbseller
[linux]# passwd dbseller
Dica: Neste exemplo, defina a senha como o mesmo nome de usuário, como “dbseller”.
Atenção: Em ambientes de produção, nunca utilize senhas que tenham o mesmo nome da conta de usuário. Mais informações sobre segurança de senhas podem ser obtidas em:
http://cartilha.cert.br/senhas/.
wheel
editando o arquivo usando o comando:[linux]# vim /etc/pam.d/su
Localize e descomente a linha como mostrado abaixo.
auth required pam_wheel.so use_uid
root
para o usuário dbseller
, edite o arquivo através do comando:[linux]# vim /etc/aliases
Mova o cursor até o fim do arquivo e insira alinha como mostrado abaixo.
root: dbseller
Em seguida, execute o comando:
[linux]# newaliases
[linux]# vim /etc/login.defs
Atenção: Os demais parâmetros, não descritos aqui, não precisam ser alterados.
Localize e altere a linha do arquivo do arquivo de configuração, descomentando-a se necessário (remover o caractere #
do início da linha), substituindo o valor correspondente conforme a indicação abaixo.
UMASK 002
Em seguida, execute o comando abaixo para ajustar os arquivos criados pelo apache:
[linux]# echo "umask 002" >> /etc/sysconfig/httpd
O NFS-e se comunica com o e-cidade através de um webservice, para que essa comunicação seja possível, é necessário liberar o acesso no e-cidade.
Após realizar o login no e-cidade, acesse:
DB:Configuração
;Configuração
;Cadastros
;Cadastro de Acessos ao Sistema
;Inclusão
;Em seguida, preencha os campos conforme as instruções abaixo:
Data Início
, selecione a data de hoje;Hora Início
, informe o valor 08:00
;Data Final
, selecione uma data no futuro, como o valor 31/12/2099
;Hora Final
, informe o valor 08:00
;Observação
, informe o valor Acesso ao webservice pelo NFS-e
;Incluir
.Após incluir o acesso, clique na aba Usuário
e selecione no campo Cod. Usuário
o usuário que será utilizado para comunicação com o webservice, em seguida, clique no botão Alterar
.
Após incluir o usuário, clique na aba IP/Máscara
e informe o valor no campo Máscara do IP
o endereço IP do servidor do NFS-e que será utilizado para comunicação com o webservice do e-cidade, em seguida, clique no botão Alterar
.
[linux]# tar xjf e-cidadeonline2.completo.Vxxxxxx.tar.bz2
[linux]# cp -r e-cidadeonline2.completo.Vxxxxxx /var/www/html/nfse
[linux]# cp /var/www/html/nfse/application/configs/application.ini.dist /var/www/html/nfse/application/configs/application.ini
Utilize o seguinte comando para editar o arquivo de configuração:
[linux]# vim /var/www/html/nfse/application/configs/application.ini
Em seguida, atualize as configurações conforme o exemplo abaixo.
...
doctrine.connectionParameters.dbname = "nfse"
doctrine.connectionParameters.host = "localhost"
doctrine.connectionParameters.password = "nfse"
doctrine.connectionParameters.port = "5432"
doctrine.connectionParameters.user = "nfse"
// Verifique a versão do sistema em /var/www/html/nfse/versao.txt
ecidadeonline2.versao = "V011114"
resources.mail.transport.host = "smtp.exemplo.com"
resources.mail.transport.password = "nfse@exemplo.com"
resources.mail.transport.port = "587"
resources.mail.transport.username = "nfse@exemplo.com"
resources.mail.defaultFrom.email = "nfse@exemplo.com"
resources.mail.defaultFrom.name = "NFS-e Nome da Prefeitura"
settings.application.cache = "011114"
webservice.client.uri = "http://url_acesso_ecidade/e-cidade/"
webservice.client.url = "http://url_acesso_ecidade/e-cidade/"
webservice.client.location = "http://url_acesso_ecidade/e-cidade/webservices/requisicao.webservice.php"
// md5 do ID do usuário selecionado na regra de acesso do e-cidade
webservice.cliente.user = "c4ca4238a0b923820dcc509a6f75849b"
...
[linux]# cp /var/www/html/nfse/application/configs/webservice-ecidade.ini.dist /var/www/html/nfse/application/configs/webservice-ecidade.ini
Utilize o seguinte comando para editar o arquivo de configuração:
[linux]# vim /var/www/html/nfse/application/configs/webservice-ecidade.ini
Em seguida, atualize as configurações conforme o exemplo abaixo.
...
DB_id_usuario = 'Id do usuário que criou a regra de acesso';
DB_login = 'Login o usuário que criou a regra de acesso';
DB_ip = 'IP de acesso ao servidor do E-cidade';
SERVER_ADDR = 'IP local do servidor do E-cidade';
SERVER_PORT = 'Porta local do servidor do E-cidade';
DOCUMENT_ROOT = 'Diretório raiz do E-cidade ex: /var/wwww';
SERVER_ADMIN = 'e-mail do administrador do servidor web';
PHP_SELF = 'webservices/requisicao.webservice.php';
HTTP_HOST = 'Nome do host do E-cidade ex localhost';
...
[linux]# cp /var/www/html/nfse/public/webservice/wsdlValidations/producao/modelo1.wsdl.dist /var/www/html/nfse/public/webservice/wsdlValidations/producao/modelo1.wsdl
Utilize o seguinte comando para editar o arquivo de configuração:
[linux]# vim /var/www/html/nfse/public/webservice/wsdlValidations/producao/modelo1.wsdl
Em seguida, altere todos os valores {URL}
, pela URL do NFS-e conforme o exemplo abaixo.
...
xmlns:ii="http://{URL}/webservice/index/producao"
...
Um exemplo de como ficaria a configuração, se fosse configurado um nome de domínio no VirtualHost
:
...
xmlns:ii="http://nfse.prefeitura.gov.br/webservice/index/producao"
...
Atenção: Existem diversas linhas que devem ser substituídas, você deve verificar todo o arquivo.
Atenção: Utilize a mesma
URL
configurada noVirtualHost
do apache, ou o endereço IP do servidor.
[linux]# cp /var/www/html/nfse/public/webservice/wsdlValidations/homologacao/modelo1.wsdl.dist /var/www/html/nfse/public/webservice/wsdlValidations/homologacao/modelo1.wsdl
Utilize o seguinte comando para editar o arquivo de configuração:
[linux]# vim /var/www/html/nfse/public/webservice/wsdlValidations/homologacao/modelo1.wsdl
Em seguida, altere todos os valores {URL}
, pela URL do NFS-e conforme o exemplo abaixo.
...
xmlns:ii="http://{URL}/webservice/index/homologacao"
...
Um exemplo de como ficaria a configuração, se fosse configurado um nome de domínio no VirtualHost
:
...
xmlns:ii="http://nfse.prefeitura.gov.br/webservice/index/homologacao"
...
Atenção: Existem diversas linhas que devem ser substituídas, você deve verificar todo o arquivo.
Atenção: Utilize a mesma
URL
configurada noVirtualHost
do apache, ou o endereço IP do servidor.
[linux]# cp /var/www/html/nfse/public/webservice/wsdlValidations/integracao/modelo1.wsdl.dist /var/www/html/nfse/public/webservice/wsdlValidations/integracao/modelo1.wsdl
Utilize o seguinte comando para editar o arquivo de configuração:
[linux]# vim /var/www/html/nfse/public/webservice/wsdlValidations/integracao/modelo1.wsdl
Em seguida, altere todos os valores {URL}
, pela URL do NFS-e conforme o exemplo abaixo.
...
xmlns:ii="http://{URL}/webservice/index/integracao"
...
Um exemplo de como ficaria a configuração, se fosse configurado um nome de domínio no VirtualHost
:
...
xmlns:ii="http://nfse.prefeitura.gov.br/webservice/index/integracao"
...
Atenção: Existem diversas linhas que devem ser substituídas, você deve verificar todo o arquivo.
Atenção: Utilize a mesma
URL
configurada noVirtualHost
do apache, ou o endereço IP do servidor.
[linux]# chown -R dbseller.apache /var/www/html/nfse
[linux]# chmod -R 775 /var/www/html/nfse
Em seguida, limpe qualquer cache existente através do comando:
[linux]# rm -rf /var/www/html/nfse/application/data/Proxy/*
schema
do NFS-e através do comando:[linux]# cd /var/www/html/nfse
[linux]# php bin/ruckus.php db:migrate
[linux]# systemctl restart httpd
Após finalizar os procedimentos de instalação e configuração, abra um navegador e acesse o NFS-e através do endereço IP ou nome do servidor. EX: http://nfse.prefeitura.gov.br/, utilize como nome de usuário admin
, e e como senha 123456
.
Atenção: Altere a senha ao realizar o primeiro acesso. Mais informações sobre segurança de senhas podem ser obtidas em: http://cartilha.cert.br/senhas/.
Termo | Significado |
---|---|
encoding | http://en.wikipedia.org/wiki/Character_encoding |
cluster | http://www.postgresql.org/docs/8.2/interactive/creating-cluster.html |
apt-get | http://www.debian.org/doc/manuals/apt-howto |
apt-get | http://pt.wikipedia.org/wiki/Advanced_Packaging_Tool |
vim | http://www.vim.org |
Firefox | http://www.mozilla.org/firefox |
DBSeller Sistemas | http://www.dbseller.com.br |
proxy | http://pt.wikipedia.org/wiki/Proxy |
squid | http://pt.wikipedia.org/wiki/Squid |