Virtual Host no CentOS 7

Virtual Host permite ao administrador utilizar um servidor para hospedar múltiplos sites e domínios a partir de uma simples interface ou IP, através da utilização do mecanismo de correspondência. Isto é relevante para quem quer hospedar mais de um site em um único VPS (Virtual Private Server).

[ Hits: 13.648 ]

Por: Osias em 08/11/2019


Introdução



Virtual Host permite ao administrador utilizar um servidor para hospedar múltiplos sites e domínios a partir de uma simples interface ou IP, através da utilização do mecanismo de correspondência. Isto é relevante para quem quer hospedar mais de um site em um único VPS (Virtual Private Server).

Cada domínio que esteja configurado irá direcionar o visitante para um diretório específico que mantém as informações daquele site, nunca indicando que o mesmo servidor também é responsável por outros sites. Este esquema é expansível sem qualquer limite de software desde que seu servidor possa suportar a carga.

Passos

1. Instalando o Apache:

# yum -y install httpd

2. Criando as pastas:

# mkdir -p /var/www/osias1.com/public_html
# mkdir -p /var/www/osias2.com/public_html
# mkdir -p /var/www/osias3.com/public_html

3. Ajustando as permissões nas pastas:

# chown -R apache:apache /var/www/osias1.com
# chown -R apache:apache /var/www/osias2.com
# chown -R apache:apache /var/www/osias3.com

4. Criando as pastas do Virtual Host:

# mkdir /etc/httpd/sites-available
# mkdir /etc/httpd/sites-enabled

5. Editando o arquivo "httpd.conf":

# vim /etc/httpd/conf/httpd.conf

Insira na última linha:

IncludeOptional sites-enabled/*.conf

6. Criando o Virtual Host:

# vim /etc/httpd/sites-available/osias1.com.conf

<VirtualHost *:80>
ServerName www.osias1.com
ServerAlias osias1.com
DocumentRoot /var/www/osias1.com/public_html
</VirtualHost>

# vim /etc/httpd/sites-available/osias2.com.conf

<VirtualHost *:80>
ServerName www.osias2.com
ServerAlias osias3.com
DocumentRoot /var/www/osias2.com/public_html
</VirtualHost>

# vim /etc/httpd/sites-available/osias3.com.conf

<VirtualHost *:80>
ServerName www.osias3.com
ServerAlias osias3.com
DocumentRoot /var/www/osias3.com/public_html
</VirtualHost>

7. Criando os "index.html":

# vim /var/www/osias1.com/public_html/index.html

<h1>osias1</h1>

# vim /var/www/osias2.com/public_html/index.html

<h1>osias2</h1>

# vim /var/www/osias3.com/public_html/index.html

<h1>osias3</h1>

8. Criando link simbólico:

# ln -s /etc/httpd/sites-available/osias1.com.conf /etc/httpd/sites-enabled/osias1.com.conf
# ln -s /etc/httpd/sites-available/osias2.com.conf /etc/httpd/sites-enabled/osias2.com.conf
# ln -s /etc/httpd/sites-available/osias3.com.conf /etc/httpd/sites-enabled/osias3.com.conf

9. Reiniciando o Apache:

# service httpd restart

Agora é só apontar os domínios no servidor de DNS, ou configure o acesso nas máquinas Windows no arquivo "C:\Windows\System32\drivers\etc\hosts" no Windows. Coloque as seguintes linhas:

Seu ip osias1.com
Seu ip osias2.com
Seu ip osias3.com

Colocando senha em pasta com o Apache:

# mkdir /var/www/osias1.com/public_html/admin
# mkdir /var/www/osias2.com/public_html/admin
# mkdir /var/www/osias3.com/public_html/admin

# htpasswd -c /var/www/osias1.com/public_html/admin/.htpasswd osias1
# htpasswd -c /var/www/osias2.com/public_html/admin/.htpasswd osias2
# htpasswd -c /var/www/osias3.com/public_html/admin/.htpasswd osias2

Edite:

# vim /etc/httpd/sites-available/osias1.com.conf

<VirtualHost *:80>
ServerName www.osias1.com
ServerAlias osias1.com
DocumentRoot /var/www/osias1/public_html
<directory "/var/www/osias1.com/public_html/admin">
AllowOverride None
Options Indexes MultiViews
Order allow,deny
Allow from all

AuthType Basic
AuthName "Acesso Restrito: "
AuthUserFile /var/www/osias1.com/public_html/admin/.htpasswd"
Require valid-user
</directory>
</VirtualHost>

# vim /etc/httpd/sites-available/osias2.com.conf

<VirtualHost *:80>
ServerName www.osias2.com
ServerAlias osias2.com
DocumentRoot /var/www/osias2/public_html
<directory "/var/www/osias2.com/public_html/admin">
AllowOverride None
Options Indexes MultiViews
Order allow,deny
Allow from all

AuthType Basic
AuthName "Acesso Restrito: "
AuthUserFile /var/www/osias2.com/public_html/admin/.htpasswd"
Require valid-user
</directory>
</VirtualHost>

# vim /etc/httpd/sites-available/osias3.com.conf

<VirtualHost *:80>
ServerName www.osias3.com
ServerAlias osias3.com
DocumentRoot /var/www/osias3/public_html
<directory "/var/www/osias3.com/public_html/admin">
AllowOverride None
Options Indexes MultiViews
Order allow,deny
Allow from all

AuthType Basic
AuthName "Acesso Restrito: "
AuthUserFile /var/www/osias3.com/public_html/admin/.htpasswd"
Require valid-user
</directory>
</VirtualHost>

Reiniciando o Apache:

# service httpd restart

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Instalando Samba 4 com Domínio no CentOS 7

Leitura recomendada

Acesso à VPN com etoken USB

O programa gwhois

DNS com BIND

Servidor Apache hospedando diversos sites com e sem SSL

Canal IRC do VOL - Participe você também!

  
Comentários
[1] Comentário enviado por psctec em 10/11/2019 - 10:07h

Osias,

Bom criou a estrutura do Debian (sites-enabled e sites-avaiable) dentro do CentOS, não concordo com esta estrutura.
Fora ter que administra-la via links simbólicos (O Debian ainda fez mais, criou ferramentas para isto [a2ensite e a2dissite]), acho que mais confunde que ajuda, fora chamar o Httpd de Apache2, estes nomes deveriam ser padronizados em todas as distribuições, isto ajuda um administrador que não tem vivência numa determinada distribuição.

Uma forma mais fácil é só criar um arquivo vhosts.conf em /etc/httpd/conf.d com o seguinte conteúdo:

<VirtualHost *:80>
ServerName usuário (site)
ServerAlias www.usuário

ServerAdmin webmaster@localhost
DocumentRoot /var/www/usuário/html ou var/www/usuário/public_html

ErrorLog /var/www/usuário/log/error.log
CustomLog /var/www/usuário/log/access.log combined
</VirtualHost>
Criar a pasta log com o comando:
mkdir /var/www/usuário/log

Reiniciar o Apache com o comando:

service httpd restart

Ou dentro do /etc/httpd/conf.d ter um arquivo .conf para cada site

https://github.com/paulo-correia/Linux_Apache-Http/blob/master/VHOSTS.md

[2] Comentário enviado por makdoido em 04/12/2019 - 18:20h

ok mas como faço para vincular vários domínios possuindo apenas um ip externo no meu server cloud linux


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts