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: 4.000 ]
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."
Dicionário e tradutor baseado no Michaelis
Claro 3g Sony Ericsson md300 script conexao REVISAO 3
Instalando Nagios 4.0.8 - Debian 7
Atualizar repositório no Linux desabilitando a hibernação do sistema
Dell 1390 WLAN (Broadcom 4311)
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)