django+nginx+uwsgi部署

准备东西:自己买的服务器,自己的代码

  1. 检验是否自带python,有些带了有些没带,如果没自带的话:

     	# 下载python
     	wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tar.xz
     	# 解压
     	tar xvf Python-3.6.0a1.tar.xz
     	# 配置安装地址(Linux中与windows中不一样)
     	# 进入Python-3.6.0a1   
     	cd Python-3.6.0a1
     	# 添加配置
     	./configure --prefix=/user/loacl/python3.6
     	
     	# 编辑安装(切换成root用户执行: sudo +命令)
     	make
     	make install
    
     	# 测试
     	输入python3  会出现交互模式
     	ok, 如果有问题那我就。。。不知道了。具体你再百度。
    
  2. 如果不是3.6的,系统默认制定链接是在/usr/bin/python, 需要将原有的制定链接文件删除后重新制定: cd /usr/bin , rm -rf python 重新指定:ln -s /usr/local/bin/python3.6 /usr/bin/python

  3. 查看pip3 是否制定到python3.6中, pip -V 若不是,则 cd /usr/bin rm -rf pip3 重新指定:ln -s /usr/local/bin/python3.6/bin /usr/bin/pip3 搞定!

uwsgi安装:

在这里插入图片描述
别看到uwsgi就晕,心想:我们不是用nginx吗?怎么会有这个东西? 上面的图告诉你真相。nginx是用来处理和前端相关的,uwsgi是处理和框架相关的。

  1. 安装: pip install uwsgi

  2. 测试: 编写一个:
    创建test.py

    def application(env, start-response):
    start_response(“200 OK”, [(“Content-Type”, “text/html”)])
    return [b"hello world"]
    然后执行shell命令 uwsgi -http:5000 -wsgi-file test.py
    访问网址:http:// 你的网址:5000
    看看页面是否有结果。

Django安装

  1. 这个不会你就告辞吧。

  2. 此时可以创建django项目先试试,起名:mysite

  3. 绑定django和uwsgi

    进入django项目。
    创建django_wsgi.py
    写内容:
    import os
    import sys
    # 将系统编码设置为utf-8
    reload(sys)
    sys.setdefaultencoding(“utf-8”)
    os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “mysite.settings”)

     from django.core.handlers.wsgi import WSGIHandler
     application = WSGIHandler()
     
     os.environ.setdefault("DJANGO_SETTINS_MODULE", "mysite.settings")
     from django.core.wsgi import get_wsgi_application
     application = get_wsgi_application()
    

连接django和uwsgi, 实现简单的web服务器

我们假设你的django项目的地址是/home/ubuntu/mysite
然后,进入项目目录,cd /home/ubuntu/mysite 执行命令
uwsgi -http:8000 -chdir /home/ubuntu/mysite-module django_wsgi
这样,你就可以在浏览器中访问自己的项目了

Nginx

  1. 安装 sudo apt-get install nginx
  2. 查看nginx的版本: nginx -v
  3. 测试是否已经安装好
    启动: /etc/init.d/nginx start
    关闭: /etc/init.d/nginx stop
    重启: /etc/init.d/nginx restart
    启动后,在浏览器中访问自己的主机ip,可看到相应界面。

实现nginx和uwsgi的连接

假设项目目录为: /home/ubuntu/mysite
我们让nginx采用8077端口与uWSGI进行通讯。
确保之前的django_wsgi.py文件已经存在。

在项目目录下新建djangochina_socket.xml
写入:

		<!-- 若以socket方式访问 -->
		<uwsgi>
			<socket>:8077 </socket>
			<chdir>/home/ubuntu/mysite</chdir>
			<module>django_wsgi</module>
			<process>4</process>
			<daemonize>uwsgi.log</daemonize>
		</uwsgi>

		<!-- 若以http方式访问 -->
		<uwsgi>
			<http>:8077</http>
			<chdir>/home/ubuntu/mysite</chdir>
			<module>django_wsgi</module>
			<process>4</process>
			<daemonize>uwsgi.log</daemonize>
		</uwsgi>

在上面的配置中,我们使用uwsgi.log来记录日志,开启四个进程来处理请求。

配置nginx

我们假设你将会把nginx程序日志放到你的目录/var/log/nginx下,请确保该目录存在。
我们假设你的django的static目录是 /home/ubuntu/mysite/static
我们假设你的media 目录是 /home/ubuntu/mysite/media

请确保以上目录的存在

我们假设你的域名是:www.you.com 讲道理。我们自己练手可以不用搞这些花里胡哨的,直接写ip就开始整。端口也是设置为80 (在调试时,你可以设置一些特殊端口。)

我们在/etc/nginx/nginx.conf添加如下配置
server {
	listen   80;
	server_name  你的ip;
	access_log  /var/log/nginx/access.log;
	err_log   /var/log/nginx/error.log;
	
	location / {
		include     /etc/nginx/uwsgi_params;
		uwsgi_pass    127.0.0.1:80;
	}
	error_page  500 502 503 504  /50x.html;
	location = /50x.html{
	root html;
	}
	location  /media/  {
		alias  /home/ubuntu/mysite/media/;
	}
	location /templates/ {
		alias /home/ubuntu/mysite/templates/;
	}

}

在上面的设置后,可以让Nginx来处理静态文件,(/static/和/media/),非静态文件请求Nginx会发送给socket+端口,可以让uWSGI来进行处理。

Nginx+uWSGI+Django

在完成上面的配置后,需要按以下步骤来做。

  1. 重启Nginx服务器,使得配置生效。
    nginx -s reload(root 权限执行)
    重启后检查Nginx日志是否有异常
    vim /var/log/nginx/error.log
    查看error.log文件内容是否有异常信息

  2. 启动uWSGI服务器
    cd /home/ubuntu/mysite
    uwsgi -x djangochina_socket.xml
    检查日志uwsgi.log是否有异常发生
    uwsgi.log日志生成在项目目录下,所以进入项目目录执行 vim uwsgi.log 查看

  3. 访问服务
    可以自己访问了

  4. 关闭
    将uWSGI进程杀死即可
    sudo killall -9 uwsgi

注意

html文件中静态文件的路径设置,应设置为能够通过nginx访问的地址。不然一直加载不了css和js.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值