django+nginx+uwsgi+service部署web应用

来源:互联网 发布:网络用语我爱萝卜 编辑:程序博客网 时间:2024/05/23 21:44

当我们写完了一个web应用就需要把他部署到服务器上。虽然django自带一个web服务器,但是功能比较简单,不适合在实际的生产环境中进行部署。django比较常用的部署方案是nginx+uwsgi。
本文主要介绍一下如何通过nginx+uwsgi部署web应用,以及通过service保证服务器重启后,web服务能重新启动。

下载nginx就不在赘述,网上的资源比较多。
主要讲一下nginx配置

server {    listen       8001;    # 修改端口号    server_name  x.x.x.x;    charset utf-8;    access_log      /var/log/nginx/mysite_access.log;    error_log       /var/log/nginx/mysite_error.log;    #access_log  logs/host.access.log  main;    client_max_body_size 75M;    location / {        include uwsgi_params;        uwsgi_pass 127.0.0.1:8082;        uwsgi_read_timeout 2;    }    location /static {        expires 30d;        autoindex on;        add_header Cache-Control private;        alias /home/yerx/djcode/mysite/static/;     }}

server_name表示web服务器的IP或者域名。
listen表示nginx监听的端口号。
通过uwsgi_pass制定wsgi的IP和端口
static指明静态文件所在的位置

再看一下uwsgi.ini的配置

# myweb_uwsgi.ini file[uwsgi]# Django-related settingssocket = /tmp2/mysite.socksocket = :8082# the base directory (full path)chdir           = /home/yerx/djcode/mysite# Django s wsgi filemodule          = mysite.wsgi# process-related settings# mastermaster          = true# maximum number of worker processesprocesses       = 4# ... with appropriate permissions - may be needed# chmod-socket    = 664# clear environment on exitvacuum          = true

为了让web程序能够开机启动,我们需要添加一个服务器程序就是xxx.service这样的文件。
看一下mysite.service的内容

[Unit]Description=mysite server daemonAfter=network.target[Service]WorkingDirectory=/home/xxx/djcode/mysite/ExecStart=/usr/local/bin/uwsgi  --socket mysite.sock --ini mysite_uwsgi.ini --chmod-socket=666ExecReload=/bin/kill -HUP $MAINPIDExecStop=/bin/kill -s TERM $MAINPID[Install]WantedBy=multi-user.target
原创粉丝点击