• Django部署


    1. 租云服务器

    2. 买服务器

    租:公网IP,111.13.101.208,ping baidu.com得到的公网ip
    租域名:www.pythonav.com <-> 111.13.101.208,域名和公网ip建立关系。

    3. 编写代码

    4. 拷贝代码到服务器[Python,Django,pymysql,sqllite],拷贝到虚拟机

    settings.py
    	ALLOWED_HOSTS = ['服务器IP',]	# 例ALLOWED_HOSTS =['192.168.11.62',]
    
    python manage.py runserver 0.0.0.0:8001			# 运行在服务器上,本机的话是127.0.0.1:8001
    
    使用:SOCKET DJANGO内部写的,性能比较低,所以有了uwsgi操作。
    	遵循wsgi协议:
    		wsgiref

    以上已经完成了最简单的django部署

    5. uwsgi

    pip3 intall uwsgi 
    
    
    利用uwsgi对一个.py文件进行简单部署:
    	app.py
    		def application(env, start_response):
    			start_response('200 OK', [('Content-Type','text/html')])
    			return [b"Hello World"]
    			
    	uwsgi --http :9001 --wsgi-file app.py			
    
    	uwsgi --http :9002 --wsgi-file foobar.py --master --processes 4 --threads 2			# 开四个进程,2个线程
    	
    对Django文件部署:
    	
    	# 不处理静态文件
    	uwsgi --http :9002 --chdir /data/s1/deploy --wsgi-file deploy/wsgi.py --master --processes 4 --threads 2  
    	#uswgi首先声明监听9002端口,到Django程序目录/data/s1/deploy ,启动Django目录中deploy/wsgi.py文件
    	
    	
    	
    	# 处理静态文件
    	settings.py:
    		STATICFILES_DIRS = (
    			os.path.join(BASE_DIR,'static'),
    		)																			
    		
    		STATIC_ROOT = os.path.join(BASE_DIR,'uuuuuu')		# uuuuuu是所有的静态文件收集到的目录,uuuuuu目录会被自动创建
    	
    	python manage.py collectstatic						# 收集所有的静态目录到STATIC_ROOT配置的uuuuuu目录中
    	
    	运行完collectstatic命令后,将STATICFILES_DIRS和STATIC_ROOT都注释掉。
    	
    	uwsgi --http :9003 --chdir /data/s1/deploy --wsgi-file deploy/wsgi.py --static-map /static=/data/s1/deploy/uuuuuu	# /data/s1/deploy/uuuuuu 是收集到的所有静态文件的目录。
    	
    	#上面的uwsgi命令太长,所以写一个配置文件,写在Django project目录下,vim wsgi_http.ini
    		wsgi_http.ini
    			[uwsgi]
    			http = 0.0.0.0:9004
    			chdir = /data/s1/deploy
    			wsgi-file = deploy/wsgi.py
    			# processes = 4
    			# threads = 2
    			static-map = /static=/data/s4/deploy/uuuuuu
    		uwsgi wsgi_http.ini		# 以后就不用输入那么长的命令了,直接运行该条命令就行。
    

      

    以上因为uwsgi静态文件处理不如Nginx,所以使用Nginx来处理。
    动态的请求url经过uwsgi再到Django程序。
    		
    用户发请求,最外层先经过nginx,nginx里面进行判断,判断如果是静态文件就去uuuuu目录取,取到后再交给nginx。
    如果是动态请求,则转交给uwsgi,再由uwsgi调用Django代码,Django代码处理完成后再交给uwsgi,再交给Nginx。
    然后把动态请求和静态文件处理结果经由nginx返回给用户。
    nginx做的是反向代理。
    

    6. Nginx

    yum install nginx
    
    可执行目录/etc/init.d/nginx,命令 start/stop/restart
    /etc/init.d/nginx start
    /etc/init.d/nginx stop
    /etc/init.d/nginx restart
    
    配置文件
    /etc/nginx/nginx.conf
    将静态文件配置到nginx.conf中
    	server{ 
    		...
    		location /static {
    			alias /data/s1/deploy/uuuuuu;
    		}
    		...
    	}
    
    
    nginx与uwsgi的连接是基于socket连接,nginx 80端口 --> uwsgi 8001端口
    Django project目录下,vim wsgi_sock.ini
    	wsgi_sock.ini
    		[uwsgi]
    		socket = 127.0.0.1:8001
    		chdir = /data/s1/deploy
    		wsgi-file = deploy/wsgi.py
    		# processes = 4
    		# threads = 2
    		static-map = /static=/data/s1/deploy/uuuuuu
    
    
    
    配置完成后,运行:
    uwsgi wsgi_sock.ini 
    /etc/init.d/nginx start
    访问url	192.168.11.62/index.html,Django部署成功。
    

    注意:需要修改/etc/selinux/config

    vim /etc/selinux/config
    SELINUX = disabled
    

      

  • 相关阅读:
    Object Files (.obj)
    使用IIS Microsoft的web服务器和ftp服务器
    关于matlab
    char, signed char, unsigned char的区别
    百度面试
    google笔试题_2011
    ioctl 函数与网络接口
    Unity之热更新:(三)XLua
    C#之设计模式:观察者模式
    C#:委托
  • 原文地址:https://www.cnblogs.com/xuyaping/p/7807935.html
Copyright © 2020-2023  润新知