Django+nginx+gunicorn+fabric部署学习

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

最近在学习一个 Django博客教程,边学边练习。在Vultr上部署花了好长时间。写点心得总结一下部署方法。另外,Vultr的注册链接

安装软件

yangxg@localhost:~$ sudo apt-get install nginx
yangxg@localhost:~$ sudo apt-get install git python3 python3-pip
yangxg@localhost:~$ sudo pip3 install virtualenv

nginx 配置

先在服务器的 /etc/nginx/sites-available/ 目录下新建一个配置文件,文件名我一般就设置为域名。写上下面的配置内容:

server {
    charset utf-8;
    listen 80;
    server_name www.rubic.win;

    location /static {
        alias /home/gaoyan/sites/blogprojecttwo/static;
    }

    location / {
        proxy_set_header Host $host;
        proxy_pass http://unix:/tmp/www.rubic.win.socket;
    }
}

创建一个符号链接,把这个配置文件加入到启用的网站列表中去,被启用网站的目录在 /etc/nginx/sites-enabled/,你可以理解为从 sites-available/ 目录下发送了一个配置文件的快捷方式到 sites-enabled/ 目录。具体命令如下:

sudo ln -s /etc/nginx/sites-available/www.rubic.win /etc/nginx/sites-enabled/www.rubic.win

nginx 启动、重启、关闭:

sudo service nginx start
sudo service nginx stop
sudo service nginx reload

Django 配置

配置虚拟环境:

gaoyan@vultr:~/sites$ virtualenv venv
gaoyan@vultr:~/sites$ source venv/bin/activate
(venv) gaoyan@vultr:~/sites$ 

Django

第一步:安装项目依赖的库。
第二步:手机静态文件到项目根目录下的 static 文件夹下。settings.py 要添加STATIC_ROOT = os.path.join(BASE_DIR, 'static')
第三步:创建数据库文件
第四步:创建超集用户

(venv) gaoyan@vultr:~/sites/blogprojecttwo$ pip install -r requirements.txt
(venv) gaoyan@vultr:~/sites/blogprojecttwo$ python manage.py collectstatic
(venv) gaoyan@vultr:~/sites/blogprojecttwo$ python manage.py migrate
(venv) gaoyan@vultr:~/sites/blogprojecttwo$ python manage.py createsuperuse

Gunicorn + Fabric 部署

这种方法应该是所有系统通用的方法,是我试过后两种方法在Ubuntu16.04 失败后找到的方法。
首先,在项目根目录先新建一个 shell 文件,文件里内容如下:

#!/usr/bin/env bash
nohup gunicorn --bind unix:/tmp/www.rubic.win.socket blogprojecttwo.wsgi:application&

然后,新建 fabfile.py ,内容如下:

from fabric.api import env, run
from fabric.operations import sudo

import win_unicode_console
win_unicode_console.enable()


GIT_REPO = 'git仓库'

env.user = '用户名'
env.password = '密码'

env.hosts = ['主机名']

env.port = '22'

def deploy():
    source_folder = '/home/gaoyan/sites/blogprojecttwo'

    run('cd {} && git pull'.format(source_folder))
    run("""
            cd {} && 
            source ../venv/bin/activate 
            pip install -r requirements.txt &&
            python manage.py collectstatic --noinput &&
            python manage.py migrate &&
            sh -x start-gunicorn.sh &&
            sleep 1
        """.format(source_folder))
    sudo('service nginx reload')

在本地根目录下命令行输入 fab deploy即可自动部署。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值