Marionnette/Vagabond :contenu corrompu de l'hôte virtuel Apache
Question
J'utilise un vagrant/puppet pour configurer ma machine de test, je l'utilise pour configurer l'hôte virtuel pour Apache, mais au démarrage d'Apache, j'obtiens une erreur, apparemment à cause d'un espacement ou de caractères étranges :
/apache2 start
* Starting web server apache2
Syntax error on line 4 of /etc/apache2/sites-enabled/my-ssl.localhost.conf:
Invalid command '\xc2\xa0\xc2\xa0ServerName', perhaps misspelled or defined by a module not included in the server configuration
Action 'start' failed.
le fichier manifeste que j'ai écrit pour configurer l'hôte virtuel ressemble à ceci
file {'hostfile4':
path => '/etc/apache2/sites-available/my-ssl.localhost.conf',
ensure => present,
content => "
<VirtualHost *:443>
DocumentRoot '/coding/mysite/htdocs/'
ServerName foa-ssl.localhost
ServerAlias foa-ssl.localhost
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 0
<Directory '/coding/mysite/checkout/htdocs'>
AllowOverride All
Options All -Indexes
Order allow,deny
Allow from all
php_admin_value short_open_tag Off
AddType application/x-httpd-php .css .js
</Directory>
<Directory '/coding/mysite/app_new/htdocs'>
AllowOverride All
Options All -Indexes
Order allow,deny
Allow from all
php_admin_value short_open_tag Off
AddType application/x-httpd-php .css .js
</Directory>
<Directory '/coding/mysite/cgi-bin'>
Options +ExecCGI
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
</VirtualHost>",
}
La solution
c2 a0
(dans le message d'erreur) est le code unicode du caractère spécial "espace insécable", cf. ici.
Il semble qu'Apache n'aime pas ça du tout.Vous devez donc vous débarrasser de ces espaces insécables et utiliser des espaces normaux, même s'ils ont la même apparence dans votre éditeur.
Vous pouvez utiliser NotePad++ et lui demander de convertir vos fichiers de marionnettes en "ANSI", qui est un encodage plus sûr pour les fichiers de configuration.
Vous avez dû nettoyer cela sans le savoir en déplaçant le contenu vers un fichier externe, mais utiliser un fichier externe n'est pas la solution, même si cela a fonctionné.
Autres conseils
résolu en utilisant ceci:
file { "/etc/apache2/sites-available/my-ssl.localhost.conf":
mode => 440,
owner => root,
group => root,
source => "/coding/puppetstuff/my-ssl.localhost.conf"
}
/coding/puppetstuff/foa-ssl.localhost.conf est dans un dossier partagé (chemin est sur l'image)