Django项目开发完毕,开发完成后用如下命令收集所有的包
pip freeze > plist.txt
本地测试正常运行之就可以部署到服务器上,我把我的真个部署过程分享出来,从域名和服务器的购买到虚拟环境、uwsgi和nginx的安装配置。希望对有需要的开发人员有所帮助。我的服务器环境是Ubuntu 16.04。
1、域名购买
购买域名可以到阿里云 万网:https://wanwang.aliyun.com/ 查询并购买,部分后缀的域名需要实名认证,自己查看网站上的相关提示信息.
2、服务器的购买
我的服务器是在搬瓦工购买的,详细内容可以看我之前的博文:搬瓦工(BandwagonHost VPS)购买并配置自己的服务器,以及用xshell登录自己的服务器,地址:http://blog.csdn.net/c2366994582/article/details/79251914,我的服务器配置为Ubuntu16.04,购买服务器之后会有一个ip地址,然后回到购买域名的地方,把自己的域名解析为自己购买的ip地址。
3、用Xshell登录服务器
详见:利用Xshell登录虚拟机和服务器,地址:http://blog.csdn.net/c2366994582/article/details/79252042
4、用root用户登录之后,我们一般不在root用户下去部署,需要新建一个用户,使用useradd命令添加一个用户,命令详情如下
我新添加的用户名为:python,切换到python用户
5、创建虚拟环境
虚拟环境的安装配置可以看这篇博文:http://blog.csdn.net/emperor_cj/article/details/78603026,我新建的虚拟环境名称为h1
6、虚拟环境下安装所需要的包
把自己的项目文件放在/home/python/projects目录下,我的项目名称为myproject,我的项目目录就是/home/python/projects/myproject,切换到虚拟环境:workon h1(h1是我的虚拟环境名称),使用命令
pip install -r plist.txt
安装所需要的包。
7、更改settings文件
DEBUG = False
ALLOW_HOSTS=['*',]表示可以访问服务器的ip
8、uwsgi的安装和配置
- uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器
- uWSGI代码完全用C编写
- 安装uWSGI
pip install uwsgi
- 配置uWSGI,在项目中新建文件uwsgi.ini,编写如下配置
[uwsgi]
socket=外网ip:端口(使用nginx连接时,使用socket)
http=外网ip:端口(直接做web服务器,使用http)
chdir=项目根目录
wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log
我的uwsgi.ini文件配置如下,uwsgi.ini文件位于项目根目录下,我的项目目录为myproject,如下
我的uwsgi.ini文件内容如下:
[uwsgi]
socket=184.170.221.171:8000
chdir=/home/python/project/myproject
wsgi-file=myproject/wsgi.py
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log
说明:184.170.221.171是我的服务器地址,/home/python/project/myproject是我的项目根目录,myproject是我的项目名称,后面部分相同即可
- 启动:uwsgi --ini uwsgi.ini
- 停止:uwsgi --stop uwsgi.pid
- 重启:uwsgi --reload uwsgi.pid
- 使用http协议查看网站运行情况,运行正常,但是静态文件无法加载
可以使用 ps ajx|grep uwsgi命令查看uwsgi是否启动
9、静态文件
10、安装配置nginx
使用如下命令安装nginx
sudo apt-get install nginx
默认安装位置为/etc/nginx,该目录下有一个nginx.conf文件,使用cat命令查看该文件,发现配置文件位于conf.d文件夹里面
打开conf.d文件夹,使用vi编辑器编辑default.conf文件
编辑前:
编辑后:
注意:编辑前后只有红色方框内的内容发生了变化。
重启uwsgi和nginx,可使用 ps ajx|grep nginx查看nginx是否启动成功
至此,整个部署过程完成。
如果nginx安装部分有问题,查看https://blog.csdn.net/c2366994582/article/details/81909638,这里面nginx直接在nginx.conf里面配置,无需包含到其他文件。