a2ensite ‘Sitio: ___ no existe» error, incluso con .conf archivo

Sistema: Ubuntu 14.04 LÁMPARA que se ejecutan en Parallels VM conjunto con Vagrant

Estoy escribiendo mi primer no-trivial shell script para agregar nuevos proyectos web a un dev VM en mi Mac portátil.

  1. Crear una estructura de carpetas por defecto en /var/www/
  2. Agregar una .conf vhost archivo /etc/apache2/sites-available con el nuevo dominio reemplazar los marcadores de posición a través de la sed
  3. Habilitar el nuevo sitio y reiniciar apache

Tengo las carpetas y archivos de copiar y sed parece feliz personalizar mi index.html y .conf archivo vhost, pero a2ensite no parece ver el .fichero de configuración en /etc/apache2/sites-available/

Me prueba su existencia e incluso imprimir una depuración de listado: ls -al /etc/apache2/sites-available/| grep $CONFFILE antes de intentar habilitar el sitio.

Que he leído aquí y en otros lugares acerca de la importancia de contar con el .conf extensión desde Ubuntu 13 (o 14), que parece ser un problema muy común. Mi vhost archivo tiene el .conf extensión, por lo que esto parece un problema diferente.

Puede alguien me apunte en la dirección correcta? No he sido capaz de encontrar otros anuncios con este problema en particular.

Mi sensación es que tengo un error en mi $CONFFILE la expansión de la variable en el a2ensite orden, porque el error de no mostrar la .conf extensión aunque el listado de directorios:

ERROR: Site /etc/apache2/sites-available/example-com-80 does not exist!

Edición:

Después de ejecutar a2ensite desde la línea de comandos por Micheal la sugerencia de abajo, parecía que analizar bien, pero todavía no muestra la extensión:

$ sudo a2ensite example-com-80.conf
Enabling site example-com-80.
To activate the new configuration, you need to run:
  service apache2 reload

Final De Edición

Edit: se Encontró la respuesta

Después de buscar con términos más amplios, a2ensite en lugar de Ubuntu 14.04 Vagrant etc, he encontrado dos años pregunta donde @raina77ow señala que a2ensite sólo quiere que el nombre del sitio, no la ruta completa. El cambio de sudo a2ensite /etc/apache2/sites-available/$CONFFILE a sudo a2ensite $CONFFILE
hace que el script funcione como está previsto. Esto también explica por qué mis intentos anteriores para ejecutar a2ensite desde la línea de comandos no; yo estaba corriendo desde el interior de /var/www/templates/y de paso en la ruta de acceso completa a la .conf archivo.

Ahora, una pregunta de stackoverflow, cómo debo indicar que esta es la solución con la limitada reputación que tengo? Y dar crédito correctamente?

Ver edición anterior para la solución de

Salida de la consola con example.com:

$ ./newvhost
New Server Name with Top Level Domain: example.com
Validating: example.com
New DocumentRoot created: /var/www/example
Copying template structure
Creating: example-com-80.conf
-rw-r--r--  1 root root  811 Feb 17 15:11 example-com-80.conf
Enabling site
ERROR: Site /etc/apache2/sites-available/example-com-80 does not exist!

newvhost guión:

OLDIFS=$IFS
IFS="."
printf "New Server Name with Top Level Domain: "
read NEW_SUBDOMAIN NEW_TLD
IFS=$OLDIFS

NEW_FULL_NAME="$NEW_SUBDOMAIN.$NEW_TLD"

echo "Validating: $NEW_FULL_NAME"

if [[ "$NEW_TLD" != "com" && "$NEW_TLD" != "dev" ]] ; then
  echo -e "\E[31;1mTLD must be com or dev! \033[0m" 
  exit 1
fi


if [ -d "/var/www/$NEW_SUBDOMAIN" ]; then
  echo -e "\E[31;1mRoot directory /var/www/$NEW_SUBDOMAIN already exists!\033[0m"
  exit 1
fi

mkdir /var/www/$NEW_SUBDOMAIN

if [ -d "/var/www/$NEW_SUBDOMAIN" ]; then
    echo "New DocumentRoot created: /var/www/$NEW_SUBDOMAIN"
else  
  echo -e "\E[31;1mUnable to make directory\033[0m"
  exit 1
fi

echo "Copying template structure"

cp /var/www/templates/structure/. /var/www/$NEW_SUBDOMAIN/ -R

sed -i "s/TEMPLATE/$NEW_FULL_NAME/g" /var/www/$NEW_SUBDOMAIN/index.html

CONFFILE="$NEW_SUBDOMAIN-$NEW_TLD-80.conf"

echo "Creating: $CONFFILE"

sudo cp /var/www/templates/vhost_template.conf /etc/apache2/sites-available/$CONFFILE

sudo sed -i "s/FULLNAME/$NEW_FULL_NAME/g" /etc/apache2/sites-available/$CONFFILE
sudo sed -i "s/DOMAINNAME/$NEW_SUBDOMAIN/g" /etc/apache2/sites-available/$CONFFILE

if [ -e "/etc/apache2/sites-available/$CONFFILE" ]; then
  ls -al /etc/apache2/sites-available/ | grep $CONFFILE # DEGBUG Listing to  doubly confirm $CONFFILE exists
  echo "Enabling site"
  sudo a2ensite /etc/apache2/sites-available/$CONFFILE
  sudo apache2ctl graceful
fi

Gracias,

Alguna sugerencia para la mejora de la secuencia de comandos son muy bienvenidos, como siempre que no choquen con los términos de StackOverflow.

Me gustaría tratar de comprobar que el example-com-80.conf archivo en sí no es malo, intente manualmente el análisis desde la línea de comandos $ sudo a2ensite example-com-80.conf
He añadido la salida de la consola desde su sugerencia para el post original. Así, una sym enlace que aparece ahora en /sites-enabled/
había una solución en una vieja pregunta que yo no había encontrado todavía

OriginalEl autor jslanger | 2015-02-17

1 Kommentar

  1. 14

    La respuesta, en resumen, es que a2ensite sólo quiere que el nombre del sitio.conf y no la ruta de acceso completa al archivo.

    Así sudo a2ensite example-com-80.conf

    He encontrado esto en un antes de responder por @raina77ow.

    Yo estaba rascándome la cabeza y comprobar todas las rutas de 10 veces antes de ver tu respuesta – muchas gracias por la respuesta clara
    Supongo que fue que eas. Pero no funciona para mí

    OriginalEl autor jslanger

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...