Я написал сценарий установки для чего-то, и теперь мне нужно создать виртуальный хост с ним. Для этого я использовал этот код:
echo -e \
"WSGISocketPrefix $DIRECTORY/socks/\n"\
"WSGIPythonHome $DIRECTORY/env/local\n"\
"WSGIRestrictStdout On\n"\
"WSGIRestrictSignal Off\n"\
"WSGIPythonOptimize 1\n"\
"<VirtualHost *:80>\n"\
" ServerAdmin [email protected]\n"\
" ServerName app.localhost\n"\
" DocumentRoot \"$DIRECTORY\"\n"\
" Alias /m/ $DIRECTORY/static/\n"\
" Alias /upfiles/ $DIRECTORY/askbot/upfiles/\n"\
" <DirectoryMatch \"$DIRECTORY/askbot/skins/([^/]+)/media\">\n"\
" Order deny,allow\n"\
" Allow from all\n"\
" </DirectoryMatch>\n"\
" <Directory \"$DIRECTORY/askbot/upfiles\">\n"\
" Order deny,allow\n"\
" Allow from all\n"\
" </Directory>\n"\
"\n"\
" WSGIDaemonProcess askbot_"$NUMBER"_\n"\
" WSGIProcessGroup askbot_"$NUMBER"_\n"\
" WSGIScriptAlias/$DIRECTORY/django.wsgi\n"\
"\n"\
' ErrorLog ${APACHE_LOG_DIR}/askbot_error.log'"\n"\
' CustomLog ${APACHE_LOG_DIR}/askbot_access.log combined'"\n"\
"</VirtualHost>\n" > /etc/apache2/sites-available/app.conf
$DIRECTORY
является переменным, содержащим путем и, следовательно, его содержание должно быть напечатано. ${APACHE_LOG_DIR}
, однако, здесь нет переменной, и она должна быть напечатана как есть. К сожалению, вместо того, чтобы записывать содержимое в файл, он будет отсылать его на терминал с некоторыми ошибками (файл не найден и т. Д.). Когда я удаляю последние две строки, это работает, но, конечно, это не решение, но я не могу заставить его работать.
Любые идеи?
Взгляните: [здесь документ] (https://en.wikipedia.org/wiki/Here_document) – Cyrus