uWSGI+Nginx+Django的部署模式

这是以本人参与过的一个项目部署为例而作记录,服务器是阿里云上购买的Centos系统,前提是已经安装了python3,和虚拟环境。安装方法可查看本人的上一篇文章。

安装Django

  • 切换路径,cd ~/
  • 创建文件夹,mkdir /home/mysite && mkdir /home/mysite/static
  • 切换虚拟环境,workon py36
  • 在此虚拟环境下安装Django,pip install Django
  • 创建我们的Django项目,依次执行一下命令:
    django-admin.py startproject mysite
    cd mysite
    vim mysite/settings.py
    然后在setting.py文件中找到ALLOWED_HOSTS = [server_ip, hostname],我这里设置ALLOWED_HOSTS = [’*’],意思是允许所有ip访问
  • 运行Django服务,python manage.py runserver 0.0.0.0:8000

到这里Django服务已经确保可以运行了

安装uwsgi

同样是在py36的虚拟环境下

  • 安装uwsgi,pip install uwsgi
  • 创建测试文件:
    vim test.py
    test.py内容大致是:
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # 
  • 跑一下测试,uwsgi --http :8000 --wsgi-file test.py
  • 测试Django+uwsgi,cd ~/mysite 然后uwsgi --http :8000 --module mysite.wsgi

到这里Django+uwsgi就测试通过

安装nginx

  • 安装nginx依赖,yum -y install pcre* && yum -y install openssl*,主要是对ssl对支持
  • 安装nginx,yum install nginx,如果失败,先运行sudo yum install epel-release,参考https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7
  • 启动nginx服务,systemctl start nginx
  • 系统开启nginx对使用,systemctl enable nginx
  • nginx配置,vim /etc/nginx/conf.d/demo_nginx.conf:
# demo_nginx.conf
upstream django {
        server unix://home/mysite/mysite.sock;
}

server {
        listen  8000;
        charset utf-8;
        server_name localhost;
        client_max_body_size 75M;
        location / {
                uwsgi_pass django;
                include /etc/nginx/uwsgi_params;
        }
        location /static {
                alias /home/mysite/static;
        }
}
  • 重启nginx,systemctl restart nginx
  • 测试nginx+uwsgi:
    systemctl start nginx
    uwsgi --socket /home/mystie/mysite.sock --wsgi-file test.py —chmod-socket=666
    然后你就可以输入http://server_ip:8000,server_ip是你服务器对ip,看下测试结果
  • 测试nginx+uwsgi+Django:
    cd ~/mysite
    uwsgi --socket /home/mysite/mysite.sock --module mysite.wsgi --chmod-socket=666

到这基本上uwsgi+nginx+Django就测试完毕。

其他

启动uwsgi是可以通过配置文件对形势去启动对,这样可以灵活的对需求进行必要的配置,也能对性能资源做更好对分配。
创建配置文件vim /root/conf.ini:

# conf.ini file
[uwsgi]
# Django项目所在的绝对路径
chdir                   = /root/mysite
# Django的wsgi文件
module                  = mysite.wsgi
# 虚拟环境的绝对路径
home                    = /root/Envs/py36
# 启动主线程
master                  = True
# 开启对大的进程数
processes               = 2
# 指定项目的socket
socket                  = /home/mysite/mysite.sock
# 指定socket文件的权限
chmod-socket            = 666
# 当服务器退出时自动删除unix socket文件和pid文件
vacuum                  = True
pidfile                 = /tmp/uwsgi_mysite.pid
daemonize               = /var/log/uwsgi/mysite.log

然后直接uwsgi --ini conf.ini就能够运行uwsgi服务了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值