想要在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问题