Como posso instalar o Railo e o Apache no Ubuntu e passar um nome de usuário de autenticação básico para o Railo?

Como posso instalar o Railo e o Apache no Ubuntu e passar um nome de usuário de autenticação básico para o Railo?

Estou tentando passar do Adobe ColdFusion para o Railo. O aplicativo que estou tentando migrar depende de o servidor da Web verificar a autenticação básica, mas precisa saber o nome de usuário do usuário autenticado usando a #REMOTE_USER#variável.

Tentei fazer um dump do escopo cgi e parece que a variável não está sendo definida. Estou tentando fazer isso há cerca de uma semana e estou preso.

Responder1

Então, finalmente descobri. Como disse, demorei pelo menos uma semana para conseguir isso. Então, estou compartilhando minhas anotações sobre como configurar uma máquina nova para isso, para que ninguém mais precise gastar tanto tempo quanto eu para descobrir isso. O principal parece ser que você deseja fazer proxy para railo usando o protocolo AJP em vez de HTTP e deseja dizer ao Tomcat que ele não precisa fazer autenticação (o que permitirá que ele passe a variável intacta).

Vamos começar:

apt-get install apache2 mysql-server apache2-utils
a2enmod proxy_ajp
service apache2 restart

.

Instale o Railo:

Baixe a versão padrão do instalador de 64 bits listada na página emhttp://www.getrailo.org/index.cfm/download/.

Torne-o executável:

chmod +x <file_you_just_downloaded>

Executá-lo:

./<file_you_just_downloaded>

Escolha todos os padrões.

.

Ok, agora edite os arquivos de configuração assim:

=== modified file '/etc/apache2/apache2.conf'
--- /etc/apache2/apache2.conf 2014-10-10 00:22:11 +0000
+++ /etc/apache2/apache2.conf 2014-10-10 00:27:48 +0000
@@ -223,18 +223,24 @@
<IfModule mod_proxy.c>
<Proxy *>
Allow from 127.0.0.1
+
+ AuthType Basic
+ AuthName "Employee Login"
+ AuthBasicProvider file
+ AuthUserFile /etc/apache2/.htpasswd
+ Require valid-user
</Proxy>
ProxyPreserveHost On
- ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ http://127.0.0.1:8888/$1$2
- ProxyPassMatch ^/(.+\.cfchart)(/.*)?$ http://127.0.0.1:8888/$1$2
- ProxyPassMatch ^/(.+\.cfml)(/.*)?$ http://127.0.0.1:8888/$1$2
+ ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://127.0.0.1:8009/$1$2
+ ProxyPassMatch ^/(.+\.cfchart)(/.*)?$ ajp://127.0.0.1:8009/$1$2
+ ProxyPassMatch ^/(.+\.cfml)(/.*)?$ ajp://127.0.0.1:8009/$1$2
# optional mappings
#ProxyPassMatch ^/flex2gateway/(.*)$ http://127.0.0.1:8888/flex2gateway/$1
#ProxyPassMatch ^/messagebroker/(.*)$ http://127.0.0.1:8888/messagebroker/$1
#ProxyPassMatch ^/flashservices/gateway(.*)$ http://127.0.0.1:8888/flashservices/gateway$1
#ProxyPassMatch ^/openamf/gateway/(.*)$ http://127.0.0.1:8888/openamf/gateway/$1
#ProxyPassMatch ^/rest/(.*)$ http://127.0.0.1:8888/rest/$1
- ProxyPassReverse / http://127.0.0.1:8888/
+ ProxyPassReverse / ajp://127.0.0.1:8009/
</IfModule>



=== modified file '/etc/apache2/sites-available/000-default.conf'
--- /etc/apache2/sites-available/000-default.conf 2014-10-10 00:12:20 +0000
+++ /etc/apache2/sites-available/000-default.conf 2014-10-10 00:31:59 +0000
@@ -26,6 +26,13 @@
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
+ <Directory /var/www/html>
+ AuthType Basic
+ AuthName "Employee Login"
+ AuthBasicProvider file
+ AuthUserFile /etc/apache2/.htpasswd
+ Require valid-user
+ </Directory>
</VirtualHost>

Usando o programa htpasswd, crie um .htpasswdarquivo em /etc/apache2Se desejar que alguns sites sejam autenticados e outros não, você pode colocar a seção proxy dentro da definição de hosts virtuais e ajustar conforme necessário por host virtual.

Editar/opt/railo/tomcat/config/server.xml

=== modified file '/opt/railo/tomcat/config/server.xml'
--- /opt/railo/tomcat/config/server.xml 2014-10-10 00:34:48 +0000
+++ /opt/railo/tomcat/config/server.xml 2014-10-10 00:36:33 +0000
@@ -89,7 +89,7 @@
-->

<!-- Define an AJP 1.3 Connector on port 8009 -->
- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
+ <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false" />
+ <Connector port="8010" protocol="AJP/1.3" tomcatAuthentication="false" secure="true" scheme="https"/>

<!-- An Engine represents the entry point (within Catalina) that processes -->

Reinicie o Railo/Tomcat:

/opt/railo/railo_ctl restart

Agora, Railo deve colocar o nome de usuário de autenticação básico em cgi.remote_user. Achei que talvez fosse necessário tentar colocar algo que copiasse isso para #REMOTE_USER# em localconfig/application.cfm. Mas isso já parece ser a mesma coisa. O segundo conector AJP na porta 8010 é para você fazer proxy de hosts virtuais habilitados para SSL no Apache. Portanto, se você tiver um host virtual habilitado para SSL, faça proxy para a porta 8010 em vez de 8009. Dessa forma, Railo definirá variáveis ​​que permitem que o ColdFusion em execução saiba que está usando SSL.

informação relacionada