Página 1 de 1

PHP: Dica de configuração de pastas virtuais offline

Enviado: 08 Out 2021 18:06
por rochinha
Amiguinhos,

Para quem desenvolve para web mas acha um saco ter de fazer FTP do aplicativo sendo desenvolvido para testar online a cada alteração segue algumas dicas para desenvolvimento offline.

Neste caso esta dica é para uso com Apache e PHP em ambiente Windows.

Mas antes de continuar o intuito é evitar configurações no .htaccess para uso local e depois para uso online. Pois desta forma seus subsites sempre serão acionados como se fossem o único no servidor através do nome virtual.

Se você tem instalado o XAMPPS ou WAMPPS ou até mesmo o AMPPS que é o que eu uso, provavelmente você tem nas pastas WWW, PUBLIC ou HTDOCS lotadas de pastas para cada site ou scripts e muitas vezes precisa alterar hTACCESS para ser acionado por subdiretórios de seu servidor local, exemplo:

Código: Selecionar todos

http://localhost/site1
http://localhost/site2/public
http://localhost/site3/web
Você até gostaria de melhorar estes acessos, portanto que tal chama-los assim:

Código: Selecionar todos

http://site1.local
http://site2.local
http://site3.local
Muito mais profissional e simples. Lógico que site1, site2 ou site3 fica pouco explicito mas você poderá usar o nome que quiser:

Código: Selecionar todos

http://vendashop.local
http://armazem.local
http://hotel.local
Bacana, mas vamos as alterações para que isto possa acontecer.

O Primeiro Passo será necessário alterar um arquivo do Windows, o hosts. Abra o arquivo c:\windows\system32\drivers\etc\hosts. Acrescente os nomes de sites na lista:

Código: Selecionar todos

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

127.0.0.1 http://site1.local
127.0.0.1 http://site2.local
127.0.0.1 http://site3.local
Veja que 127.0.0.1 é o IP de acesso local, ou seja este é o endereço da própria máquina em que se está usando o servidor e ele não é visivel numa rede pois cada máquina sobe o seu próprio 127.0.0.1.

Após a alteração salve o arquivo e reinicie o Apache. Ao digitar os endereço acima eles acessarão os sites no seu servidor de forma mais homogênea.

O Segundo Passo é alterar o arquivo httpd-vhosts.conf. Abra o arquivo c:\???\apache\conf\extra\httpd-vhosts.conf e para cada site inclua o trecho abaixo modificando somente o SITEROOT

Código: Selecionar todos

define SITEROOT "site1"
define PUBLICROOT "/"
<VirtualHost 127.0.0.1:80>
    ServerName ${SITEROOT}.local
    ServerAlias www.${SITEROOT}.local
    ServerAdmin admin@${SITEROOT}.local
    Alias /doc "C:/AMPPS/www/${SITEROOT}/documentacao"
    DocumentRoot "C:/AMPPS/www/${SITEROOT}/site${PUBLICROOT}"
    <Directory "C:/AMPPS/www/${SITEROOT}/site${PUBLICROOT}">
         Require all granted
         Options Indexes FollowSymLinks MultiViews
         AllowOverride All
         Order allow,deny
         allow from all
    </Directory>
    ErrorLog  "${APACHE_LOG_DIR}/${SITEROOT}.err"
    CustomLog "${APACHE_LOG_DIR}/${SITEROOT}.log" combined
    </VirtualHost>

    <VirtualHost 127.0.0.1:443>
    ServerName ${SITEROOT}.local
    Alias /doc "C:/AMPPS/www/${SITEROOT}/documentacao"
    DocumentRoot "C:/AMPPS/www/${SITEROOT}/site${PUBLICROOT}"
    <Directory "C:/AMPPS/www/${SITEROOT}/site${PUBLICROOT}">
         Require all granted
         Options Indexes FollowSymLinks MultiViews
         AllowOverride All
         Order allow,deny
         allow from all
    </Directory>
    ErrorLog  "${APACHE_LOG_DIR}/${SITEROOT}.err"
    CustomLog "${APACHE_LOG_DIR}/${SITEROOT}.log" combined
    SSLEngine on
    #SSLCertificateFile    "C:/AMPPS/apache/conf/ssl_crt/server.crt"
    #SSLCertificateKeyFile "C:/AMPPS/apache/conf/ssl_crt/server.key"
    SSLCertificateFile    "${APACHE_SSL_DIR}/localhost.crt"
    SSLCertificateKeyFile "${APACHE_SSL_DIR}/localhost.key"
</VirtualHost>
Veja que define SITEROOT "site1" entende que tenho uma pasta na pasta root de execução com o nome site1, mas você pode colocar qualquer nome, exemplo: define SITEROOT "vendashop", define SITEROOT "armazem" ou define SITEROOT "hotel"

No meu caso, como estou usando AMPPS e ele usa a pasta root WWW todos os meus sites estão dentro dela e possuem uma hierarquia com duas pastas onde site contém o script e documentação contém os arquivos de instruções.

Exemplo:

Ao configurar a pasta c:/AMPPS/WWW/site1 para ser chamada via http://site1.local defino:

Código: Selecionar todos

define SITEROOT "site1"
define PUBLICROOT "/"
Ao configurar a pasta c:/AMPPS/WWW/site2/public para ser chamada via http://site2.local defino:

Código: Selecionar todos

define SITEROOT "site2"
define PUBLICROOT "/public/"
Ao configurar a pasta c:/AMPPS/WWW//site3/web para ser chamada via http://site3.local defino:

Código: Selecionar todos

define SITEROOT "site3"
define PUBLICROOT "/web/"
Para cada site que quero configurar basta modificar as duas variaveis, SITEROOT e PUBLICROOT e copiar/colar o grupo <VirtualHost>...</VirtualHost>

Estas variáveis podem ser colocadas no inicio do arquivo c:\???\apache\conf\extra\httpd-vhosts.conf e devem apontar para as pastas correspondentes no seu servidor. No caso do AMPPS fica assim:

Código: Selecionar todos

define APACHE_LOG_DIR "C:/AMPPS/apache/logs"
define APACHE_SSL_DIR "C:/AMPPS/apache/bin/ssl"
O legal desta configuração é que tanto HTTP quanto HTTPS ficam configurados sendo possivel acessar http://site1.local ou https://site1.local.

Supondo que tenha um novo script e quero acrescentá-lo ao meu hall de aplicações, chamarei de rochinha, então devo proceder da seguinte forma:

Criarei dentro da pasta WWW, PUBLIC ou HTDOCS a pasta rochinha e dentro dela a pasta site onde colocarei toda a raiz do script.

Código: Selecionar todos

...
c:\ampps\www\rochinha
          |
          +------------site
          |
          +------------documentacao
...
Então devo configurar as variáveis principais assim:

Código: Selecionar todos

define SITEROOT "rochinha"
define PUBLICROOT "/"
E colar o grupo <VirtualHost>...</VirtualHost>.

Feito isto, devo reiniciar o Apache e acessar o script via http://rochinha.local ou https://rochinha.local

Hoje rodo meus scripts usando Apache 2.4.41(Win32), OpenSSL/1.0.2s e PHP 7.4.24.

Bom trabalho.