我爱编程程序员

django+nginx+uwsgi进行服务器部署

2018-06-08  本文已影响80人  凝墨洒泪
  • django的服务器配置可以说是十分繁琐的部分
  • 哪怕严格按照步骤也会有不明错误
  • 再此详细记录操作步骤
  • 版本Ubuntu 16.04 LTS 64位
  • 服务器:腾讯云学生机
  • 由于配置繁琐,所以操作步骤于全新系统进行配置

准备django文件

ubuntu@VM-246-186-ubuntu:~/site$ tree Blog
Blog
├── Blog
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   ├── settings.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── wsgi.cpython-36.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── db.sqlite3
├── manage.py
├── myblog
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       ├── 0001_initial.cpython-36.pyc
│   │       └── __init__.cpython-36.pyc
│   ├── models.py
│   ├── __pycache__
│   │   ├── admin.cpython-36.pyc
│   │   ├── __init__.cpython-36.pyc
│   │   ├── models.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── views.cpython-36.pyc
│   ├── static
│   │   └── myblog
│   │       ├── css
│   │       │   ├── semantic.css
│   │       │   └── themes
│   │       │       └── default
│   │       │           └── assets
│   │       │               ├── fonts
│   │       │               │   ├── brand-icons.eot
│   │       │               │   ├── brand-icons.svg
│   │       │               │   ├── brand-icons.ttf
│   │       │               │   ├── brand-icons.woff
│   │       │               │   ├── brand-icons.woff2
│   │       │               │   ├── icons.eot
│   │       │               │   ├── icons.otf
│   │       │               │   ├── icons.svg
│   │       │               │   ├── icons.ttf
│   │       │               │   ├── icons.woff
│   │       │               │   ├── icons.woff2
│   │       │               │   ├── outline-icons.eot
│   │       │               │   ├── outline-icons.svg
│   │       │               │   ├── outline-icons.ttf
│   │       │               │   ├── outline-icons.woff
│   │       │               │   └── outline-icons.woff2
│   │       │               └── images
│   │       │                   └── flags.png
│   │       └── js
│   │           ├── jquery-3.3.1.js
│   │           ├── jquery-3.3.1.min.js
│   │           ├── semantic.js
│   │           └── vue.js
│   ├── tests.py
│   ├── urls.py
│   └── views.py
└── templates
    └── myblog
        ├── detail.html
        └── index.html

配置环境

安装依赖

sudo apt-get install python3-pip
sudo pip install virtualenv
virtualenv env27 --python=python3.5
#其中env27为环境名称,自己替换
source test/bin/activate
(test) ubuntu@VM-246-186-ubuntu:~/site$ pip install django django-suit markdown

进行django测试

配置setting文件

#找到ALLOWED_HOSTS = []
#将其配置为
ALLOWED_HOSTS = ['*']
#配置静态文件目录,在文件尾部直接添加
STATIC_ROOT = os.path.join(BASE_DIR , "static/")
#找到DEBUG = True,改为False,亦可最后再来改动方便定位错误
DEBUG = False
python manage.py collectstatic

登录网站测试

python manage.py runserver 0.0.0.0 8001

安装uwsgi

pip install uwsgi
uwsgi --http :8001 --plugin python --module Blog.wsgi
# 其中Blog.wsgi需要自行替换成自己的网站名字,比如自己的网站APP为Test,则修改为Test.wsgi

配置uwsgi文件

[uwsgi]
#chidr用于指定自己的网站根目录(自行更改)
chdir =  /home/ubuntu/Blog
#module指定网站中APP的文件(自行更改)
module = Blog.wsgi
#home用于指定python的虚拟环境,即我们最初创建的虚拟环境位置(自行更改)
home = /home/ubuntu/env27
#master不用更改
master = true
#socket用于指定端口号,可以不更改
socket = :8001
#以下两个可以不用更改
chmod-socket = 666
vacuum = true
sudo uwsgi --ini uwsgi.ini

配置nginx

sudo apt-get install nginx
  • 这里我原先使用的Chrome浏览器,不知为何会强制重定向到https,导致网站无法访问
  • 更换浏览器以后访问便正常了
  • 推荐使用edge或者自带的ie进行简单的测试
upstream django {
        server 127.0.0.1:8001; #此处端口可以替换,需与uwsgi.ini之中的端口一致
}
server {
        listen 80;
        server_name 118.25.3.239; #此处需要自行替换成自己的IP地址
        charset utf-8;
        client_max_body_size 75M;
        #django配置文件
        location /static {
                alias /home/ubuntu/Blog/static; #此处需要自行替换为网站根目录下的静态文件夹
        }
        #以下不必改动
        location / {
                uwsgi_pass django;
                include /etc/nginx/uwsgi_params;
        }
}

重启服务器

sudo /etc/init.d/nginx restart

参考文章及视频

文章

视频

上一篇 下一篇

猜你喜欢

热点阅读