drf-yasg是python环境下的SwaggerAPI包,django-rest-swagger已经废弃。
在开发环境下测试正常,在部署环境下测试出现问题,主要是ip/static/下文件get失败。情况如这个博客所示(我的程序已经调试正常,就不可以重现错误了)。
问题起因在于swagger的网页资源是和python包放置在一起。在服务器上部署时,找到不到静态资源位置的原因。
这里展示一下静态资源的位置 /static(这里用的是python虚拟环境):
备注:这个venv在pycharm中是虚拟环境才会在项目里可见。
将这个static文件夹复制到工程的根目录下,然后推送到远程服务器端,记录服务器下该文件的地址。
这里我使用pycharm默认的Deployment工具,因为static所在的venv被放在排除目录,所以要复制出来。
这样,也同时可以将django项目推送到服务器上。(备注,要会在服务器上开ssh,教程)
然后用uswgi进行代理(你不会说你不会用uwsgi吧?emm,其实我也不会,现学)
其核心是项目用一个uwsgi代理,外界访问uwsgi端口(我用的8087),uwsgi指向django的端口(我用的8088,平时调试就是这个端口),然后8087端口的静态资源指向我们复制过来的资源文件位置。
uwsgi.ini
[uwsgi] # 使用nginx连接时使用 # socket = 127.0.0.1:3031 # 直接使用web服务器时使用 http = :8087 # 项目目录 chdir = /home/kaiyouhu/django/is_django/ # 项目中wsgi.py文件的目录,相对于项目目录 wsgi-file = InfoService/wsgi.py # 项目开启进程数 processes = 1 #项目开启线程数 threads = 1 # 存在一个主进程 master = True # 保存启动主进程pid的文件 pidfile = /home/kaiyouhu/django/is_django/uwsgi/uwsgi.pid # 作为守护进程日志输出 deamonize = /home/kaiyouhu/django/is_django/uwsgi/uwsgi.log # 定义静态文件 static-map=/static=/home/kaiyouhu/django/is_django/static buffer-size = 65535 # django默认端口 stats = :8088端口可以不用加ip地址当前缀,如果都是在一台服务器上
然后
uwsgi --ini uwsgi.ini (uwsgi -d --ini uwsgi.ini 后台运行)
开启uwsgi和django,访问成功