" name="sm-site-verification"/>
侧边栏壁纸
博主头像
PySuper博主等级

千里之行,始于足下

  • 累计撰写 203 篇文章
  • 累计创建 14 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Python 应用部署

PySuper
2021-02-18 / 0 评论 / 0 点赞 / 9 阅读 / 4470 字
温馨提示:
所有牛逼的人都有一段苦逼的岁月。 但是你只要像SB一样去坚持,终将牛逼!!! ✊✊✊

Web 原理

docker

服务和协议

docker
  • Nginx
    • 高性能的代理服务
    • 接收到客户端发送过来的HTTP请求和WebSocket请求
    • 响应静态文件请求和转发动态请求
  • WSGI:用在Python Web框架编写的应用程序和web服务器之间的规范(Django和uWSGI之间)
  • uWSGI
    • 是一个web服务器
    • 实现了WSGI/uwsgi/HTTP等协议
    • 用于接受Nginx转发的动态请求,并处理后发送给Python应用程序
  • uwsgi
    • 是uWSGI服务器实现的独有的协议
    • 用于Nginx服务与uWSGI服务的通信规范

Nginx + Tornado 部署 Django 应用

  • Django自带的uWSGI服务对静态文件的处理能力不太好 ==> Nginx
  • Tornado:实现了WSGI接口规范的uWSGI服务器,而且是一个支持高并发的异步框架
  • 把Django框架实现的uWSGI服务,放到Tornado应用中,然后再不同端口上,启动多个Tornado进程
  • 让Nginx把客户端放过来的请求,转发到不同的Tornado进程上
# 安装Nginx
yum install -y nginx

# 在虚拟环境中安装Tornado
pip install tornado==6.0.2

# 修改Nginx的配置文件
vim /etc/nginx/nginx.conf

Apache mod_wsgi部署Django应用

yum install httpd httpd-devel
systemctl restart httpd    # Apache:默认使用的也是80端口,要先关闭Ningx
systemctl stop nginx
pkill python     # 关闭所有Python进程
systemctl stop redis

Apache会默认使用Python2.7,这里需要重新编译Python的虚拟环境:

./configure --prefix=/root/.local/share/virtualenvs/zanhu-qCBWC6o/ --enable-shared
make && make install
find / -name libpython3.7m.so.1.0 # 找到虚拟环境中的这个文件,复制到 /usr/lib64
cp /root/.local/share/virtualenvs/zanhu-qCBWC6o/lib/libpython3.7m.so.1.0 /usr/lib64
pip install mod_wsgi # 最后在安装mod_wsgi

mod_wsgi-express install-module    # 导出要安装的模块
- 复制到226
- 修改95行

touch /etc/httpd/conf.d/django.conf
# 要添加cache文件夹的访问权限
cd /var/log/httpd    # 这里又Apache的各类日志文件

Nginx Gunicorn Daphne部署Django Channels应用

  • 使用Gunicorn 服务处理HTTP请求
  • 使用Daphne 处理WebSocket请求
  • 通过配置Nginx反向代理
    • 将HTTP协议的动态请求,转发给符合WSGI接口规范的Gunicorn服务器
    • 将WebSOcket的请求,转发给符合ASGI接口规范的Daphne 服务器
  • 使用supervisor管理Gunicorn、Daphne、Celery、Elasticsearch
groupadd zanhu    # 创建zanhu用户组
useradd zanhu    # 创建zanhu用户
useradd -m zanhu -g zanhu    # 将zanhu用户添加到zanhu用户组
passwd zanhu    # 设置zanhu用户的密码
chmod +x /home/zanhu    # 给zanhu用户添加家目录的读取权限

yum install update
yum install python-devel zlib-devel mysql-devel libffi-devel bzip2-devel openssl-devel java gcc wget
yum install -y nginx redis supervisor git

# 设置服务开机自启
systemctl enable redis nginx mysqld supervisord

# 编译Python环境的时候
# 在后面添加 enalbe-optimizations :编译优化(Python运行会比较快,但是make&&make install 会比较慢)
# 校验环境
python -V
pip3 -V

# 收集覆盖静态文件
python3 manage.py collecstatic

# 启动gunicorn
/usr/local/python3/bin/gunicorn --env DJANGO_SETTINGS_MODULE=config.settings.production -b 127.0.0.0:9001 --chdir /home/zanhu/zanhu config.wsgi
# 启动daphne
/usr/local/python3/bin/daphne -p 8000 config.asgi:application
# 启动elasticsearch
./elasticsearch/bin/elasticsearch
# 启动celery
/usr/local/python3/bin/celery --work=/home/zanhu/zanhu -A zanhu.taskapp worker -l info
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区