阿里云centos7--以uwsgi协议+虚拟环境virtualenv内网127.0.0.1测试部署django

背景:

windows10上使用pycharm默认创建的虚拟环境开发,需要使用uWSGI部署到阿里云上

过程:

1-搭建python3.6.7环境

CentOS 7.0下安装Python3.6 - Leo~Chan - 博客园 (cnblogs.com)

Linux 命令详解(三)./configure、make、make install 命令 - Tinywan - 博客园 (cnblogs.com)

1-默认安装方式就像是windows直接装c盘,长期来看有问题,但是这样培养的兴趣收益更大!
2-比较诡异的是我解压的python文件在安装之后都消失了,目前推测是自动删除了安装包之内的
3-python默认进入的centos7自带的python,python3则是我们安装的python,pip和pip3同理!

2-centos7上准备虚拟环境相关并创建一个

下载所需包
pip3 install virtualenv

1:创建一个虚拟环境
virtualenv --python=/usr/local/bin/python3.6 cloud_note
2:需要进入到cloud_note的bin目录下才可以进入虚拟环境
[mysid@izwz92g35x80l3mhe6u3r4z bin]$ source activate
3:虚拟环境安装uwsgi
(cloud_note) [mysid@izwz92g35x80l3mhe6u3r4z bin]$ pip install uwsgi
4:退出虚拟环境[这个只要进入了虚拟环境,任意都可以执行]
deactivate
5:删除虚拟环境[删除文件夹即可]
rm -rf cloud_note/

3-windows10上的项目预备转移和uWSGI理解

Django+Redis全套视频教程(含项目实战)_达内Python进阶_哔哩哔哩_bilibili

Django项目在linux系统中虚拟环境部署 - 雪夜连城 - 博客园 (cnblogs.com)

WSGI,uWSGI和uwsgi区别详解_钟灵毓秀M的博客-CSDN博客_uwsgi wsgi

1-什么是WSGI?
WSGI[web服务器网关接口],即框架和web服务器之间的一种接口--通信协议

描述的是Web服务器如何与Web应用间进行通信
描述web服务器(如nginx,uWSGI等服务器)如何与web应用程序(如用Django、Flask框架写的程序)通信的规范

2-白话理解图的流程
django本身不认识http协议,
能够看起来认识是因为runserver,
runserver将http请求封装成了WSGI的规范要求,
结果:django认识WSGI=django认识了http

3-uWSGI和WSGI的联系,和uwsgi关系是什么?uwsgi[协议]和uWSGI[服务器]是不同的!!!!
uWSGI是WSGI的一种,是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议
实现了http,WSGI以及uwsgi协议[堪称全才,很多协议都认识]

uwsgi协议是一个uWSGI服务器自有的协议,
结果:一个是协议,一个是服务器,这样区分
1-win下生成包
pip freeze > requirements.txt
2-uwsgi配置项processes,我的centos是单CPU单核心,进程只能写1,你写4,5,6最终还是一个进程
其次开多少线程是需要实际来感受的
3-uwsgi.ini文件,放在/mysid/python_project/django_test/cloud_note_venu/cloud_note/cloud_note下面
[uwsgi]

# 指定服务器部署IP地址和端口
# http通信方式的IP地址:端口号
http=127.0.0.1:8000
# 套接字方式的IP地址:端口号[需要有nginx]
;socket=127.0.0.1

# 项目工作目录-配置项目在当前服务器中的绝对路径
chdir=/mysid/python_project/django_test/cloud_note_venu/cloud_note

# 相对路径指定当前项目中wsgi.py-这个django自己帮我们写了[注意是相对路径]
wsgi-file=cloud_note/wsgi.py

# 设置启动的进程数量--我是单CPU单核心,只能设置为1
processes=1
# 设置每个进程启动的线程数量[线程数量多少合适,需要实际一个个测试]
threads=2


# 服务的pid记录文件
pidfile=uwsgi.pid
# 指定守护进程的日志存储[这相当于默认后台启动]
daemonize=uwsgi.log
# 设置主进程管理模式--master这个进程看着子进程
master=True

4-centos7-mysqlclient安装不了的坑

centos 安装mysqlclient 失败 报错_猿派的博客-CSDN博客_centos安装mysqlclient报错

centos yum安装mysql出现Public key for mysql-community-server-5.7.37-1.el7.x86_64.rpm is not installed_searlas的博客-CSDN博客

我们启动虚拟环境后执行pip3 install -r requirements.txt时,
mysqlclient这个包安装不了,下载依赖也提示GPK问题,
先解决GPK-再装依赖-再装mysqlclient

1-更新一下GPK
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
2-在安装一下依赖
yum install mysql-devel gcc gcc-devel python-devel
3-再安装requirements.txt

5-runserver方式本地启动和验证[保证上传项目自身无问题]

 6-uwsgi方式启动

1-启动
uwsgi --ini /mysid/python_project/django_test/cloud_note_venu/cloud_note/cloud_note/uwsgi.ini
2-停止命令
uwsgi --stop uwsgi.pid

1-查看uwsgi相关进程
ps aux|grep uwsgi
2-发送请求测试
curl http://127.0.0.1:8000/user/login

 理解:

Django+uWSGI+nginx部署原理及工作流程-Django社区,Django中文网,django教程,Django!

1-uwsgi,uWSGI,WSGI的区别和联系
uwsgi,WSGI是一种协议,uWSGI是一个服务器
正常来说runserver接收浏览器的请求按照WSGI的要求封装之后,
再给django[django的request请求]

uWSGI相当于替代了runserver

2-公网ip等加入nginx之后再测试

猜你喜欢

转载自blog.csdn.net/Elephantpretty/article/details/124502535