Docker下python3+django2.1+nginx+uwsgi的部署

3 篇文章 0 订阅
2 篇文章 0 订阅

使用docker配置生产环境可以说是一劳永逸,现在记录下配置django+nginx+uwsgi的具体内容。

注意,如果是在服务器上使用这个docker的话,一定要把django的settings.py中的ALLOWED_HOSTS配置好,否则无法访问。

容器配置

首先需要相应的容器是肯定的了,我已经配置好了相应的容器,环境包括python3.6.5+django2.1.2+nginx+uwsgi。

如果你不想自己再配置,可以使用我的容器。

docker pull menfershare/djangonu

此容器下,使用django新建一个项目(建议在/usr/project目录),如果你使用的是pull的我的镜像,我已经在该目录下有了一个testdjango项目,可以跳过建项目过程。

cd到项目目录,django-admin startproject testdjango

现在,有了一个测试的项目名叫testdjango(当然,后续的具体项目自己部署,和这个过程是一样的。)

检验nginx

如果已经有了容器,现在来检验一下容器的状态

启动容器并把端口映射到主机上:

docker run -it -p 9999:9999 -p 9998:9998 djangonu

修改nginx的默认端口

vim /etc/nginx/sites-enabled/default

将server里的两个端口改成映射的那个端口,我这里设置的就是9999。

现在,启动nginx看看是否有效:

service nginx start

在主机上访问127.0.0.1:9999

出现这个欢迎界面,说明端口和nginx正常工作了。

检查uwsgi

接下来一步是检查uwsgi的工作状态

现在,cd到项目目录。

cd /usr/project/testdjango

uwsgi --http :9998 --chdir /usr/project/testdjango/ --wsgi-file testdjango/wsgi.py --master --processes 4

--http:后面指定端口

--chdir:项目目录

--wsgi-file:相对于项目路径下的同名目录里的wsgi.py文件,注意,这里写相对路径就可以了

--master:允许主进程存在

--processes:进程数

如果提示进程已经占用,使用

lsof -i:9998

查看相关进程占用情况,并使用kill -9 + 进程号(pid)的方式杀掉进程

现在访问127.0.0.1:9998

django的欢迎界面出现了,uwsgi没问题,现在继续配置。

配置django项目

对django项目的配置其实就是说让项目能够在环境下跑起来,当然是借助nginx和uwsgi。这里的配置不关注django的项目配置(数据库app之类的),我们只让他跑起来,至于跑的是什么,就看项目怎么写了。

退出uwsgi我们才能继续编辑,现在,放心的Ctrl+C吧。

现在cd到项目目录(好像一直就在项目目录)

cd /usr/project/testdjango

创建配置文件:testdjango_uwsgi.ini

vim testdjango_uwsgi.ini

输入:

[uwsgi]
# Django-related settings
socket = :9998

# the base directory (project full path)
chdir           = /usr/project/testdjango

# Django s wsgi file
wsgi-file          = mysit.wsgi

# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 4

# ... with appropriate permissions - may be needed
chmod-socket    = 664
# clear environment on exit
vacuum          = true
# pidfile for record run pid
pidfile        =pid.uwsgi
# run process background and save log to daemonize
daemonize    = UWSGI.log

现在使用这个配置文件:

uwsgi --ini testdjango testdjango_uwsgi.ini

现在会自动生成log和pid文件:

然后接着修改nginx的配置文件

vim /etc/nginx/sites-available/default

内容如下:

server {
        listen 9999 default_server;
        listen [::]:9999 default_server;
        server_name www.testdjango.com; #does not matter
        charset UTF-8;
        client_max_body_size 75M;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                #try_files $uri $uri/ =404;
                include uwsgi_params;
                uwsgi_pass 127.0.0.:1:9998;      #port in uwsgi.ini
                uwsgi_read_timeout 5;
        }

        location /static {      #static files
                expires 30d;
                autoindex on;
                add_header Cache_Control private;
                alias /usr/project/testdjango/static/;
        }

        location /media {
                alias /usr/project/testdjango/media/;
        }
}

现在,让我们使用lsof -i:9998查看一下9998端口的情况(也就是uwsgi的运行情况):

可以看到uwsgi在监听了。

现在,让我们打开nginx

service nginx start

哈哈哈哈哈哈,配置结束,大功告成。

之后,我们就可以简单的使用git,或者是目录映射来将自己的项目部署到该docker中。

具体的连接数等配置,就自行选择配置了。

uwsgi和nginx部分参考该博客:

https://www.cnblogs.com/if-then/p/7259865.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值