- Django NBA Web开发 - Step 16 Djang
- Django NBA Web开发 - Step 17 Djang
- Week4 hw1: Make a given website
- Python Web 开发框架 Django 2.0 发布,不再
- Django NBA Web开发 - Step 7 文章分页
- Django NBA Web开发 - Step 10 头像上传
- Django NBA Web开发 - Step 9 添加Ajax
- Django NBA Web开发 - Step 13 球员名单
- Django NBA Web开发 - Step 1 首页建立
- Django NBA Web开发 - Step 3 用户系统
内容基本上开发差不多了,最后一步进行服务器的部署.
后续添加:本来想一篇把这个内容写完的,结果踩了无数个坑,之前部署过flask,以为自己有点经验了,结果这次部署Django,部署到怀疑人生,所以分开几篇写决定。
1:服务器,域名,备案的准备
全都是在腾讯云上购买的
2:服务器上安装的系统为Debian9.0系统
连接上服务器以后,为了不必要的麻烦,先设置一个带有root权限的新账户
add user allen
usermod -aG sudo username
随后,先进行系统更新一下
sudo apt-get update
sudo apt-get upgrade
3:必要软件的安装
sudo apt-get install nginx
sudo apt-get install python3
sudo apt-get install python3-pip
sudo apt-get install git
sudo pip3 install virtualenv
还有其他一些如mysql等,就不一一赘述,网上都有攻略,我装的是mysql8
4: 实际部署
项目肯定是从Github上面拉,不过在拉之前,为了便于一次性安装所有的应用,我们需要生成一个requirements.txt文件在根目录。
cd到项目你想生成的目录,推荐根目录,然后运行
pip freeze > requirements.txt
完了以后,老规矩,用virtualenv来创建虚拟环境(实际上python3可以不用这个了,完全可以用venv,不过忘记了,将错就错了)
virtualenv env
接着就要去github上面拖项目了
Github拖取项目
可以复制右侧红框内的连接地址,然后在自己服务器的命令行里面运行
git clone 你的github url地址
这里有个小技巧,如果你想指定获取哪个分支,比如像我是为部署特意创建了deloy的分支,我们就可以用下面的命令进行指定
git clone -b deploy http:你的url
这样,仓库就拖过来了。
然后需要对项目的文件进行设置更改
首先第一个是settings.py文件
把DEBUG=False设置好
其实在写这篇文章之前,我已经踩了很多坑了,才会想到,如果我不用nginx和Gunicorn,能否单独运行Django的开发服务器给外部使用?
虽然文档上明确指出不要将这个开发服务器对外开放用于production,但是不要不代表不行。
查询了N个文档和踩了无数个坑后,终于成功了。
首先,要在settings.py的ALLOWED_HOSTS里面添加内容如下
ALLOWED_HOSTS = ['0.0.0.0:8000','127.0.0.1','localhost','www.allenbigbear.com']
特别需要注意的是,如果你希望从外部可以访问Django的开发服务器,在这个设置里面一定要加入0.0.0.0:8000
,其他诸如localhost或者127.0.0.1都没有用。
然后我们运行服务器python manage.py runserver 0.0.0.0:8000
这样就可以运行成功了
但是我们发现,所有的static静态文件全部都失效。
后来搜索发现,其实Gunicorn和Django默认的服务器在生产环境中无法提供静态文件的支持,需要用类似于nginx这样的web服务器来进行支持。
网友评论