系統:的Ubuntu 14.04 LAMP有關Parallels虛擬機上運行設置了流浪a2ensite「網站:___不存在」的錯誤,甚至.conf文件
我在寫我的第一個不平凡的shell腳本將新的Web項目添加到我的Mac筆記本電腦上的開發虛擬機。
- 創建在/ var/WWW默認文件夾結構/
- 一個虛擬主機的.conf文件添加到/ etc/apache2的/位,可與新域通過sed的
- 替換佔位符啓用新網站並重新啓動apache
我已經得到的文件夾和文件複製和sed似乎很高興自定義我的index.html和.conf vhost文件,但a2ensite似乎沒有看到/ etc/apache2/sites-available/
我測試它的存在,甚至在嘗試啓用該站點之前打印一個調試列表:ls -al /etc/apache2/sites-available/ | grep $CONFFILE
。
我已經在這裏和其他地方閱讀了Ubuntu 13(或14)這個看起來非常普遍的問題以後擴展.conf的重要性。我的虛擬主機文件具有.conf擴展名,所以這看起來像是一個不同的問題。
任何人都可以指向正確的方向嗎?我一直無法找到具體問題的其他帖子。
我的感覺是,我已經在a2ensite
命令我$CONFFILE
變量擴展了一個錯誤,因爲錯誤不顯示,即使目錄列表做了.conf爲擴展名:
ERROR: Site /etc/apache2/sites-available/example-com-80 does not exist!
編輯:
從每個Micheal的建議下面的命令行運行a2ensite後,它似乎解析正常,但仍不顯示擴展名:
$ sudo a2ensite example-com-80.conf
Enabling site example-com-80.
To activate the new configuration, you need to run:
service apache2 reload
末編輯
編輯:找到答案
與更廣泛的字詞進行搜索後,a2ensite
而不是Ubuntu的14.04放浪等,我發現a two year old question,其中@ raina77ow指出a2ensite
只想網站名稱,而不是整個路徑。將sudo a2ensite /etc/apache2/sites-available/$CONFFILE
更改爲sudo a2ensite $CONFFILE
使腳本按預期工作。這也解釋了爲什麼我以前嘗試從命令行運行a2ensite
失敗;我從/ var/www/templates /中運行它,並將整個路徑傳遞給.conf文件。
現在,一個stackoverflow的問題,我應該如何最好地指出這是我有有限的聲譽的解決方案?並正確地給予信用?
見上文編輯爲解決
與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腳本:
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
感謝,
用於改善任何其他建議劇本非常歡迎只要不違反StackOverflow的條款。
我會嘗試檢查'example-com-80.conf'文件本身並不壞,嘗試從命令行'$ sudo a2ensite example-com-80.conf'手動解析它。 – 2015-02-17 23:16:59
@MichaelColeman,我添加了控制檯輸出從您的建議到原始帖子。同樣,sym鏈接現在出現在/ sites-enabled/ – jslanger 2015-02-18 03:28:17
@ raina77ow有一個解決方案[我還沒有找到一箇舊問題](http://stackoverflow.com/questions/13035385/a2ensite-from-script -path) – jslanger 2015-02-18 04:09:31