Tecnologia
Adicionando e Removendo Servidores Virtuais no Ubuntu
02/02/2020 às 11:36 Bruno Couty
Aqui vai uma dica muito prática para desenvolvedores amadores ou profissionais. Para fins práticos, imagine que você possua um VPS e deseje hospedar um ou, principalmente, mais sites ou API's dentro deste VPS. Aparentemente, uma tarefa simples, desde que realizemos as configurações corretas e nosso VPS. Vamos começar?!
Criando / Adicionando um Virtual Host
Primeiro, precisamos criar uma pasta para hospedar os arquivos do novo site e adicionar as devidas permissões de acesso a esta pasta.
sudo mkdir -p /var/www/example.com/public_html
# Aqui, lembre-se que o "-R" representa "recursividade", ou seja, o comando se replica para pastas e arquivos dentro do diretório
sudo chown -R $USER:www-data /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com
Os arquivos do site devem estar na pasta criada acima.
Agora, vamos criar o arquivo que será responsável por configurar o vHost:
sudo vim /etc/apache2/sites-available/example.com.conf
Aqui, está um exemplo básico, mas efetivo, do arquivo de configuração. Você deve fazer os ajustes adequados para seu projeto, ok.
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
O próximo passo é habilitar o novo vHost e reiniciar o apache:
sudo a2ensite example.com.conf
sudo service apache2 restart
Removendo um Virtual Host
Para remover uma entrada que não é mais utilizada, devemos, primeiramente, remover o vHost e reiniciar o apache:
sudo rm /etc/apache2/sites-available-example.com.conf
sudo rm -Rf /var/www/example.com
Agora, o vHost já não está mais acessível e é seguro excluir os arquivos, tanto de configuração quanto os arquivos de fonte do projeto.
sudo rm /etc/apache2/sites-available/example.com.conf
sudo rm -Rf /var/www/example.com
Automação
Aqui está um arquivo BASTANTE SIMPLES para automatizar este processo. Criamos o /usr/local/bin/site-add
e adicionamos o seguinte conteúdo:
#!/bin/bash
green=`tput setaf 2`
reset=`tput sgr0`
echo "|- Start ----------------------------------|"
echo ""
echo "|- Creating the site folder ---------------|"
mkdir -p /var/www/$1
echo "[ ${green}OK${reset} ]"
echo "|- Setting Permission ---------------------|"
chown -R $USER:www-data /var/www/$1
chmod -R 755 /var/www
chown -R www-data:www-data /var/www/$1
echo "[ ${green}OK${reset} ]"
echo "|- Creating Virtual Host ------------------|"
touch /etc/apache2/sites-available/$1.conf
echo "
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName $1
ServerAlias www.$1
DocumentRoot /var/www/$1/public
<Directory /var/www/$1/public/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>" > /etc/apache2/sites-available/$1.conf
echo "[ ${green}OK${reset} ]"
echo "|- Enable the new Virtual Host ------------|"
a2ensite $1.conf
echo "[ ${green}OK${reset} ]"
echo "|- Restarting Apache ----------------------|"
service apache2 restart
echo "[ ${green}OK${reset} ]"
echo "|- Editing Local Host File ----------------|"
echo "111.111.111.111 $1" >> /etc/hosts
echo "| - Enable Laravel Routes -----------------|"
a2enmod rewrite
echo "[ ${green}OK${reset} ]"
echo "|- Restarting Apache ----------------------|"
service apache2 restart
echo "[ ${green}OK${reset} ]"
echo "|- END ------------------------------------|"
Dê ao arquivo permissão de execução (chmod +x /usr/local/bin/site-add
).
Para rodar, de modo a automatizar todas as instruções de criação do vHost, execute:
site-add seusite.com
Remover Sites
Da mesma forma, crie um arquivo para a remoção, com o seguinte conteúdo:
#!/bin/bash
green=`tput setaf 2`
reset=`tput sgr0`
# echo "${red}red text ${green}green text${reset}"
echo "|- Start ----------------------------------|"
echo ""
echo |- Disable site ----------------------------|"
sudo a2dissite $1
rm /etc/apache2/sites-available/$1.conf
tar czf $1.tar.gz $1
rm -rf /var/www/$1
echo "[ ${green}OK${reset} ]"
echo "|- END ------------------------------------|"
Pronto! Curtiu a dica?