nginx+uwsgi部署Django

pip :               https://pypi.org/project/pip/
setuptools :   		https://pypi.org/project/setuptools/

linux 设置环境变量URL : 
		https://jingyan.baidu.com/article/b87fe19e6b408852183568e8.html
        https://jingyan.baidu.com/article/a3f121e4b5e848fc9052bbf3.html

linux 临时设置环境变量: 
			command line: export PATH=$PATH:/usr/local/python-3.5.6/bin 

linux 永久设置环境变量:
		1、 编辑  vi  /etc/profile : 在文件最后添加: 
				 export PATH=$PATH:/usr/local/python-3.5.6/bin  保存退出
        2、 执行: source  /etc/profile   ----> 是变量生效
        3、 Linux 系统 重新启动

Django + Nignx + Uwsgi :
                 https://www.runoob.com/django/django-nginx-uwsgi.html
                 https://www.cnblogs.com/wcwnina/p/9906081.html
                 https://cloud.tencent.com/developer/article/1372693

apt install :  通过本地安装
apt-get install :  后者是通过网络获取安装包安装。
apt-get是老版的命令,apt 是新版的命令。

列出一个软件版本的命令: https://www.cnblogs.com/EasonJim/p/7144017.html
			apt-cache madison  openssh-client
指定版本安装:  apt-get install softname=version


aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。
与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,
aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,
整个系统更为干净

 killall 、kill 、pkill 命令详解
 			https://www.cnblogs.com/rsky/p/4886043.html

关闭防火墙: 
	iptables 为防火墙的管理工具, 可 apt  或 yum  安装  
	iptables -F : 临时 关闭 防火墙
	setenforce 0 :  临时 关闭 selinux 
	/etc/selinux/config : 永久关闭 防火墙


	查看端口: ss -tnlp    或者  netstat -tulnp
	ulimit  详解 : 
			https://man.linuxde.net/ulimit
			https://www.cnblogs.com/zengkefu/p/5649407.html


centos  : 动静 分离 部署 Django 项目:
			https://blog.51cto.com/wangfeng7399/2341281
	wangfeng7399 老男孩老师的 码云 地址:
				https://gitee.com/wangfeng7399/




1、 安装 nginx
	apt-get install aptitude
	aptitude install nginx 
	Centos 安装 nginx: https://blog.51cto.com/wangfeng7399/2341281


2、 新建 Django Pro
	#  创建 虚拟环境
		mkvirtualenv -p /usr/systemEIF/python-3.7.4/bin/python3 mysiteEnv
	进入 虚拟环境
		workon mysiteEnv
	创建 Django 项目
		django-admin startproject mysite
		cd mysite
	创建 app
		python manage.py startapp web
		mkdir script 
		cd sctipt 
3、	#  创建 uwsgi.ini  配置文件
		vi uwsgi.ini  


			[uwsgi]
			# 项目目录
			chdir=/opt/project_teacher/teacher/
			# 指定项目的application
			module=teacher.wsgi:application
			# 进程个数
			workers=5
***********	pidfile=/opt/project_teacher/script/uwsgi.pid
			# 指定IP端口
			http=192.168.31.123:8080
			# 指定静态文件
			static-map=/static=/opt/test_project/teacher/static
			# 启动uwsgi的用户名和用户组
			uid=root
			gid=root
			# 启用主进程
			master=true
			# 当服务停止的时候自动移除unix Socket和pid文件,清空环境,清空缓存
			vacuum=true
			# 序列化接受的内容,如果可能的话
			thunder-lock=true
			# 启用线程
			enable-threads=true
			# 设置自中断时间
			harakiri=30
			# 设置缓冲
			post-buffering=4096
			# 设置日志目录, 且可以后台启动 
			daemonize=/opt/project_teacher/script/uwsgi.log
			# 指定sock的文件路径
************socket=/opt/project_teacher/script/uwsgi.sock  
4、 修改 uwsgi.ini  配置文件权限:
	为uwsgi.ini 设置 附加组 ,可以让 nginx 访问
	查看 nginx 的配置文件: /etc/nginx/nginx.conf, 是哪个用户启动的 nginx
		chown  root.nginx  uwsgi.ini   # centos
		chown  root.www-data uwsgi.ini   # ubuntu


	客户端的 所有 请求 到达服务器 , 都先 路过  nginx ,
			动态请求 再转发给 配置文件中的 sock 文件(uwsgi socket)
			静态请求 直接 转发给 Django  框架, 

5、 编写 nginx 配置文件:

	在 /etc/nginx/conf.d/  中 创建 xxxxx.conf  nginx 配置文件
		在 conf.d 这个目录中的以 .conf 结尾的配置文件, nginx 可以自动发现且加载
		原因是 /etc/nginx/nginx.conf 中 有一句配置:
						include /etc/nginx/conf.d/*.conf;


		server {   # 这个server标识我要配置了
		        listen 80;  # 我要监听那个端口
		        server_name 192.168.2.105 ;  # 你访问的路径前面的url名称
		        access_log  /var/log/nginx/access.log;  # Nginx日志配置
		        charset  utf-8; # Nginx编码
		        gzip on;  # 启用压缩,这个的作用就是给用户一个网页,比如3M压缩后1M这样传输速度就会提高很多
		        gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;  # 支持压缩的类型

		        error_page  404           /404.html;  # 错误页面
		        error_page   500 502 503 504  /50x.html;  # 错误页面

		        # 指定项目路径uwsgi
		        location / {        
		        # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
		            include uwsgi_params;  # 导入一个Nginx模块他是用来和uWSGI进行通讯的
		            uwsgi_connect_timeout 30;  # 设置连接uWSGI超时时间
		            uwsgi_pass unix:/Project/AutoCmdb_SuoSuo04.0/script/uwsgi.sock;  # 指定uwsgi的sock文件所有动态请求就会直接丢给他
		        }

		        # 指定静态文件路径
		        location /static/ {
		            alias  /Project/AutoCmdb_SuoSuo04.0/web/static/;
		            index  index.html index.htm;
		        }
			}



6、执行命令迁移nginx静态文件
		STATIC_ROOT = os.path.join(BASE_DIR, "static/")
		python manage.py collectstatic

7、 START  SERVER  


	注意: 启动 nginx 出错时, 根据提示 执行命令, 可能是 语法错误,
		重启动  uwsgi 时, 先 删除上一次执行产生的  pid 和 sock 文件 



posted @ 2019-12-07 15:30  梭梭666  阅读(109)  评论(0)    收藏  举报
返回顶部