Vamos renomear o arquivo experimental do
PSGI/Plack que vem por padrão e criar um novo.
Renomear:
cd otrs/bin/cgi-bin
mv app.psgi app.psgi.old
Criar:
touch app.psgi
Depois de criado, abra com editor de sua preferência e adicione o código abaixo:
use Plack::Builder;
use Plack::App::File;
use CGI::Emulate::PSGI;
use CGI::Compile;
my $path_of_otrs = "/caminho_do_diretorio/otrs";
my $cgi_script_index = $path_of_otrs . "/bin/cgi-bin/index.pl";
my $sub_index = CGI::Compile->compile($cgi_script_index);
my $app_index = CGI::Emulate::PSGI->handler($sub_index);
my $cgi_script_customer = $path_of_otrs . "/bin/cgi-bin/customer.pl";
my $sub_customer = CGI::Compile->compile($cgi_script_customer);
my $app_customer = CGI::Emulate::PSGI->handler($sub_customer);
my $cgi_script_installer = $path_of_otrs . "/bin/cgi-bin/installer.pl";
my $sub_installer = CGI::Compile->compile($cgi_script_installer);
my $app_installer = CGI::Emulate::PSGI->handler($sub_installer);
my $cgi_script_nph_genericinterface = $path_of_otrs . "/bin/cgi-bin/nph-genericinterface.pl";
my $sub_nph_genericinterface = CGI::Compile->compile($cgi_script_nph_genericinterface);
my $app_nph_genericinterface = CGI::Emulate::PSGI->handler($sub_nph_genericinterface);
my $cgi_script_public = $path_of_otrs . "/bin/cgi-bin/public.pl";
my $sub_public = CGI::Compile->compile($cgi_script_public);
my $app_public = CGI::Emulate::PSGI->handler($sub_public);
my $cgi_script_rpc = $path_of_otrs . "/bin/cgi-bin/rpc.pl";
my $sub_rpc = CGI::Compile->compile($cgi_script_rpc);
my $app_rpc = CGI::Emulate::PSGI->handler($sub_rpc);
builder {
mount "/" => $app_index;
mount "/index.pl" => $app_index;
mount "/customer.pl" => $app_customer;
mount "/installer.pl" => $app_installer;
mount "/nph-genericinterface.pl" => $app_installer;
mount "/public.pl" => $app_public;
mount "/rpc.pl" => $app_rpc;
mount "/otrs-web" => Plack::App::File->new(root => $path_of_otrs . '/var/httpd/htdocs')->to_app;
};
Código no meu gitHub:
Não esqueça de alterar o 'caminho_do_diretorio' no código acima.
Agora, vamos executar:
starman app.psgi
Por padrão, o
Starman executa na porta 5000, então para testar o OTRS, abra seu navegador e digite o endereço:
http://localhost:5000
Executando o Starman em outra porta, com um número maior de processos e criando pid:
starman --l :2222 app.psgi --workers 5 --daemonize --pid app.pid
No exemplo acima, executa o Starman na porta 2222, com 5 processos e pid no arquivo "app.pid".
Matando os processos:
cat app.pid | sudo xargs kill
Configurando Apache com Proxy Reverse
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName meudominio.com
ServerAlias meudominio.com www.meudominio.com
<Location />
ProxyPass http://localhost:2222/
ProxyPassReverse http://localhost:2222/
</Location>
</VirtualHost>
Configurando Nginx com Proxy Reverse
server {
server_name meudominio.com www.meudominio.com;
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm;
location / {
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:2222;
}
}
Conclusão
A intenção desse artigo, foi ensinar como configurar OTRS com PSGI/Plack e executar com Starman. Demais configurações do OTRS, você deve seguir o link abaixo:
Resultado da instalação:
Espero ter ajudado.
Obrigado.