2015-02-17 110 views
6

系統:的Ubuntu 14.04 LAMP有關Parallels虛擬機上運行設置了流浪a2ensite「網站:___不存在」的錯誤,甚至.conf文件

我在寫我的第一個不平凡的shell腳本將新的Web項目添加到我的Mac筆記本電腦上的開發虛擬機。

  1. 創建在/ var/WWW默認文件夾結構/
  2. 一個虛擬主機的.conf文件添加到/ etc/apache2的/位,可與新域通過sed的
  3. 替換佔位符啓用新網站並重新啓動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的條款。

+0

我會嘗試檢查'example-com-80.conf'文件本身並不壞,嘗試從命令行'$ sudo a2ensite example-com-80.conf'手動解析它。 – 2015-02-17 23:16:59

+0

@MichaelColeman,我添加了控制檯輸出從您的建議到原始帖子。同樣,sym鏈接現在出現在/ sites-enabled/ – jslanger 2015-02-18 03:28:17

+0

@ raina77ow有一個解決方案[我還沒有找到一箇舊問題](http://stackoverflow.com/questions/13035385/a2ensite-from-script -path) – jslanger 2015-02-18 04:09:31

回答

13

答案,簡而言之,a2ensite只是想要site.conf的名稱而不是文件的整個路徑。

所以sudo a2ensite example-com-80.conf

我通過@ raina77ow發現這個在earlier answer

+0

在我看到你的答案之前,我正在抓我的頭並檢查了所有路徑10次 - 非常感謝你提供了明確的答案 – 2016-12-03 18:03:46

+0

我想這就是eas。但不爲我工作 – 2017-06-19 18:27:24

相關問題