实现简单的"nginx+uwsgi+django"的服务器架构
2017-09-16 17:44
453 查看
1,安装uwsgi
pip install uwsgi
2,安装django
pip install django
3,uwsgi+django
关闭django的运行
编写django_wsgi.py,将其放在manage.py的同级目录
# coding: utf-8
import os
import sys
reload(sys)
sys.setdefaultencoding(‘utf8’)
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “projectname.settings”)
from django.core.wsgi import get_wsgi_application 这一句来自于wsgi.py中的设置
application = get_wsgi_application()
启动uwsgi
uwsgi –http 0.0.0.0:8000 –chdir /项目文件的路径 –module django_wsgi (我们创建的py文件不加扩展名)
4,nginx+django+uwsgi
配置uwsgi,在项目目录下创建一个uwsgi_server.ini文件
[uwsgi]
socket = :8000
chdir = /projectpath
module = django_wsgi
processes = 4
daemonize = uwsgi.log
启动uwsgi服务器
uwsgi -i uwsgi_server.ini
关闭:直接kill
5,以上操作如果成功,我们访问的界面是乱的,这是没有加载js css 的原因,静态文件是由
nginx来处理的,uwsgi是不能直接处理的。
修改django的配置 settings:
STATICFILES_DIRS = (
os.path.join(BASE_DIR_,”static”),
)
STATIC_ROOT = os.path.join(BASE_DIR,”collectstatic”) 设置静态文件的存放位置,然后才可以执行收集操作,注意如果项目没有static文件夹,我们需要自己建一个,因为后台admin是有静态文件的。
python manage.py collectstatic
6,如果我们想使用nginx+tornado+diango部署
首先,安装torando,实现tornado+django
在django项目中创建一个torando_server.py文件
from tornado.options import options, define, parse_command_line
from django.core.wsgi import get_wsgi_application
import tornado.httpserver
import tornado.ioloop
import tornado.web
import tornado.wsgi
import os, sys
SITE_ROOT = os.path.dirname(os.getcwd())
PROJECT_NAME = os.path.basename(os.getcwd()) #获取项目名称,也就上级目录名称
sys.path.append( SITE_ROOT )
os.environ[‘DJANGO_SETTINGS_MODULE’] = PROJECT_NAME + ‘.settings’
define(‘port’, type=int, default=8080)
class HelloHandler(tornado.web.RequestHandler):
def get(self):
self.write(‘Hello from tornado’)
def main():
parse_command_line()
if name == ‘main‘:
main()
pip install uwsgi
测试uwsgi 写一个uwsgi_test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return "Hello World" 然后执行shell指令: uwsgi --http :8000 --wsgi-file uwsgi_test.py 访问网页查看结果 (安装最好进入虚拟环境)
2,安装django
pip install django
测试django: 创建django项目 django-admin startproject projectname 创建app python manage.py startapp appname 修改访问设置:settings.py 文件中 ALLOWED_HOSTS = ["*"] python manage.py migrate 这一步有助于我们查看后台界面 运行 python manage.py runserver 0.0.0.0:8000 访问网页查看结果
3,uwsgi+django
关闭django的运行
编写django_wsgi.py,将其放在manage.py的同级目录
# coding: utf-8
import os
import sys
reload(sys)
sys.setdefaultencoding(‘utf8’)
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “projectname.settings”)
from django.core.wsgi import get_wsgi_application 这一句来自于wsgi.py中的设置
application = get_wsgi_application()
启动uwsgi
uwsgi –http 0.0.0.0:8000 –chdir /项目文件的路径 –module django_wsgi (我们创建的py文件不加扩展名)
访问网页查看结果,如果能正常访问django网页说明成功,因为我们是没有运行django的
4,nginx+django+uwsgi
配置uwsgi,在项目目录下创建一个uwsgi_server.ini文件
[uwsgi]
socket = :8000
chdir = /projectpath
module = django_wsgi
processes = 4
daemonize = uwsgi.log
启动uwsgi服务器
uwsgi -i uwsgi_server.ini
关闭:直接kill
配置nginx 添加一个server server{ listen 80; server_name localhost; #配置路由 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; 转发到本地8000端口 } } 启动nginx服务 启动uwsgi服务 访问网页80端口,查看结果
5,以上操作如果成功,我们访问的界面是乱的,这是没有加载js css 的原因,静态文件是由
nginx来处理的,uwsgi是不能直接处理的。
修改django的配置 settings:
STATICFILES_DIRS = (
os.path.join(BASE_DIR_,”static”),
)
STATIC_ROOT = os.path.join(BASE_DIR,”collectstatic”) 设置静态文件的存放位置,然后才可以执行收集操作,注意如果项目没有static文件夹,我们需要自己建一个,因为后台admin是有静态文件的。
python manage.py collectstatic
收集完静态文件以后进入naginx的配置文件,在server中添加静态文件的路径。 localtion /static/ { alias collectstaic的路径:例如 alias /home/work/src/sites/testdjango1/testdjango/collectedstatic/; } 重启nginx 然后访问后台查看结果
6,如果我们想使用nginx+tornado+diango部署
首先,安装torando,实现tornado+django
在django项目中创建一个torando_server.py文件
from tornado.options import options, define, parse_command_line
from django.core.wsgi import get_wsgi_application
import tornado.httpserver
import tornado.ioloop
import tornado.web
import tornado.wsgi
import os, sys
SITE_ROOT = os.path.dirname(os.getcwd())
PROJECT_NAME = os.path.basename(os.getcwd()) #获取项目名称,也就上级目录名称
sys.path.append( SITE_ROOT )
os.environ[‘DJANGO_SETTINGS_MODULE’] = PROJECT_NAME + ‘.settings’
define(‘port’, type=int, default=8080)
class HelloHandler(tornado.web.RequestHandler):
def get(self):
self.write(‘Hello from tornado’)
def main():
parse_command_line()
wsgi_app = tornado.wsgi.WSGIContainer(get_wsgi_application()) tornado_app = tornado.web.Application( [ ('/hello-tornado', HelloHandler), # 把所有路由转交给django app ('.*', tornado.web.FallbackHandler, dict(fallback=wsgi_app)), ]) server = tornado.httpserver.HTTPServer(tornado_app) server.listen(options.port) tornado.ioloop.IOLoop.instance().start()
if name == ‘main‘:
main()
完成上面的代码后运行: python tornado_server.py runserver --port=8000 访问网页查看结果 实现nginx+tornado+django 配置nginx vim /usr/local/nginx1.10/conf/nginx.conf upstream djangopro{ server 127.0.0.1:8000; #server 127.0.0.1:8001; } server { listen 8888; server_name = localhost; location / { proxy_pass_header Server; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://djangopro; #转发 8000,80001轮着来 #proxy_pass http://localhost:8000;表示直接转到8000 } location /static/ { alias /project/djangopro/collectstatic/; } } 重启nginx ,启动torando_server.py 访问网页查看结果
相关文章推荐
- 实现简单的"nginx+uwsgi+django"的服务器架构
- 在树莓派上搭建 Nginx + uWSGI + Django 架构服务器的过程中所学到的
- Nginx+uwsgi+Django 搭建一个简单的web服务器
- 在服务器上简单配置flask+uwsgi+nginx(只是可工作~嘿)
- Django+uWSGI+nginx阿里云服务器部署-centos6.8环境
- nginx服务器安装并简单实现负载均衡
- Flask+uWSGI+Nginx实现简单文件上传web应用
- 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序
- 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)
- 使用Nginx+uWsgi实现Python的Django框架站点动静分离
- Mac os X 配置 django + uWSGI + nginx 简单构建过程分享
- Nginx+Django+Uwsgi架构部署
- nginx+uwsgi+django+python 应用架构部署
- "Android下使用HttpUrlConntion"进行最简单的get,post请求(包括创建服务器)
- python-django 阿里云ECS服务器部署uwsgi+nginx过程解说
- Nginx + uwsgi + Django 简单上线配置
- 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(下)
- Nginx+Django+Uwsgi架构部署
- 使用NGiNX_HTTP_Push_Module实现简单的服务器推送
- 淘宝服务器架构框架图,简单实现....