Ubuntu下Django+uwsgi+nginx项目部署

Ubuntu下Django+uwsgi+nginx项目部署

在Ubuntu下,Django项目的部署说简单简单,说难对于新手可能一周都搞不定,经常出现500和502,505错误,我个人也是研究了很久,才把项目部署好。

环境说明

1.ubuntu 环境

  • Ubuntu 16.04.2 LTS

2.python 环境

  • python 2.7 / python 3.6

环境搭建

1.python环境

我的ubuntu自带了两个python环境,分别是2.7和3.5,python2和3的差别我不在这里区分了,直接说python virtualenv的环境搭建了。
什么是virtualenv呢?virtualenv就是python的虚拟环境,我们一台服务器上可能要部署多个python项目,不同项目的python包依赖是不同的,更有甚者有的项目是python2开发的,有的项目是python3开发的,为了 避免python环境混乱,项目难以维护,我个人建议使用virtualenv来进行环境的搭建。

安装方法
$ sudo apt-get update  # 系统更新
$ sudo pip install virtualenv   #安装virtualenv 
$ sudo pip install virtualenvwrapper # 安装virtualenvwrapper,管理虚拟环境
为了使virtualenvwrapper生效,我们需要添加环境变量
sudo vi ~/.bashrc 
然后添加如下代码
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
fi
保存退出,然后使用 source ~/.bashrc 命令使配置文件生效
新建虚拟环境

mkvirtualenv 环境名

比如 mkvirtualenv py_test 这样会创建一个名字为py_test的虚拟环境,此时python的版本是默认系统执行python命令的版本。如果你此时在跟着我的文档做实验,那么你会看到你的命令行之前多了(py_test),这是因为你已经进入到新建的虚拟环境之中,退出使用 deactivate命令,即恢复正常。

mkvirtualenv -p python解释器路径 虚拟环境名

查看python解释器的路径可以使用which命令,which python

mkvirtualenv -p /usr/bin/python3.5 py3  

这样就创建好了一个python3.5版本名为py3的虚拟环境。
virtualenvwrapper
退出虚拟环境使用deactivate命令即可
deactivate

uwsgi 安装

uwsgi安装
在虚拟环境下执行sudo pip install uwsgi安装uwsgi

nginx 安装

安装方法有两种:
第一种apt-get的方式安装
sudo apt-get install nginx
nginx的配置文件在/etc/nginx/目录下
第二种是去官网下载,然后去编译安装,这里不在赘述。

项目的部署

1.项目上穿到服务器的制定文件夹,我这里以我自己的Miaodu项目为例来说明,为了演示方便,我直接上传到了家目录 根文件夹就是~/Miaodu
2.uwsgi配置

在项目目录下新建一个 mysite_uwsgi.ini作为uwsgi的启动参数,内容如下

# mysite_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)项目的根文件夹
chdir           = /home/rzy/Miaodu
# Django's wsgi file#django的wsgi文件 一般都是 项目名.wsgi
module          = Miaodu.wsgi

# process-related settings
# master
master          = true
# maximum number of worker processes最大工作进程数量
processes       = 10
# the socket (use the full path to be safe  启动的端口
socket          =  :8010
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
# 日志输出文件位置
daemonize = /home/rzy/log/httpServer.log
# 下面两个缓冲参数不添加的话经常会出现5XX服务器错误
buffer-size     = 65535   
post-buffering = 65535
# python虚拟环境的目录
virtualenv = /home/rzy/.virtualenvs/test  

nginx配置

在项目目录下新建 miandu_nginx_conf.conf文件,作为nginx的配置文件,内容如下

#miandu_nginx_conf.conf

# the upstream component nginx needs to connect to
upstream MiaoduProject {
    #server unix:///home/rzy/TextOnlinExam/mysite.sock; # for a file socket
    # 这里的端口号要与你的mysite_uwsgi.ini中socket的相同
    server 127.0.0.1:8010; # for a web port socket (we'll use this first)
}

# configuration of the server
server {
    # the port your site will be served on
    listen 80;
    # the domain name it will serve for
    # 这里写配置你的ip地址或者域名
    server_name miaodu.cjluzzl.cn; # substitute your machine's IP address or FQDN
    charset     utf-8;


    # max upload size
    client_max_body_size 75M;   # adjust to taste
    # 项目的media文件夹的绝对路径
    location /media  {
        alias /home/rzy/Miaodu/media;  # your Django project's media files - amend as required
    }
     #  项目static文件夹的绝对路径
    location /static {
        alias /home/rzy/Miaodu/mystatic; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
    # 上面upstream后面写什么这里就写什么,注意多个项目的重名问题,最好不要出现 
        uwsgi_pass  MiaoduProject;
        include     /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
    }
}  

然后创建一个软链接到nginx的sites-enabled目录,直接
sudo ln -s miandu_nginx_conf.conf /etc/nginx/sites-enabled
这样的话就就完成了uwsginginx的配置,然后重启nginx,在启动uwsgi
重启nginx: sudo nginx -s reload
启动uwsgi: uwsgi --ini mysite_uwsgi.ini
如果你ip和域名没问题的话,就可以访问了
建议设置Debug=True,防止系统问题所造成的5XX问题

配置https协议

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值