搭建DevStack中遇到的問題及解決辦法
說明
由於是第一次搭建DevStack環境,在安裝過程中遇到了很多問題,這裡儘可能全的把自己當時遇到的問題都記錄下來,給大家提供一個參考。
這裡給出的都是折騰了自己好久的問題,因為每次重新執行./stack.sh
的過程都是漫長的,失敗了就要重來,導致從最開始搭建,到第一次成功,耗費了好幾天時間。
搭建時使用的是:Ubuntu 14.04 + DevStack(Mitaka)+ OpenStack(Mitaka)版本。
為了方便說明,這裡統一將Ubuntu虛擬機器稱為宿主機。
問題
超時
問題1
問題描述:
已經配置了pip的源,將它已經改成國內的地址了,為什麼在安裝過程中,進行到某些步驟,還是因超時失敗,檢視日誌發現,安裝時部分步驟並沒有到我指定的國內映象上去下載包。
解決思路:
首先檢視宿主機的/root/.pip/pip.conf
檔案,其配置是否正確;接下來檢視stack使用者的目錄(通常預設是/opt/stack)下,是否有相應的./pip
目錄和裡面的pip.conf
檔案,如果沒有,請按照/root
目錄下對應的目錄及檔案進行配置。如果有,則請檢視對應目錄和檔案的使用者組和使用者是否是“stack”,如果不是請立即更改。完成以上步驟後,請重啟一下虛擬機器,然後重新執行./stack.sh
命令。
問題2
問題描述:
已經在宿主機上配置好了pip的國內源,在執行./stack.sh
命令時,仍會報超時失敗。
解決思路:
說實話,這個沒有什麼特別好的解決辦法,只取決於你環境的網路條件。
當然,你也可以像我一樣,換一個pip的國內源試試。比如清華大學的映象,就我自己使用情況看,也是不錯的。但你在安裝時到底能使用哪一個,還得參考Python官方所記錄的一些映象地址。因為有時你要用時,這些源就不支援了。
問題3
問題描述:
已經將pip兩處配置,以及Ubuntu自己apt的配置都改過了,也重啟過宿主機,但有些軟體包還是下載超時,比如某些以.whl
結尾的軟體包。
解決思路:
這個問題,在我自己搭建的時候真的遇到過。執行stack命令怎麼都下不下來,手動執行命令下載就可以。
所以,如果你和我一樣的話,建議還是手動下載吧。可以使用Linux自帶的wget
命令。
比如,我曾在安裝時,提示說“PyECLib-1.2.0-cp27-none-linux_x86_64.whl”下載失敗,重複了好幾次,始終無法成功,手動就可以。最後就是手動下載下來,然後將其放到對應目錄下(具體目錄需要你查看回顯資訊或日誌,這個包就提示說在/usr/local/lib/python2.7/dist-packages
./stack.sh
命令就能繼續執行下去。
問題4
問題描述:
自己的配置檔案中,需要從網上下載cirros-0.3.4-x86_64-disk.img
映象,一直下不下來。
解決思路:
可參見問題3解決方法,手動下載。然後放到/home/devstack/files
目錄下。
其它問題
問題1
問題描述:
執行安裝命令時,提示在目錄/usr/local/lib/python2.7/dist-packages/openstack
下,session.py
檔案中,語句“DEFAULT_USER_AGENT = “openstacksdk/%s” % openstack.__version__”這裡獲取不到版本號。
解決思路:
自己嘗試過很多方法,都沒有奏效,後來只好自己看看這塊程式碼,發現它是匯入了openstack,於是想到到這個目錄下的__init__.py
檔案中看看。開啟該檔案,就一行:__version__ = pbr.version.VersionInfo('openstacksdk').version_string()
。
於是手動加了print()
看看這裡能否獲取到。手動執行後是能獲取到的(0.8.1)。
於是手動改了之前session.py
檔案中那個賦值語句,再次執行./stack.sh
就可以正常通過了。
遺留:這個問題究竟是為什麼會出現,如果有知道的朋友,還請能夠在這裡留言,謝謝!
問題2
問題描述:
執行安裝過程,其中提示如下錯誤:
“500 Internal Server Error: The server has either erred or is incapable of performing the requested operation. (HTTP 500)”
產生的階段是在:
“openstack –os-cloud=devstack-admin image create cirros-0.3.4-x86_64-disk -public –container-format=bare –disk-format qcow2”
解決思路:
由於我不是必須要使用swift,因此我先執行./unstack.sh
,然後在local.conf
中,將swift的東西都注掉了,再次重新執行./stack.sh
,能夠正常執行。
遺留:如果要使用swift該如何解決?有思路的朋友還請回復,多謝!