# zanhu **Repository Path**: programmer_cao/zanhu ## Basic Information - **Project Name**: zanhu - **Description**: 赞乎项目 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-03-23 - **Last Updated**: 2022-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zanhu #### 介绍 赞乎项目 #### 软件架构 软件架构说明 #### 安装教程 1. 最低需要1.5G内存服务器 2. 8.0版本mysql ### 部署 Nginx:高性能代理服务器,接收客户端发送过来的HTTP请求和WebSocket请求,响应静态文件请求,转发动态请求。 WSGI:用在Python Web框架编写的应用程序与Web服务器之间的规范 uWSGI:是一个Web服务器,它实现了WSGI/uwsgi/HTTP等协议,用于接收Nginx转发的动态请求并处理后发送给Python应用程序 uwsgi:是uWSGI服务器的独有协议,是Nginx和uWSGI之间的通信规范 使用Nginx Gunicorn Daphne部署Django Channels应用 1.下载依赖包: yum install python-devel zlib-devel mysql-devel libffi-devel bzip2-devel openssl-devel java gcc wget 2.安装部署需要的服务: yum install -y nginx redis supervisor git 3.设置开机启动: systemctl enable redis nginx supervisord 4.安装python3.7 pip3 5.查看mysql状态,并设置开机启动 systemctl status mysqld 查看mysql状态 systemctl enable mysqld 设置开机启动 su - zanhu 6.下载elasticsearch包,下载2.4.6版本,并启动,链接如下: wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.6/elasticsearch-2.4.6.tar.gz tar -xvf elasticsearch-2.4.6.tar.gz 运行: ./elasticsearch-2.4.6/bin/elasticsearch 检查:curl http://localhost:9200/ 7.把项目上传到服务器,需要用到config deploy manage.py zanhu 在manage.py的同目录下创建logs[mkdir logs] 8.安装教程需要的python包(使用root用户) pip3 install -r requirements.txt 生成数据库迁移文件[python manage.py makemigrations] 迁移数据库[python manage.py migrate] collect静态文件[python manage.py collectstatic] 9.启动gunicorn服务 /usr/local/python3/bin/gunicorn --env DJANGO_SETTINGS_MODULE=config.settings.production -b 127.0.0.1:9000 --chdir /home/zanhu/zanhu config.wsgis 10.启动Daphne服务 /usr/local/python3/bin/daphne -p 8000 config.asgi:application 11.启动elasticsearch[zanhu用户] ./elasticsearch-2.4.6/bin/elasticsearch curl http://127.0.0.1:9200 检查是否启动成功 12.启动celery[zanhu用户] /usr/local/python3/bin/celery --work=/home/zanhu/zanhu -A zanhu.taskapp worker -l info 到此启动了四个进程,elasticsearch,celery,Daphne,gunicorn ### WebSocket与HTTP,Socket的关系 HTTP:HTTP协议是非持久化的,单向的网络协议,在建立连接后只允许浏览器向服务器发出请求后,服务器才能返回相应的数据。 WebSocket:只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送,即即时通讯。 Socket:Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。 WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。 连接过程 —— 握手过程: 1. 浏览器、服务器建立TCP连接,三次握手。这是通信的基础,传输控制层,若失败后续都不执行。 2. TCP连接成功后,浏览器通过HTTP协议向服务器传送WebSocket支持的版本号等信息。(开始前的HTTP握手) 3. 服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据。 4. 当收到了连接成功的消息后,通过TCP通道进行传输通信。 WebSocket与HTTP的关系 相同点 1. 都是一样基于TCP的,都是可靠性传输协议。 2. 都是应用层协议。 不同点 1. WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。HTTP是单向的。 2. WebSocket是需要握手进行建立连接的。 联系 WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。 WebSocket与Socket的关系 区别: Socket是传输控制层协议,WebSocket是应用层协议。 #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)