Django项目部署

文章来源:https://juejin.im/entry/5afbec925188254267263d6e

1.djnago2 Gunicorn nginx 在ubuntu环境下部署 python3

准备 一个可以执行的django项目

一个可以访问的公网IP (可以有域名,但是国内的需要注册 或者绕开80端口用443端口 这个还没有试过) xshell软件 连接自己的服务器主机 比那个网页的舒服多了

进入服务器

创建用户

在 root 用户下运行这条命令创建一个新用户,hzj 是用户名 因为我叫hzj,所以我取的用户名是 hzj

选择一个你喜欢的用户名,不一定非得和我的相同

root@localhost:~# useradd -m -s /bin/bash hzj

把新创建的用户加入超级权限组

root@localhost:~# usermod -a -G sudo hzj

为新用户设置密码 注意在输密码的时候不会有字符显示,不要以为键盘坏了,正常输入即可

root@localhost:~# passwd hzj

切换到创建的新用户

root@localhost:~# su - hzj

切换成功,@符号前面已经是新用户名而不是 root 了

hzj@localhost:~$

如果有些命令无法实现,可能是权限不足 可以加一个sudo

2.安装python3和pip3 因为ubuntu默认python2 我们所使用的环境是python3

sudo apt-get install git python3 python3-pip

安装 虚拟环境 virtualenv

sudo pip3 install virtualenv

3.项目配置 这里的文件夹目录 我尽量和django2.0官方文档的文件夹目录一致

mysite/settings.py

STATIC_URL = '/static/' 加入下面的配置 STATIC_ROOT = os.path.join(BASE_DIR, 'static') #指明了静态文件的收集目录,即项目根目录(BASE_DIR)下的 static 文件夹。

mysite/settings.py

DEBUG = False#建议一开始还是默认为True 等你部署成功后,再去把他改成True 如果你的程序出错,访问的时候会出现500内部服务器的问题,而在debug下你可以清除的看到这些问题的原因,

ALLOWED_HOSTS = ['*'] #允许访问的域名列表 *表示所有都可访问

mysite>pip freeze > plist.txt #这里我们将该项目的环境全部列在plist.txt文件下方便我们之后搭建环境 注意我的django2.0使用pip安装的,如果你使用的像Anconda之类的第三方软件,那么无法在Ubuntu下自动安装

$ vim settings.py ALLOWED_HOSTS = [''] # 可以配置为你的域名或者公网IP,写是匹配全部都可以 

··· THEME = 'themes/default' STATIC_URL = '/static/' STATIC_ROOT = '../static_files/' ···

4.移动项目到ubuntu

我们使用git 通过github上传和下载

cd mysite

git init

git add .

git commit -m "zhushi"

git remote add origin https://github.com/Alpaca-H/DjangoTest3.git

git push -u origin master

5.ubuntu环境搭建

source env/bin/activate

pip install -r plist.txt

python manage.py collectstatic 收集静态文件

python manage.py migrate 创建数据库文件

pip install gunicorn 下载gunicorn

$ gunicorn mysite.wsgi:application  -w 4 -b 0.0.0.0:8000启动项目

$ gunicorn mysite.wsgi:application  -b 0.0.0.0:8000

$ nohup gunicorn mysite.wsgi:application  -w 4 -b 0.0.0.0:8000 &  后台一直跑

6.nginx

$ sudo yum install nginx

$ cd /etc/nginx

$ sudo cat nginx.conf

这个时候我们就能看到在配置中有这样的一句话,

include /etc/nginx/conf.d/*.conf;

 这个意思是他启动的时候会去读取conf.d下的配置文件,也就是我们可以在这个 /etc/nginx/con.d目录下去写配置文件,操作如下

$ cd /etc/nginx/conf.d

$ sudo touch nginx.conf

$ sudo vim nginx.conf

配置文件的内容如下:

/etc/nginx/conf.d/nginx.conf

server {

    listen  80;

    root    /home/hzj/workspace/typeidea-env/;  #配置虚拟环境的目录

    access_log /home/hzj/workspace/typeidea/log/access_log;  #配置这个log文件夹

    error_log  /home/hzj/workspace/typeidea/log/error_log;  #配置这个log文件夹

    server_name www.hzj.top;    # 配置域名

    #处理静态文件 /favicon.ico:

    location /favicon.ico {

        alias /home/hzj/typeidea/static_files/favicon.ico;  # 如果没,不用配置

    }

    #处理django的静态文件

    location /static/ {

        alias /home/hzj/typeidea/static_files/; # 收集静态资源的路径

    }

    #处理请求转发8000接口 如果你的gunicorn是其他端口,请自己改

    location / {

        proxy_pass  http://127.0.0.1:8000;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

}

这样我们的nginx配置文件就能写完了,但是如果你重启的话,会发现一个问题,那就是权限,你会发现你启动的文件,于你的配置文件权限不一样,这会导致你无法启动,或者是其他问题,我们返回之前的/etc/nginx的目录之下,把下面的用户名改为自己的用户名字,就可以了:


/etc/nginx/nginx.conf

···

user hzj

···

当然写完nginx的时候我们可以进入到自己写的配置路径下面,执行nginx -t看下所运行的状态,或者第几行发生到错误。然后我们就可以启动nginx,在浏览器输入自己的IP或者域名就成功

ps:1.如果发现启动还是无法访问,首先检查一下防火墙,防火墙要开80端口,不会开可以看这编Linux上防火墙的设置

2.去自己的服务器厂家的控制台,查看自己是否放通了安全组,一般要放通80,如果要调试可以顺便把8000端口也放通,当然取决于自己实际需求

3.检查自己的nginx的静态路径,反响代理的端口和IP,以及文件的权限问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容