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: 726 ]

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

Criando um roteador Linux com sua máquina antiga

Instalação do Varnish + Apache + Virtual Hosts

Configuração de rede para RedHat e similares utilizando VI/Emacs/etc

Configurar Speedy Home na distribuição SuSE 10

Novo EyeOS - Sistema Operacional de Computação nas Nuvens

  
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


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts