Bash Script para criar novos hosts virtuais Apache2.

Olá Mundo!

Edição principal:

Você pode encontrar o script aqui .
Basta executar vhost -help para obter as informações de uso.

Deixei o seguinte para referência, mas é muito mais fácil e rápido usar o novo script.

Se você está seguindo minha dica sobre como configurar um sistema operacional de desenvolvimento web no VirtualBox, o script funcionará como está ( https://coderwall.com/p/sc6r_q )

Este script assumirá certas coisas:

  • Que você planeja usar o diretório / home / username / www como seu webroot.

  • Que você tenha o template e o template-pub já configurados em / etc / apache2 / sites-available .

Esta é a aparência do meu arquivo de host virtual de modelo , cópia direta do padrão:

<VirtualHost *:80>
ServerAdmin webmaster@localhost


ServerName template.local

DocumentRoot /home/username/www/template

<Directory />
Options FollowSymLinks

AllowOverride All

</Directory>
<Directory /home/username/www/template/>
Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order allow,deny

allow from All

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory "/usr/lib/cgi-bin">
AllowOverride All

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log


# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.

LogLevel warn


CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Agora, este é o conteúdo do arquivo host virtual template-pub :

<VirtualHost *:80>
ServerAdmin webmaster@localhost


ServerName template.local

DocumentRoot /home/username/www/template/public

<Directory />
Options FollowSymLinks

AllowOverride All

</Directory>
<Directory /home/username/www/template/public/>
Options Indexes FollowSymLinks MultiViews

AllowOverride All

Order allow,deny

allow from All

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory "/usr/lib/cgi-bin">
AllowOverride All

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

Aqui, adicionamos / public ao DocumentRoot e ao Directory apenas para estruturas que possuem uma pasta pública e os aplicativos um nível acima. Isso é altamente sugerido como prática padrão para um aplicativo da web mais seguro, mantenha-o um nível acima da raiz da web pública.

Agora que isso foi resolvido, aqui está o script em toda a sua glória. Ele pedirá a senha do root para poder gerenciar os arquivos do host virtual.

#!/bin/bash
# Duplicate the base vhost template, will need SUDO!!!
sudo
-v

if [ "$2" == "pub" ]
then
echo
"Creating a vhost for $1 with a webroot in $HOME/www/$1/public/"
sudo cp
/etc/apache2/sites-available/template-pub /etc/apache2/sites-available/$1
else
echo
"Creating a vhost for $1 with a webroot in $HOME/www/$1/"
sudo cp
/etc/apache2/sites-available/template /etc/apache2/sites-available/$1
fi

sudo sed
-i 's/template/'$1'/g' /etc/apache2/sites-available/$1
sudo sed
-i '1s/^/127.0.0.1 '$1'.localn/' /etc/hosts

sudo a2ensite $1

sudo service apache2 reload


echo
"Done, please browse to http://$1.local to check!"

Copie-o em sua pasta / home / username / bin conforme o Mint 14.1 automaticamente o adiciona ao seu $ PATH (digite echo $ PATH para verificar).
Certifique-se de chmod + x scriptname.sh

scriptname.sh vhostname

scriptname.sh vhostname pub

O segundo comando irá definir o host virtual com sua raiz da web dentro da pasta pública do seu projeto.

Espero que ajude 🙂