Ubuntu利用Nginx+uwsgi部署Anaconda Django项目

这是我第一篇博客,作为自己的一个笔记和备忘录,因为我还是处于一定程度上的新手阶段,因此在专业术语上还有一定程度上的不足,我就按照自己的理解写了,欢迎大家批评指正。

先把参考的几篇博客的链接附上:

Django + Uwsgi + Nginx 的生产环境部署-腾讯云开发者社区-腾讯云 (tencent.com)

uwsgi+anaconda+nginx部署django项目(ubuntu下) - 辣眼睛De小新 - 博客园 (cnblogs.com)

django+uwsgi+nginx部署于服务器anaconda虚拟环境_Ericam_的博客-CSDN博客

Ubuntu彻底删除nginx_unbuntu nginx清理_peakchao的博客-CSDN博客

nginx+uWSGI+django 处理请求详解_简述一个前端请求的处理流程,在uwsgi/nginx/django之间的处理流程_robch的博客-CSDN博客

首先感谢以上博主的博客带给我巨大的收获,当然我参考的博客在细节上还有很多,这里列举了对我帮助最大的几篇博客

其次我想说的时,针对于每个人的情况不同,我这篇内容不一定适用于所有人(这也是我吃过的亏,没看仔细一些博主的情况盲目使用他们的方法,导致环境烂透了,又重新卸了安装的)

我是第一次将Django项目部署在真正的云服务器上,因此走了很多弯路,甚至搭烂了几次环境又重新安装的,上面的链接中有完全删除Ubantu的Nginx的方法,试了一下非常有效。我参考了很多博主的内容才将服务器搭好,因为我照着他们的来,会出现我自己特有的问题。所以遇到问题就找一篇内容解决。

首先介绍一下Nginx、WSGI、uwsgi和Django(这里参考的上面的博客)

Nginx:就是一个web服务器应用,可以接收请求进行相关处理等,功能更加强大(比如做负载均衡、能够反向代理)

WSGI(全称Web Server Gateway Interface):这是一个web接口协议(我的理解,就是规定了网络报文与编程语言写的后端项目(这里是Python写的Django项目)之间的“沟通”,相当于规定了一套“翻译”标准),Python专用,同样的协议(出现的时间和适用情况不同)还有CGI、FCGI、uwsgi(这里的是uwsgi协议)等

uwsgi:这里的uwsgi是web服务器(与Nginx类似,功能性能好像没有Nginx强大,单独使用Nginx大概也是可以的),uwsgi实现了WSGI协议、uwsgi协议、http协议(相当于“翻译器”了),负责转发Nginx的动态请求(Nginx反向代理)

Django:web的服务端框架,使用Python编写的,写好的Django项目就可以作为一个web应用程序,Django有内嵌的测试用的服务器runserver,性能什么的又更弱了一点,因此作测试使用。

下面开始部署过程:

首先就是,确保服务器该开放的端口全部都开放,不被防火墙拦截,确保Django 项目完整的写入Ubantu,并且确保使用runserver测试时没问题

安装uwsgi,我用的是命令行安装的,我的Python环境是Aanconda的,命令行如下

conda install -c conda-forge uwsgi 

安装运行后可能会遇到动态库找不到的问题

conda install -c conda-forge libiconv

安装完成后,需要在Django项目下(与manage.py同级目录)添加一个uwsgi.ini配置文件

配置文件内容如下

[uwsgi]
#套接字端口,Nginx反向代理时用,若单独使用时,socket改成http,改一下地址
socket=127.0.0.1:8000
#Django项目路径                            
chdir=/var/www/testd
#使uwsgi找到Django应用程序,如果没有这一行,我的日志会报错(Python应用程序不存在)
module = testd.wsgi:application
processes=1                  
threads=2                                              
master=True              
pidfile=uwsgi.pid
#uwsgi错误日志
daemonize=uwsgi.log
#anaconda下虚拟环境Python解释器的位置               
pythonpath=/root/anaconda3/envs/test

(注:先将socket改成http进行uwsgi连接测试)

使用命令运行uwsgi(一定要在对应的虚拟环境上运行)

uwsgi uwsgi.ini

使用浏览器(或者其他)输入地址端口进行测试,确认无误后将http改成socket

测试uwsgi没有错误正常运行后,开始配置Nginx

在“/etc/nginx/sites-available/”文件夹下新建站点配置文件site.conf(名称自定义),内容结构如下

server {
        #监听端口
        listen 80;
        #服务器ip或域名
        server_name xxx.com
        charset utf-8;
        client_max_body_size 75M;
        location / {
                #代理端口
                uwsgi_pass 127.0.0.1:8000;
                #引入Nginx与uwsgi相关的配置文件
                include /etc/nginx/uwsgi_params;
        }
}

创建软连接,软连接的目的是激活站点

sudo ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site.conf

最后重启Nginx服务

sudo service nginx restart

测试结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值