本地准备工作
- 从开发机上导出requirements.txt文件,方便在部署的时候安装。使用
pip freeze > requirements.txt
将当前环境的包导出到requirements.txt文件中。 - 将本地项目上传到目标服务器上(推荐使用git,可进行版本控制)
1
2
3
4
5
6git init # 初始化。进入本地项目目录,右键'Git Bash Here'后执行
git remote add origin xxx.git # 添加本地与远程仓库的关联
git add . # 添加本地文件到缓冲区
git commit -m 'first commit' # 提交代码待仓库
git pull origin master --allow-unrelated-histories # 拉取代码,第一次拉取加上参数'--allow-unrelated-histories'
git push origin master # 推送本地代码
服务器准备工作
- 服务器上拉取相关代码文件
- 服务器上安装好python、pip、创建虚拟环境
virtualenv
以及virutalenvwrapper
,使用pip安装。临时更改安装源,以豆瓣源为例:pip install <包名> -i https://pypi.douban.com/simple
1 | # 编辑当前用户家目录 |
- 安装mysql、缓存数据库等(创建相关数据库
create database deploy_demo charsete utf8;
) - 安装requirements.txt相应包
- 执行
python manage.py migrate
命令,将迁移文件,映射到数据库中,创建相应的表。 - setting中设置
ALLOW_HOST
为你的域名,以及ip地址。ALLOWED_HOSTS = ['key1024.cn','x.x.x.x']
- 设置
DEBUG=False
,避免如果你的网站产生错误,而将错误信息暴漏给用户。 - 执行
python manage.py runserver 0.0.0.0:8000
,在浏览器中输入http://x.x.x.x:8000/
,访问下网站所有页面,确保所有页面都没有错误。 - 收集静态文件:
python manage.py collectstatic
。
1 | # 在setting.py中设置相关路径,static、static_dist目录提前创建好。 |
安装uwsgi
uwsgi是一个应用服务器,非静态文件的网络请求就必须通过他完成,他也可以充当静态文件服务器,但不是他的强项。uwsgi是使用python编写的,因此通过
pip install uwsgi
就可以了。(uwsgi必须安装在==系统级别==的python环境中,不要安装到虚拟环境中)。
- 启动测试
1 | 进入项目文件下,使用命令`uwsgi --http :8000 --module xfz.wsgi --vritualenv /root/.virtualenvs/django-env`。用`uwsgi`启动项目,如果能够在浏览器中访问到这个页面,说明`uwsgi`可以加载项目了。 |
配置uwsgi
1 | # 在项目的路径下面,创建一个文件叫做`demo_uwsgi.ini`的文件,然后填写以下代码: |
然后使用命令
uwsgi --ini demo_uwsgi.ini
,看下是否还能启动这个项目。
nginx配置
在/etc/nginx/conf.d目录下,新建配置文件xfz.conf,然后复制如下配置文件内容。
1 | upstream xfz { |
配置supervisor
让supervisor管理uwsgi,可以在uwsgi发生异常情况下会自动重启恢复
- 1.’supervisor’的安装:在系统级别的python环境下
pip install supervisor
,启动supervisord -c xfz_supervisor.conf
- 2.在项目的根目录下创建一个文件叫做
xfz_supervisor.conf
,内容如下:
1 | # supervisor的程序名字 |
1 | [supervisord] |