Uma instalação padrão de apache
servirá todas as URLs que apontam para ela se nenhum Host Virtual tiver sido definido. Portanto, você não precisa fazer nada extra para obter apache
para responder.
Os scripts podem ser executados como scripts CGI colocando-os em /var/www/cgi-bin
e garantindo que sejam executáveis com chmod 0755 <script name>
.
Por exemplo, se você criar /var/www/cgi-bin/test.sh
da seguinte forma:
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<pre>"
env
echo "</pre>
navegue para o seu navegador em: http://<server name or IP>/cgi-bin/test.sh
, você deverá ver algo semelhante a:
SERVER_SIGNATURE=
Apache/2.2.15 (CentOS) Server at testing.lo Port 80
HTTP_USER_AGENT=Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0
SERVER_PORT=80
HTTP_HOST=testing.lo
DOCUMENT_ROOT=/var/www/html
SCRIPT_FILENAME=/var/www/cgi-bin/test.sh
REQUEST_URI=/cgi-bin/test.sh
SCRIPT_NAME=/cgi-bin/test.sh
HTTP_CONNECTION=keep-alive
REMOTE_PORT=43964
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PWD=/var/www/cgi-bin
SERVER_ADMIN=root@localhost
HTTP_ACCEPT_LANGUAGE=en-gb,en;q=0.5
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
REMOTE_ADDR=192.168.122.1
SHLVL=1
SERVER_NAME=testing.lo
SERVER_SOFTWARE=Apache/2.2.15 (CentOS)
QUERY_STRING=
SERVER_ADDR=192.168.122.40
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.1
HTTP_CACHE_CONTROL=max-age=0
HTTP_ACCEPT_ENCODING=gzip, deflate
REQUEST_METHOD=GET
_=/bin/env
Como você pode ver, HTTP_HOST
é a URL do servidor ( testing.lo
neste exemplo), que você pode usar em seu script.
No entanto, isso não é exatamente como você solicitou, pois você tem /cgi-bin/test.sh
no URL. Para corrigir isso, você precisa redirecionar. A maneira mais simples seria ativar o arquivo .htaccess
e configurá-lo.
Em /etc/httpd/conf/httpd.conf
, localize a linha <Directory "/var/www/html">
e role algumas linhas até ver uma linha que inicia AllowOverride
. Certifique-se de que esteja definido para All
. Você deveria ter:
<Directory "/var/www/html">
...
...
AllowOverride All
...
...
</Directory>
Agora crie um arquivo /var/www/html/.htaccess
e adicione o seguinte:
RewriteEngine on
RewriteRule (.*) /cgi-bin/test.sh/$1 [L]
Reinicie o apache
:
service httpd restart
Aponte seu navegador para o URL do servidor: http://<server name or IP>
.
Você deve ver resultados semelhantes a antes, mas sem precisar anexar o caminho do script ao URL. Observe também que há variáveis de ambiente que informam qual URL foi inserido para que seu script possa usá-las.
HTTP_HOST
é o nome do servidor.
PATH_INFO
é o caminho anexado ao servidor. ( test
se você inserir http://<server name or IP>/test
no seu navegador).
No seu script bash
, você simplesmente precisa usar essas variáveis em vez de analisar os argumentos do script conforme sua pergunta foi sugerida.
O script não precisa ser bash
. Use qualquer idioma que desejar, desde que ele possa acessar as variáveis de ambiente passadas para ele.