¿Cómo puedo instalar Railo y Apache en Ubuntu y hacer que pase un nombre de usuario de autenticación básico a Railo?

¿Cómo puedo instalar Railo y Apache en Ubuntu y hacer que pase un nombre de usuario de autenticación básico a Railo?

Estoy intentando pasar de usar Adobe ColdFusion a usar Railo. La aplicación que estoy intentando migrar depende de que el servidor web verifique la autenticación básica, pero luego necesita conocer el nombre de usuario del usuario autenticado mediante la #REMOTE_USER#variable.

Intenté hacer un volcado del alcance de cgi y parece que la variable no se configura. He estado trabajando para que esto funcione durante aproximadamente una semana y estoy estancado.

Respuesta1

Así que finalmente lo descubrí. Como decía, me llevó al menos una semana conseguir esto. Entonces, estoy compartiendo mis notas sobre cómo configurar una máquina nueva para esto, para que nadie más tenga que dedicar tanto tiempo como yo a resolver esto. La clave parece ser que desea hacer proxy a Railo usando el protocolo AJP en lugar de HTTP y desea decirle a Tomcat que no necesita realizar autenticación (lo que le permitirá pasar la variable sin tocar).

Empecemos:

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

.

Instalar Railo:

Descargue la versión de 64 bits del instalador estándar que aparece en la página enhttp://www.getrailo.org/index.cfm/download/.

Hazlo ejecutable:

chmod +x <file_you_just_downloaded>

Ejecutarlo:

./<file_you_just_downloaded>

Elija todos los valores predeterminados.

.

Ok, ahora edite los archivos de configuración de esta manera:

=== 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 el programa htpasswd, cree un .htpasswdarchivo en /etc/apache2Si desea que algunos sitios se autentiquen y otros no, puede colocar la sección de proxy dentro de la definición de hosts virtuales y modificarla según sea necesario 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 Railo/Tomcat:

/opt/railo/railo_ctl restart

Ahora, Railo debería poner el nombre de usuario de autenticación básico en cgi.remote_user. Pensé que tendría que intentar poner algo que copie eso en #REMOTE_USER# en localconfig/application.cfm. Pero eso ya parece ser lo mismo. El segundo conector AJP en el puerto 8010 es para que usted pueda realizar proxy desde hosts virtuales habilitados para SSL en Apache. Entonces, si tiene un host virtual habilitado para SSL, envíe el proxy al puerto 8010 en lugar de 8009. De esa manera, Railo establecerá variables que le permitirán al ColdFusion que está ejecutando saber que está usando SSL.

información relacionada