ubuntu+nginx+uwsgi部署django web项目

前言

将本地开发的django项目部署至linux上的uwsgi服务器,并配置nginx,完成基于ubuntu+nginx+uwsgi的上线运行。下面整理相关步骤。python

服务器配置virtualenv

若是不想直接用python环境运行,则须要在服务器上安装并配置virtual env。若是直接用python环境,则可跳过这一步。linux

pip install virtualenv
pip install virtualenvwrapper

须要配置环境变量,以能使用相关命令:nginx

在 ~下建立.bash_profile,添加以下内容:web

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh

而后运行命令:django

source ~/.bash_profile

配置完成。使用以下命令:ubuntu

mkvirtualenv its_name # 建立virtual env
workon its_name # 切换到某个env下(若是不指定its_name)则是列出全部已有env
deactive # 退出当前env
rmvirtualenv its_name # 删除某个virtual env

安装依赖包

首先在开发本地,须要导出pip依赖包列表。bash

pip freeze > plist.txt

将此文件放至服务器环境,并批量安装依赖。服务器

workon [虚拟环境名称]
pip install -r plist.txt -i https://pypi.douban.com/simple
# 注,这里使用豆瓣源安装,在国内下载速度比pip官方源快不少

django项目的修改

须要修改settings.py文件,关闭debug模式。app

DEBUG = False
ALLOW_HOSTS=['*',] #表示能够访问服务器的ip

配置uwsgi

安装:socket

pip install uwsgi

须要在django项目根目录(与manage.py同级目录)下,新建一个uwsgi.ini文件,写入相关配置:

[uwsgi]
socket=外网ip:端口(使用nginx链接时,使用socket)
http=外网ip:端口(直接作web服务器,使用http)
chdir=项目根目录
wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log

能够启动uwsgi啦:

启动:uwsgi --ini uwsgi.ini
中止:uwsgi --stop uwsgi.pid
重启:uwsgi --reload uwsgi.pid

配置nginx

须要预先安装nginx:

apt install nginx

对nginx进行配置:

cd /etc/nginx/sites-available
cp default default.bak
vi default

可进行以下配置:

server{
        # 根据自身须要使用80或443
    listen 443;
    server_name search.codingcat.cn;
    
        # 能够配置域名ssl证书
    ssl on;
    ssl_certificate /etc/nginx/ssl/search.codingcat.cn.crt;
    ssl_certificate_key /etc/nginx/ssl/search.codingcat.cn.key;

    location / {
        uwsgi_pass 127.0.0.1:8888;
        include uwsgi_params;
    }
    
    # 由于uwsgi下,静态目录没法访问,因此使用nginx来处理静态请求
    # 这里是直接将static路径请求赚到了项目的static下
    location /static {
        root /home/ubuntu/pythonweb/wesearch/;
    }
}

备注:若是使用了django自带admin后台,admin的静态目录也没法访问,可依此方法配置/ static/admin 到django源码中的admin静态目录下,或者将admin目录拷贝到本身项目的static目录下。

启动nginx:

service nginx start
service nginx stop
service nginx restart
相关文章
相关标签/搜索