写在部署之前:
大概看了一下部署的步骤。就是说工程已经写好了,现在只是把相关的环境装好,然后在配置中更新相关的路径等。目的就是为了让Apache/Nginx等找到我们的工程。
实际上来看,两种部署方式没有什么本质上的区别,不过最终来看用 Nginx 的人好像多一点(亮涛说的)。
1. Apache 部署
整个部署过程走了很多弯路。首先是在实验室租的阿里云服务器上面来做的,但是由于实验室所有的项目都是在这个服务器上面,所以自己不敢瞎搞。于是在实验室的服务器上来做,结果由于网络代理设置的问题,连 Apache 也没有安装成功。最后,在自己PC上面安装了Ubuntu 虚拟机来做,也没有成功,最终Apache 还是找不到工程路径,可能还是由于配置中路径设置的问题,并且,权限设置的也有问题,导致从别的地方访问不到 APache 的服务器,报错 403。
最后看到了在 Windows 下的部署教程,想着不同的操作系统下,整体的流程是差不多的,这个部署过程也是来学习整个流程的,于是在Win下进行了部署。具体教程以及其中遇到的问题参见 https://blog.csdn.net/Mr_blueD/article/details/79759483 & https://blog.csdn.net/nice_xp/article/details/70338683。
其中遇到了 cannot load mod_wsgi.cp36.pyd into server 问题,看了一下上面链接中的问题总结,是wsgi和apache2版本对应的问题,重新安装了 Apache,最终就起来了。还有静态页面格式的问题,也参见上面第二个链接。
2. Nginx 部署
整个部署的链路是 Nginx -> uWSGI -> Python Web程序,通常还会提到supervisord工具。其中 supervisord 是进程守护工具,类似于你之前用过的 pm2。
WSGI(Web Server Gateway Interface) 规范,规定了 python web应用和 python web 服务器之间的通讯方式。
uwsgi协议是 uWSGI工具特有的协议。
uWSGI 是实现了 uwsgi协议/WSGI规范和HTTP协议的一个 C 语言实现的 软件。
总结,uWGSI 用C语言实现了三种协议,是一个软件!单单用这一个软件也是可以是实现服务器部署功能的。在下面的教程中也是可以看到这个现象的。
看了自强学堂的教程,感觉可能这个教程是写给一些有基础的人看的,或者说这个教程写的很乱,没有条理和章法,跟着做的时候总是云里雾里的。去年这个时候看他的教程也是这种感觉。
参考这个老哥https://www.cnblogs.com/xuepangzi/p/9219207.html的教程,写的很有条理,在跟着做的时候知道每一步在干什么,而不是他妈的自强学堂辣鸡教程。
另外这个老哥的教程中,还涉及了数据库同步的操作,值得学习,还有 requirements.txt 操作,也是值得学习。
3. 总结一下:
-
首先,要保证项目在服务器上可以跑起来。即 manage.py runserver 可以成功运行。
-
下载 uWSGI,并且用这个可以跑起来应用。
-
安装和配置 Nginx,完成 uwsgi 和 Nginx 的连接。
-
整个项目跑起来。
网友评论