想要在AutoDL平臺提供的GPU實例上部署一個Django的Apache服務,和之前阿里云的部署還有一些不一樣,踩了一些坑,這里分享一下。
之前阿里云的部署流程可以參考:
這篇文章將在上面兩篇文章的基礎上,大概總結一下AutoDL平臺部署時需要注意的地方。
python路徑問題
如果按照上面文章的方案安裝django和其他依賴,啟動apache之后,會發現錯誤日志里報錯:No module named django
,好像是因為AudoDL的python和pip安裝都是給root用戶的,而apache沒有root用戶的權限。
解決辦法只能使用python的virtual env,參考:https://docs.python.org/3/tutorial/venv.html
我們可以把我們的django項目放在/var/www
目錄下,避免一些不必要的權限問題。然后,在目錄下創建一個virtual environment:python3 -m venv venv1
,這樣就創建了一個名為venv1的虛擬環境,而之后我們安裝各種依賴都需要安裝到這個虛擬環境當中。
首先,輸入source venv1/bin/activate
啟動虛擬環境,之后,在命令行中使用pip3安裝各種依賴,比如:
pip3 install django
依賴都安裝好之后,需要在apache的配置文件中指定虛擬環境的路徑,讓apache的wsgi使用虛擬環境的python解釋器。進入到conf文件(參考上面的文章),在最后指定:
WSGIPythonHome /var/www/venv1
端口配置
AutoDL平臺的實例并沒有開放http默認的80端口,而是要求如果要提供自定義服務的話,需要讓服務去監聽6006端口。因此,我們需要讓apache去監聽6006端口。
首先,修改/etc/apache2/ports.conf
,將其中的端口從80修改為6006
其次,修改我們自己網站的conf文件(參考之前文章),將第一行的VirtualHost的端口從80改為6006:
<VirtualHost *:6006>
之后重啟apache:
sudo service apache2 reload
sudo service apache2 restart
就可以通過AutoDL提供的地址訪問了
依賴安裝
在virtual env中安裝依賴時,因為AutoDL配置的pip源問題,有一些依賴可能下載速度很慢,甚至可能找不到我們需要的版本。
對于下載速度很慢的依賴,我們可以先手動去下載.whl
文件,然后上傳到服務器上,然后在virtual env中,手動運行pip3 install XXX.whl
來安裝。
對于找不到依賴對應版本的情況,建議直接更換一個pip源,可以在安裝依賴時,使用:
pip3 install XXX --extra-index-url=https://pypi.tuna.tsinghua.edu.cn/simple
這樣下載速度就會很快了。
import路徑問題
需要注意當django服務運行時,它的主路徑是manage.py
文件所在的路徑,而我們網站代碼中的所有import,都需要按照這個路徑去import。
所以比如說,我們想要import stable-diffusion-webui中的modules模塊,最好就是將modules文件夾放在manage.py
同一目錄下,避免import問題