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,以及文件的权限问题

你可能感兴趣的:(Django项目部署)