Cria ambiente virtual (VirtualHost no Apache e Virtual Mail no Postfix) para desenvolvimento web
Publicado por Alysson (última atualização em 28/07/2014)
[ Hits: 3.981 ]
Cria um ambiente virtual completo para desenvolvimento web, com VirtualHost no Apache e Mail no Postfix.
É possível acompanhar melhorias no código no repositório:
- https://gist.github.com/LACabeza/90fe2174593fcad795c5
É preciso ter Apache 2 e Postfix instalados.
Depois, é preciso especificar o diretório de trabalho na variável workspace, o usuário na variável user e o grupo do Apache na variável group.
Para utilizar o script, execute
$ ./webhost.sh website.local
Onde "website" é o nome do ambiente virtual que será criado.
Com isso, o diretório workspace/website, quando não existir, será criado e suas permissões serão modificadas para dar acesso ao Apache.
Será adicionado no arquivo /etc/hosts a linha "website.local".
Será criado o VirtualHost no Apache: http://website.local
Será criado o Virtual Mail "webmaster@website.local" que encaminha as mensagens para o usuário especificado no script.
#!/bin/bash # --------------------------------------------------------------------------- # # @file # webhost.sh # # Creates a virtual enviroment for web development. # # @author Alysson Azevedo # @link http://lac.eti.br # @license http://www.gnu.org/licenses/gpl-2.0.html # # # * This program is free software: you can redistribute it and/or modify # * it under the terms of the GNU General Public License as published by # * the Free Software Foundation, either version 3 of the License, or # * (at your option) any later version. # # Requirements # apache2 # postfix # # Instructions # 1º Set up your enviroment configs; # workspace=/home/user/workspace # # 2º Add your user on apache's group # # 3º Skip this step # # 4º Use this script # # --------------------------------------------------------------------------- # # Workspace directory workspace=/mnt/dataExt/Works/www # Developer's user user=viper # Apache's group (make sure your user belongs to apache's group) group=www-data # How to use: # ./webhost.sh website.local # What webhost.sh do: # First, the directory $workspace/website will be created if it doesn't exists, and its permission will be set # Then will be append a new line on /etc/hosts with the virtual host's name # After a virtual host will be created on apache (note that the apache virtual hosts configuration only allow localhost access) # And finally a virtual mail will created # --------------------------------------------------------------------------- # # First param must to be the virtual server's name servername=$1 # Virtual server path serverpath=$workspace/${servername/.local/} #remove .local # Check privileges [ `id -u` -ne 0 ] && { echo -e "Super user required. \nTry again using 'sudo $0'." >&2 exit 1 } # Check param [ -z "$servername" ] && { echo -e "The virtualhost's name must be given. \nExample: $0 '$HOSTNAME.local'" >&2 exit 2 } # Check usage: ask for suffix to prevent accidental use [ -n "`grep " " <<< $servername`" ] && { echo -e "Hostname cannot contain space characters. \nExample: $0 '$HOSTNAME.local'" >&2 exit 3 } # Check usage: ask for suffix to prevent accidental use [ -z "`grep "\.local" <<< $servername`" ] && { echo -e "Suffix '.local' must be given. \nExample: $0 '$HOSTNAME.local'" >&2 exit 3 } # Check if serverpath isn't a file [ -f $serverpath ] && { echo -e "$servername isn't a good name because there's a file '$serverpath'.\nTry another hostname." >&2 exit 4 } # Confirm operation read -p "A virtualhost will be created for '$servername'. Do you confirm the operation? [yes/no]: " confirm [ "${confirm,,}" != yes ] && { echo "Leaving without change anything." exit } # All right, let's do this echo "Applying changes." # If serverpath doesn't exists, make it [ ! -d $serverpath ] && { mkdir $serverpath chown $user:$group $serverpath echo "Directory '$serverpath' created." } # Set up the permissions chgrp -R www-data $serverpath chmod -R g+w $serverpath find $serverpath -type d -print0 | xargs -0 chmod g+s echo "Permissions for $serverpath modified." # Update hosts file, if it's needed. [ -z "`grep $servername /etc/hosts`" ] && { echo " ::1 $servername ::1 www.$servername" >> /etc/hosts echo "File /etc/hosts updated." } # Virtual hosts http://httpd.apache.org/docs/current/mod/core.html#virtualhost # Create Apache2's VirtualHost, if it's needed [ ! -f "/etc/apache2/sites-enabled/200-${servername/./-}.conf" ] && { echo "\ <VirtualHost *:80> ServerName $servername ServerAlias www.$servername ServerAdmin webmaster@$servername DocumentRoot $serverpath <Directory $serverpath/> Options Indexes FollowSymLinks AllowOverride All Require all granted Order deny,allow Deny from all Allow from 127.0.0.0/8 Allow from ::1 Allow from 192.168.56.0/24 </Directory> ErrorLog \${APACHE_LOG_DIR}/error-${servername/.local/}.log CustomLog \${APACHE_LOG_DIR}/access-${servername/.local/}.log combined </VirtualHost>" > /etc/apache2/sites-available/${servername/./-}.conf # Makes a symbol link from /etc/apache2/sites-available to /etc/apache2/sites-enabled ln -s "../sites-available/${servername/./-}.conf" "/etc/apache2/sites-enabled/200-${servername/./-}.conf" # Apply changes on apache service apache2 restart >&2 echo "Virtualhost created. Visit: http://$servername" } # Virtual mails http://www.postfix.org/VIRTUAL_README.html # Add host for postfix, if it's needed. [ -z "`grep $servername /etc/postfix/virtual_domains.conf`" ] && { echo "$servername" >> /etc/postfix/virtual_domains.conf echo "File /etc/postfix/virtual_domains.conf updated." } # Add mail for postfix, if it's needed. [ -z "`grep $servername /etc/postfix/virtual_aliases.conf`" ] && { echo "webmaster@$servername $user" >> /etc/postfix/virtual_aliases.conf postmap /etc/postfix/virtual_aliases.conf echo "Mail alias webmaster@$servername to $user was created." } echo "Done."
Backup Incremental em HD secundário/externo
EPD 0.5 (Criando e editando pacotes de instalação debian)
Baixando e instalando o Asterisk
Criando vários usuários no LDAP a partir de um arquivo
Instala o Stardict Dicionario!
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta