uwsgi+Django 部署 前后端不分离web项目
1、 安装uwsgipip install uwsgi

2、在项目目录/demo 下创建uwsgi配置文件 uwsgi.ini[uwsgi]#使用nginx连接时使用,Django程序所在服务器地址;socket=127.0.0.1:8001#直接做web服务器使用,Django程序所在服务器地址http=127.0.0.1:8001#项目目录(manage.py所在目录)chdir=/home/python/Desktop/django/demo# 如果修改/碰了指定的文件,那么重载uWSGItouch-reload = DJANGO_DIR#项目中wsgi.py文件的目录,相对于项目目录(写项目目录chdir之后的目录)wsgi-file=demo/wsgi.py# 进程数processes=4# 线程数threads=2# uwsgi服务器的角色master=True# 存放进程编号的文件pidfile=uwsgi.pid# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的(会生成在与uwsgi.ini平级目录中)daemonize=uwsgi.log# 指定依赖的虚拟环境virtualenv=/home/python/.virtualenvs/ETL

3、 修改django配置文件(通常为settings.py)# debug 生产环境修改为FalseDEBUG = False# Django通过django.contrib.staticfiles来管理静态文件,首先确保django.contrib.staticfiles已经添加到INSTALLED_APPS。INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 确保有 'ftest.apps.FtestConfig',]# 增加静态文件配置STATIC_URL = '/static/' # 对外提供WEB访问时static的URL地址# 静态文件收集之后存放的目录STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'front/static') # 设置绝对路径, 用来保存收集到的静态文件,服务器最终也将从该路径中获取文件进行转发。在collectstatic运行的时候会把STATICFILES_DIRS中的静态文件拷贝到这个目录中,达到从开发环境到生产环节过程中移植静态文件的作用。# 用来配置一些开发环境下生成的静态文件的地址,即front/css, front/jsSTATICFILES_DIRS = ( ('css',os.path.join(os.path.dirname(STATIC_ROOT),'css').replace('\\','/') ), ('css',os.path.join(os.path.dirname(STATIC_ROOT),'js').replace('\\','/') ),)# 将静态文件中需要需要修改的生产环境的配置一一修改,包括数据库配置等


4、 添加路由 demo/urls.pyurls.py文件内容为:from django.views import staticfrom demo import settingsurlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^ftest/', include('ftest.urls')), url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='static'), # 添加]

5、 模板文竭惮蚕斗件.html中引用css/js路径修改访问路径http://127.0.0.1:8001/ftest/ch/# 非调用路由的引用方式,调用已经编译好的静态文件front/css, front/js中文件<link rel="stylesheet" type="text/css" href="css/children.css"><script src="js/jQuery2.0.js"></script># 调用路由的引用方式<link rel="stylesheet" type="text/css" href="/static/css/children.css"><script src="/static/js/jQuery2.0.js"></script>'''注意/static 与 static 区别href="/static/css/children.css" 访问url:http://127.0.0.1:8001/static/css/children.css href="static/css/children.css" 访问url:http://127.0.0.1:8001/ftest/ch/static/css/children.css 无法正确通过路由访问到静态文件'''

6、 收集静态文件django在生产环境下不直接对外提供静态文件(这里通过设置路由的方法进行访问),但是还有django自身的一些静态文件,比如admin, rest_franework的css,js和其他等,所以通过执行静态文件收集命令来收集python manage.py collectstatic

7、 uwsgi服务器的启用与停用# 启动uwsgi --ini uwsgi.ini(配置文件路径)# 启动后生成文件uwsgi.log 日志文件uwsgi.pid 进程号# 查看日志文件tail -f uwsgi.log(查看的内容始终为最新)# 停用uwsgi --stop uwsgi.pid(uwsgi.pid文件路径)浏览器访问日志可以查看到

