Django中部署配置总结
当项目开发完成后,需要将项目代码放到服务器上,这个服务器拥有固定的IP,再通过域名绑定,就可以供其它人浏览,对于python web开发,可以使用wsgi、apache服务器,此处以wsgi为例进行布署。
服务器首先是物理上的一台性能高、线路全、运行稳定的机器,分为私有服务器、公有服务器。
- 私有服务器:公司自己购买、自己维护,只布署自己的应用,可供公司内部或外网访问,成本高,需要专业人员维护,适合大公司使用。
- 公有服务器:集成好运营环境,销售空间或主机,供其布署自己的应用,适合初创公司使用,成本低。
常用的公有服务器,如阿里云、青云等,可按流量收费或按时间收费。服务器还需要安装服务器软件,此处需要uWSGI、Nginx。
html文件当中有静态文件时,项目部署到服务器的时候,将debug模式关闭后静态文件则找不到图片等
搭建服务器的虚拟环境
1.在本机进入虚拟环境,执行命令导出当前需要的所有包。
pip freeze > plist.txt
2.通过ftp软件将项目代码和plist.txt文件上传到服务器。
3.创建虚拟环境,在虚拟环境上安装包。
mkvirtualenv 虚拟环境名称 pip install -r plist.txt
uWSGI
概述
uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器。
uWSGI代码完全用C编写,效率高、性能稳定。
1)安装uWSGI。
pip install uwsgi
2)配置uWSGI,在项目目录下创建uwsgi.ini文件,配置如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[uwsgi] # 使用nginx连接时使用 #socket=127.0.0.1:8080 #直接做web服务器使用 服务器的ip和监听的端口号 http=127.0.0.1:8080 #项目目录 制定项目目录 chdir=/home/python/Desktop/py3test/day06 #项目中day06文件夹当中wsgi.py文件的目录,相对于项目目录 wsgi-file=day06/wsgi.py # 制定进程数目 processes=4 # 制定线程数目 threads=2 # 主进程 master=True # 将主进程的id写到该文件里面 pidfile=uwsgi.pid # 后台输出 log日志 daemonize=uwsgi.log日志
3)启动。
uwsgi --ini uwsgi.ini
4)查看。
ps ajx|grep uwsgi 此时项目已经部署到了uwsgi上了,可以通过浏览器访问项目中的动态文件了,但是此时静态文件访问不了需要通过nginx
5)停止。
uwsgi --stop uwsgi.pid
6)在浏览器中输入如下网址:
http://127.0.0.1:8080/
Nginx
使用nginx的作用主要包括负载均衡、反向代理。
查看官方网站http://nginx.org/
1)下载nginx后放到桌面上,解压缩。
tar zxvf nginx-1.6.3.tar.gz
2)进入nginx-1.6.3目录,依次执行以下命令进行安装。
./configure make sudo make install
3)默认安装到/usr/local/nginx/目录,进入此目录。
cd /usr/local/nginx/
4)启动。
sudo sbin/nginx
5)查看进程。
ps ajx|grep nginx
6)打开浏览器,输入如下网址:
http://127.0.0.1/
7)停止。
sudo sbin/nginx -s stop
指向uwsgi项目
1)打开/usr/local/conf/nginx.conf文件。
sudo gedit conf/nginx.conf
2)在server节点下添加新的location项,指向uwsgi的ip与端口。
location / { #将所有的参数转到uwsgi下 include uwsgi_params; #uwsgi的ip与端口 uwsgi_pass 127.0.0.1:8080; }
注:操作第二部的时候 将系统自带的注释掉
此刻的静态文件还是不能访问 需要将静态文件导入nginx
配置静态文件
所有的静态文件都会由nginx处理,不会将请求转到uwsgi。
1)打开conf/nginx.conf文件。
sudo gedit conf/nginx.conf
2)在server节点下添加新的location项,用于处理静态文件。
location /static { alias /var/www/test6/static/; }
3)在服务器上创建如下目录。
sudo mkdir -vp /var/www/test6/static/
4)修改目录权限。
sudo chmod 777 /var/www/test6/static/
5)修改test6/settings.py文件。
STATIC_ROOT='/var/www/test6/static/' STATIC_URL='/static/'
6)收集所有静态文件到static_root指定目录。
python manage.py collectstatic
7)刷新浏览器即可搜索到静态文件