首页 > 系统相关 >巨蟒python全栈开发linux之centos6

巨蟒python全栈开发linux之centos6

时间:2022-12-25 21:03:19浏览次数:49  
标签:文件 nginx python centos6 全栈 虚拟环境 -- 我们 uwsgi

1.nginx复习

1.nginx是什么
nginx是支持反向代理,负载均衡,且可以实现web服务器的软件

在129服务器中查看,我们使用的是淘宝提供的tengine,也是一种nginx服务器

巨蟒python全栈开发linux之centos6_nginx

我们下载的是tengine-2.3.0.tar.gz解压之后得到tengine-2.3.0,下面我们cd进入到tengine中

巨蟒python全栈开发linux之centos6_nginx_02

我们发现,下图会有一个脚本文件configure

巨蟒python全栈开发linux之centos6_django_03

我们安装好的nginx在opt目录下面的s18tngx中

巨蟒python全栈开发linux之centos6_nginx_04

巨蟒python全栈开发linux之centos6_静态文件_05

我们再cd到tengine中的源码包中,

巨蟒python全栈开发linux之centos6_静态文件_06

巨蟒python全栈开发linux之centos6_nginx_07

上图最后一步的命令是指定安装路径

巨蟒python全栈开发linux之centos6_静态文件_08

我们需要运行的是后两步的命令.

 

巨蟒python全栈开发linux之centos6_django_09

运行完之后,我们主要是操作上边的conf这个文件夹

巨蟒python全栈开发linux之centos6_静态文件_10

没事我们就pwd一下,看一下我们的绝对路径是什么.ls命令其实就是  ls点

我们需要关注的就是nginx.conf

2.nginx如何实现404页面,access.log访问日志,多虚拟主机,反向代理等功能

nginx如果出现403(权限不足)的问题:
1.你的nginx代码放在了/root下
2.你的客户端被禁止访问了,去找nginx.conf中的配置

巨蟒python全栈开发linux之centos6_静态文件_11

我们通过查看上边的这一条命令,进行查看浏览器的访问,

 

巨蟒python全栈开发linux之centos6_django_12

 

巨蟒python全栈开发linux之centos6_django_13

出现403代表没有权限,也就是权限不足,404代表找不到,也就是请求的url不正确,服务器上找不到这个地址

 

我们可以捕捉到这个访问的浏览器ip地址:

巨蟒python全栈开发linux之centos6_django_14

巨蟒python全栈开发linux之centos6_静态文件_15

我们看到的"主人进程"是root, 而工作进程是nobody普通用户,  普通用户不能读取/root

 

nginx如果出现403(权限不足)的问题:
1.你的nginx代码放在了/root下
2.你的客户端被禁止访问了,去找nginx.conf中的配置

第一种排除了,我们看第二种.

巨蟒python全栈开发linux之centos6_django_16

老师的注释:

巨蟒python全栈开发linux之centos6_django_17

我的注释:

巨蟒python全栈开发linux之centos6_静态文件_18

events表示时间驱动,通过大括号掌控

 

巨蟒python全栈开发linux之centos6_nginx_19

参考:解决方案:将文件下载到windows中,进行查看研究,解释修改等等

shift+%表示的是找这两个括号

巨蟒python全栈开发linux之centos6_静态文件_20

巨蟒python全栈开发linux之centos6_nginx_21

虚拟主机server,这个是有自上到下 的加载顺序的

 比如:在浏览器上输入:www.s18sssssssssss.com如果不存就解析成相对应的ip,没有就报错.

巨蟒python全栈开发linux之centos6_nginx_22

我们看到显示,找不到"主机名"

 但是,我们ping通了,下面的假的域名,并且解析出了ip,我们是在windows中的cmd解析出来的.

巨蟒python全栈开发linux之centos6_静态文件_23

我们在windows中解析这个自定义的域名,就得修改windows的hosts文件.

现在,如果我们想在linux中,也想ping www.s18dnf.com怎么处理?

下面是我们解析的路径:

巨蟒python全栈开发linux之centos6_静态文件_24

 

 我们将两个域名解析到一个IP上边:

巨蟒python全栈开发linux之centos6_django_25

 现在,我们再增加一个taobao.com

巨蟒python全栈开发linux之centos6_nginx_26

清除缓存:

巨蟒python全栈开发linux之centos6_静态文件_27

这个时候,我们再次访问,得到上边的403界面

DNS 的解析流程比较麻烦

etc/hosts文件的优先性,是高于DNS解析的.

 DNS其实就是将域名转换成IP的过程,最后我们删掉自己写的这个路径对应的淘宝地址.

 这个时候,我们再修改etc下面的文件resolv.conf文件

巨蟒python全栈开发linux之centos6_nginx_28

原来的样子:

巨蟒python全栈开发linux之centos6_django_29

我们现在修改成:

巨蟒python全栈开发linux之centos6_django_30

 

巨蟒python全栈开发linux之centos6_nginx_31

现在,我们发现结果已经ping不通了

/etc/resolv.conf是填写dns记录的文件

我们再次打开,

巨蟒python全栈开发linux之centos6_静态文件_32

我们再写一个备用的ip

巨蟒python全栈开发linux之centos6_nginx_33

保存,退出.

一个是114的一个是腾讯的

这个时候我们再ping的时候,是在腾讯和114这两个大的IP中寻找

巨蟒python全栈开发linux之centos6_nginx_34

因为找不到,所以显示"未知的名称或服务"

我们再linux再次写入

 

巨蟒python全栈开发linux之centos6_django_35

 

我们需要修改etc下面的文件hosts

巨蟒python全栈开发linux之centos6_nginx_36

我们再写一个ip和域名

巨蟒python全栈开发linux之centos6_django_37

 

 保存退出,我们再次ping

 

巨蟒python全栈开发linux之centos6_静态文件_38

这个时候,我们再次ping就可以ping通了.

 也就是写了一个强制记录而已.

我们还是删掉这个记录,防止出错

巨蟒python全栈开发linux之centos6_nginx_39

这个时候,我们再次打开nginx配置管理文件

巨蟒python全栈开发linux之centos6_静态文件_40

 

 我们必须将域名写在server_name后边,这样nginx才会识别.

巨蟒python全栈开发linux之centos6_静态文件_41

我们在nginx.conf配置了两个server,nginx是怎么检测出来的呢?ip和端口都一样,就是通过不同的server_name检测出来的.

这就是基于域名的访问,如果是基于IP的访问,那么就会一直走第一个.

快捷键:

  dd就是删除的快捷键

  u是撤销

  o

 

巨蟒python全栈开发linux之centos6_nginx_42

保存,退出

修改完的代码,唯一要做的就是重启.

巨蟒python全栈开发linux之centos6_django_43

这个时候,我们会发现80已经启用了

端口不能用了,我们可以杀死之后,再次查看,然后再次开启nginx,具体见下图操作

巨蟒python全栈开发linux之centos6_django_44

这个时候,我们再平滑加载''

巨蟒python全栈开发linux之centos6_django_45

 下图表示,检测nginx的语法,显示的结果是没有问题的

 

巨蟒python全栈开发linux之centos6_django_46

如果想要重启怎么操作?

查看帮助,文档看一下怎么重启

巨蟒python全栈开发linux之centos6_nginx_47

ps =>kill也是可以的,如果这种方式不会用的话

巨蟒python全栈开发linux之centos6_django_48

再次访问,已经通了

巨蟒python全栈开发linux之centos6_静态文件_49

巨蟒python全栈开发linux之centos6_django_50

 

 我们自己创建的两个文件夹 dnf和hanju

巨蟒python全栈开发linux之centos6_nginx_51

 

 我们只需要将网站和地址修改就行了.

 

巨蟒python全栈开发linux之centos6_nginx_52

如将dnf这个地址转到,"我该睡了"?

巨蟒python全栈开发linux之centos6_django_53

巨蟒python全栈开发linux之centos6_静态文件_54

 

 原来的内容

巨蟒python全栈开发linux之centos6_django_55

我们只需要将root对应的路径修改成,下图所示内容即可:

巨蟒python全栈开发linux之centos6_nginx_56

保存退出:

然后,我们重新启动nginx

巨蟒python全栈开发linux之centos6_静态文件_57

再次刷新:

巨蟒python全栈开发linux之centos6_nginx_58

如果没有下图所示的部分:

巨蟒python全栈开发linux之centos6_nginx_59

也就是说,加上这一行代码的优先级更高一些。

巨蟒python全栈开发linux之centos6_django_60

status是一个全路径匹配的东西。

如果瞎写,会报404错误,如下图

巨蟒python全栈开发linux之centos6_django_61

下面我们开始学习集群的概念。

 

2.集群介绍

 

3.nginx负载均衡配置1

​​参考第二篇blog​​

4.nginx与项目部署1


crm项目部署
1.nginx + uwsgi + django + 虚拟环境 + supervisor + mysql


2.django的启动方式 python3 manage.py runserver 为什么不能在生产环境用?

django只是一个web逻辑框架,它通过python3 manage.py runserver命令启动的socket服务端
是借助python内置的wsgi框架 wsgiref框架实现的
它是一个单机模块,单进程模块,性能很低

因此在线上需要借助通过c语言编写的uwsgi这个web服务器软件,启动django


sanic 旋风小子
由低到高的性能框架
djano
flask
tornado
sanic

 

巨蟒python全栈开发linux之centos6_django_62

巨蟒python全栈开发linux之centos6_静态文件_63

巨蟒python全栈开发linux之centos6_静态文件_64

3.在进行uwsgi启动django的时候,是需要找到wsgi.py这个文件模块的

如果你报错提示 找不到application ,就是因为uwsgi 找不到wsgi.py

这个问题无法避免,只能一步一步调试

 uwsgi就是通过wsgi.py文件里边的application启动的.

保存退出.

4.为什么要用nginx  和uwsgi?
nginx 可以解决uwsgi的静态文件问题,并且支持高并发请求,还能限流,保障后台服务器安全等等

为什么要用uwsgi
因为uwsgi支持多进程 多线程的方式,性能很高,启动django性能更好,但是uwsgi不解析django的静态文件

我们以后会收集所有的django项目静态文件,丢给nginx去处理

巨蟒python全栈开发linux之centos6_nginx_65

 

 nginx和uwsg中间有一个socket.接口,无法直接跳到django中,

 django处理静态文件的能力很低,nginx处理静态文件的能力很强.

5.准备crm代码

查看虚拟环境存放的目录

巨蟒python全栈开发linux之centos6_静态文件_66

上边创建的两个虚拟环境也是两个文件夹.

 

巨蟒python全栈开发linux之centos6_django_67

 

 

巨蟒python全栈开发linux之centos6_静态文件_68

巨蟒python全栈开发linux之centos6_django_69

注意,这种方式是用来调试代码的,以后上线需要用uwsgi处理.

这个时候,我们正常访问是可以的

巨蟒python全栈开发linux之centos6_静态文件_70

账号是[email protected]  密码是123456

输入密码和账户进入:

巨蟒python全栈开发linux之centos6_nginx_71

关键:我们记不住那么多的ip和端口,我们现在只想访问域名,这件事情应该怎么做?

通过什么技术手段?(运用反向代理,80是个代理,通过代理找到8000)

巨蟒python全栈开发linux之centos6_nginx_72

6.准备一个新的虚拟环境,去启动crm,使用virtualenvwrapper创建新的虚拟环境

1.解决虚拟环境依赖的问题,也就是保障本地开发环境和线上一致性的问题
在windows本地 通过
pip3 freeze > requirements.txt
就能将 python3解释器中所有的模块导出到这个文件中


2.将这个 requirements.txt 文件传输到服务器上,进行安装,就可以自动解决所有模块问题
pip3 install -r requirements.txt

 

巨蟒python全栈开发linux之centos6_静态文件_73

所有的程序员都认识这个requirements.txt这个文档.

看一下文件内的内容:

巨蟒python全栈开发linux之centos6_nginx_74

现在我们退出这个虚拟环境:

巨蟒python全栈开发linux之centos6_nginx_75

现在我们再次新建一个新的虚拟环境

这个时候,新的虚拟环境就创建好了

巨蟒python全栈开发linux之centos6_静态文件_76

拿到纯净的环境

巨蟒python全栈开发linux之centos6_nginx_77

我们需要的是,文件传输到服务器上解决依赖关系

巨蟒python全栈开发linux之centos6_django_78

安装完成之后,下图就是我们已经解决了文件的一致性的问题了

巨蟒python全栈开发linux之centos6_静态文件_79

再看一下这个文件内的内容

巨蟒python全栈开发linux之centos6_django_80

上边就是解决环境不匹配问题的解决方法.

 如果是在windows里边的呢?

巨蟒python全栈开发linux之centos6_django_81

一种是将内容导入D盘,另一个是切换目录,再有一个是展示安装的包.

我们不可能一个一个安装.

打开之后,我们发现已经将本地的包名,写在了这个文件里边.

巨蟒python全栈开发linux之centos6_静态文件_82

只需要将这个文件传递到服务器上安装即可.

再来一个操作,我们可以在windows里边写出了这个文件之后,复制文件内的内容,在linux中再touch一个文件写入内容.

很多事情都是很灵活的,要敢于向,敢于做事情.

这个名字可以随便起,但是这是一个约定俗成的写法,最好这样写.

 

现在我们的目的就是:用nginx反向代理到(uwsgi+django)

笔记真的很重要,一定要看

7.使用uwsgi启动crm项目
确保进入虚拟环境,然后安装uwsgi

workon nginx_crm

下载uwsgi
pip3 install uwsgi

简单看一下,下图这些命令

巨蟒python全栈开发linux之centos6_nginx_83

下面我们安装uwsgi

巨蟒python全栈开发linux之centos6_静态文件_84

 我已经安装成了uwsgi,见下图

巨蟒python全栈开发linux之centos6_django_85

安装完成之后,我们再启动一个项目:

8.使用uwsgi命令启动django项目
uwsgi支持热加载的启动方式命令如下
uwsgi --http :8000 --module mysite.wsgi --py-autoreload=1

uwsgi --http :8088 --module Crm_Project.wsgi
--http指定http协议启动在 8088端口
--module 找到项目第二层的目录,里面的wsgi.py文件

如果你想启动一个http页面,提供测试访问,就用--http参数


如果你结合了nginx反向代理,必须用--socket参数
uwsgi --socket :8000 --module Crm_Project.wsgi

由于参数过多,这里引入配置文件的概念 叫做 uwsgi.ini my.cnf nginx.conf

下图我们进入的是第一层

巨蟒python全栈开发linux之centos6_django_86

然后我们切换到第二层,找到wsgi.py

巨蟒python全栈开发linux之centos6_nginx_87

我们要确保的是,我们进入的是第一级目录

uwsgi --http :8088 --module Crm_Project.wsgi 

上边这条命令中表示的是  Crm_Project表示的是文件夹,wsgi表示的是wsgi.py文件

我们就这样用就可以了.

  module 找到项目第二层的目录,里面的wsgi.py文件

现在我们就启动一下这条命令:

巨蟒python全栈开发linux之centos6_django_88

warning不是很重要.

 

运行起来之后,我们访问

巨蟒python全栈开发linux之centos6_nginx_89

上边的login不可以访问,但是admin可以访问了.

巨蟒python全栈开发linux之centos6_静态文件_90

 

 

巨蟒python全栈开发linux之centos6_django_91

 

 crm/login可以访问了

巨蟒python全栈开发linux之centos6_静态文件_92

我们已经是开发了,内行应改看F12,注意,我们要看的位置

巨蟒python全栈开发linux之centos6_django_93

 

 也就是验证了我们前面说的:

uwsgi不解析django的静态文件

 面试题:

1.项目怎么部署的?:nginx+uwsgi

2.uwsgi是否支持热加载也就是热重启,在后台修改代码之后,立即生效?

 

我们再打开一个窗口

巨蟒python全栈开发linux之centos6_静态文件_94

巨蟒python全栈开发linux之centos6_django_95

yyp相当于复制一行内容.

巨蟒python全栈开发linux之centos6_静态文件_96

保存退出,

我们需要导入一个模块.我们退出查看一下:

巨蟒python全栈开发linux之centos6_nginx_97

巨蟒python全栈开发linux之centos6_静态文件_98

退出.

模块是:

from django.shortcuts import render, redirect, reverse, HttpResponse

 重新打开,下面的模块:

巨蟒python全栈开发linux之centos6_django_99

巨蟒python全栈开发linux之centos6_静态文件_100

退出,保存,后端没有任何的变化

巨蟒python全栈开发linux之centos6_静态文件_101

巨蟒python全栈开发linux之centos6_django_102

再次访问,我们发现没有权限访问.

重新打开这个文件

 

巨蟒python全栈开发linux之centos6_django_103

巨蟒python全栈开发linux之centos6_django_104

我们将内容注释掉,然后保存退出

 

我们现在看不到效果,如何看到具体的热重启?

巨蟒python全栈开发linux之centos6_nginx_105

重新创建一个项目

巨蟒python全栈开发linux之centos6_django_106

巨蟒python全栈开发linux之centos6_nginx_107

下边的两张图都不是我们想要的结果 

巨蟒python全栈开发linux之centos6_django_108

 

 

巨蟒python全栈开发linux之centos6_django_109

 

我们进行数据库迁移一下:

巨蟒python全栈开发linux之centos6_django_110

下面,我们指定模块再次运行

巨蟒python全栈开发linux之centos6_django_111

启动后的页面:

巨蟒python全栈开发linux之centos6_静态文件_112

运行admin,出现下面的结果:

巨蟒python全栈开发linux之centos6_nginx_113

 

 访问hello,得到的结果是Not found

巨蟒python全栈开发linux之centos6_django_114

现在,我们需要打开hello这个函数:

from django.shortcuts import render, redirect, reverse, HttpResponse

 

巨蟒python全栈开发linux之centos6_静态文件_115

 

巨蟒python全栈开发linux之centos6_nginx_116

现在,我们想做的事情是,能否在启动项目的情况下,修改后端代码使其生效

保存,退出

这个时候,依然是加载不了的,

巨蟒python全栈开发linux之centos6_nginx_117

我们中断掉,重启加上参数就可以实现热重启了.

巨蟒python全栈开发linux之centos6_nginx_118

 

 

巨蟒python全栈开发linux之centos6_nginx_119

最后这一行代码,表示的就是开启了这样的一个功能

这时我们再次访问:

巨蟒python全栈开发linux之centos6_nginx_120

得到上边的结果:

 

现在我们修改逻辑代码:

巨蟒python全栈开发linux之centos6_django_121

巨蟒python全栈开发linux之centos6_静态文件_122

保存退出

巨蟒python全栈开发linux之centos6_django_123

这个时候已经发生改变.

 10.配置crm收集所有的crm静态文件.

总结:

  编辑项目的settings.py 写入如下参数
  STATIC_ROOT= '/opt/crmstatic'

 

巨蟒python全栈开发linux之centos6_django_124

巨蟒python全栈开发linux之centos6_静态文件_125

添加一个静态文件:

巨蟒python全栈开发linux之centos6_nginx_126

巨蟒python全栈开发linux之centos6_nginx_127

保存,退出

 

11.执行命令,收集crm所有的静态文件
python3 manage.py collectstatic

 

 

巨蟒python全栈开发linux之centos6_静态文件_128

执行,进行收集内容,也就是在复制内容

 

巨蟒python全栈开发linux之centos6_静态文件_129

132个静态文件,都会拷贝到/opt/crmstatic下面.

 

巨蟒python全栈开发linux之centos6_nginx_130

上图就是我们用到的所有静态文件了.

 我们也可以用tree命令看一下树状图,看一下目录结构:

巨蟒python全栈开发linux之centos6_静态文件_131

巨蟒python全栈开发linux之centos6_静态文件_132

我们可以将上边的文件,也就是说交给nginx处理,nginx更擅长处理静态文件.

#此时后端的配置完毕!!!!开始搞nginx 
#此时后端的配置完毕!!!!开始搞nginx
#此时后端的配置完毕!!!!开始搞nginx
#此时后端的配置完毕!!!!开始搞nginx
#此时后端的配置完毕!!!!开始搞nginx


12.配置nginx,一是支持反向代理,二是支持静态文件加载
修改nginx.conf

代码如下
#当用户访问 www.s18dnf.com的时候,就进入这个虚拟主机
location / {
uwsgi_pass 0.0.0.0:8000;
include uwsgi_params;
}

#这个location是解决crm的静态文件的问题的
location /static {
#alias参数 就是将/static转化为/opt/crmstatic ,也就找到了我们所有的静态文件
alias /opt/crmstatic;
}

先找到安装后的nginx目录,找到后,打开配置文件

巨蟒python全栈开发linux之centos6_静态文件_133

我们以第一个主机为例,修改成反向代理服务器.

巨蟒python全栈开发linux之centos6_静态文件_134

将上图中红框内的内容进行修改.

巨蟒python全栈开发linux之centos6_静态文件_135

nginx和uWSGI之间有一个unix的socket,也就是一个桥梁,支持uwsgi协议的一个请求转发.

巨蟒python全栈开发linux之centos6_静态文件_136

uwsgi_pass  应该填写公司运行的那台服务器,8000指代的是django运行的那个端口.

 include指代的是路由分发的那块.代表的是把外部信息导入进去.

8.使用uwsgi命令启动django项目
uwsgi支持热加载的启动方式命令如下
uwsgi --http :8000 --module mysite.wsgi --py-autoreload=1


uwsgi --http :8088 --module Crm_Project.wsgi
--http指定http协议启动在 8088端口
--module 找到项目第二层的目录,里面的wsgi.py文件

如果你想启动一个http页面,提供测试访问,就用--http参数


如果你结合了nginx反向代理,必须用--socket参数
uwsgi --socket :8000 --module Crm_Project.wsgi

我们在上边再写一遍笔记

我们先不做操作,先处理下边的内容

我们需要先关闭防火墙和开启nginx

巨蟒python全栈开发linux之centos6_django_137

 

 

巨蟒python全栈开发linux之centos6_nginx_138

我们再运行,访问:

巨蟒python全栈开发linux之centos6_nginx_139

我们无法访问这个页面.

巨蟒python全栈开发linux之centos6_nginx_140

 出现"无法正常访问网页的原因是:我们用的是http协议打开网页,而我们启动的却是uwsgi协议

巨蟒python全栈开发linux之centos6_django_141

还有一个是,代码串太长容易敲错,怎么处理这个问题?

由于参数过多,这里引入配置文件的概念 叫做 uwsgi.ini     my.cnf    nginx.conf 

 也就是说我们把启动文件的参数,写到一个文件中.

由于参数过多,这里引入配置文件的概念,叫做uwsgi.ini        my.cnf    nginx.conf以后还会有很多这样的配置文件
#正式启动环境在这里
#正式启动环境在这里
#正式启动环境在这里


启动crm的配置文件如下 uwsgi.ini内容如下


[uwsgi]
# Django-related settings
# the base directory (full path)
#填写项目的绝对路径(第一层路径)
chdir = /opt/Crm_Project
# Django's wsgi file
#填写crm第二层目录下的wsgi.py文件的路径
module = Crm_Project.wsgi
# the virtualenv (full path)
#填写虚拟环境的绝对路径
home = /root/Envs/nginx_crm

# process-related settings
#master代表这是一个主进程
master = true
# maximum number of worker processes
#基于uwsgi的多进程,根据cpu来优化,有人根据cpu的3倍计算
processes = 4
# the socket (use the full path to be safe

#如果你用了nginx反向代理,就填写socket参数
#如果你用了nginx反向代理,就填写socket参数
#如果你用了nginx反向代理,就填写socket参数
socket = 0.0.0.0:8000

#如果你没用nginx,想直接通过浏览器测试后端,使用http
#http = 0.0.0.0:8000

# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true

如何进入虚拟环境的绝对路径?

巨蟒python全栈开发linux之centos6_nginx_142

巨蟒python全栈开发linux之centos6_nginx_143

现在,我们需要创建一个ini文件,放在哪里是没有关系的,但是必须创建一个

 我们打开这个文件开始编辑

巨蟒python全栈开发linux之centos6_django_144

注意点:打开文件之后,不要在第一行插入东西,可能出现问题

巨蟒python全栈开发linux之centos6_静态文件_145

确认没有问题之后,我们"保存",退出

巨蟒python全栈开发linux之centos6_django_146

此时的启动方式:

uwsgi --ini  uwsgi.ini

此时通过uwsgi --ini  uwsgi.ini方式启动代码

 

巨蟒python全栈开发linux之centos6_静态文件_147

巨蟒python全栈开发linux之centos6_django_148

现在,我们启动了四个工作进程

巨蟒python全栈开发linux之centos6_django_149

此时,我们访问的是80端口,找到的是8000

下面我们进行下面的操作.

12.配置nginx,一是支持反向代理,二是支持静态文件加载
修改nginx.conf

代码如下
#当用户访问 www.s18dnf.com的时候,就进入这个虚拟主机
location / {
uwsgi_pass 0.0.0.0:8000;
include uwsgi_params;
}

#这个location是解决crm的静态文件的问题的
location /static {
#alias参数 就是将/static转化为/opt/crmstatic ,也就找到了我们所有的静态文件
alias /opt/crmstatic;
}

在另一个窗口中打开这个文件.

巨蟒python全栈开发linux之centos6_django_150

 

 这个时候,我们只需要将下图的内容修改成下面的内容:

巨蟒python全栈开发linux之centos6_nginx_151

巨蟒python全栈开发linux之centos6_nginx_152

还没有修改完毕,我们先保存退出,再查看一下.

巨蟒python全栈开发linux之centos6_django_153

运行:

巨蟒python全栈开发linux之centos6_nginx_154

不对,上边是解释器运行的,这样是可以加载静态页面的.

再次访问运行

巨蟒python全栈开发linux之centos6_nginx_155

浏览器再次访问:(显示的是内部服务错误)

巨蟒python全栈开发linux之centos6_django_156

指的是我们后台的代码错误.

巨蟒python全栈开发linux之centos6_django_157

说明,我们没有wsgi这个对象.,也就是没有找到这个文件.

 

看一下,能不能如下图这样写

 

巨蟒python全栈开发linux之centos6_静态文件_158

浏览器访问:

巨蟒python全栈开发linux之centos6_django_159

依然是这个问题:

巨蟒python全栈开发linux之centos6_nginx_160

 

 下面我们再次回到mysite进行处理

巨蟒python全栈开发linux之centos6_静态文件_161

运行:如果是google可能回家再出来,原因是缓存,现在我们换成了"火狐浏览器"

 

巨蟒python全栈开发linux之centos6_静态文件_162

 

 我们最后决定还是用谷歌进行调试一下:首先清除缓存,再访问

巨蟒python全栈开发linux之centos6_nginx_163

 

 

巨蟒python全栈开发linux之centos6_django_164

我们需要思考,丢失请求的url是怎样走的?这个问题

巨蟒python全栈开发linux之centos6_静态文件_165

我们需要配置一个static的入口进行处理,具体如何配置?

我们先找到静态文件

巨蟒python全栈开发linux之centos6_nginx_166

巨蟒python全栈开发linux之centos6_django_167

我们看一下路径:

巨蟒python全栈开发linux之centos6_静态文件_168

 

下面我们开始编辑:

巨蟒python全栈开发linux之centos6_静态文件_169

巨蟒python全栈开发linux之centos6_静态文件_170

这个时候,我们修改的内容如上图:

alias表示别名的意思,也就是将/static 换成 /opt/crmstatic

巨蟒python全栈开发linux之centos6_静态文件_171

 

 这个时候,静态文件和返向代理都可以了.

12.

我们保存退出,

 

13.重启nginx,查看反向代理效果

我们先查看nginx是否有错,然后重启nginx

 

巨蟒python全栈开发linux之centos6_django_172

报错:

巨蟒python全栈开发linux之centos6_django_173

原因,缺少了一个分号

 

巨蟒python全栈开发linux之centos6_静态文件_174

上图显示,就没有问题了.

现在我们应该如何访问?

我们直接访问80端口

巨蟒python全栈开发linux之centos6_静态文件_175

结果:

巨蟒python全栈开发linux之centos6_django_176

现在,我们只需要将ip替换成域名就可以了.

用户名:[email protected]

密码:123456

 

 

巨蟒python全栈开发linux之centos6_nginx_177

 原因,上边的重新启动的命令敲错了,我们需要的是下面的命令

巨蟒python全栈开发linux之centos6_nginx_178

这样重新启动,再次访问就可以了

 血淋淋的教训,注意这个黑框中区分大小写

 

巨蟒python全栈开发linux之centos6_django_179

 

 点击登录:

巨蟒python全栈开发linux之centos6_nginx_180

 

 这里边还有一个问题是:再次登录时会没有权限

 

注意项目要启用数据库

pymysql.err.OperationalError: (2003, “Can’t connect to MySQL server on ‘localhost’ ([Errno 111] Connection refused)”)

 

5.crm项目部署1(下面主要是我们创建虚拟环境)

day77将windows中的crm_project如何拿到linux,直接拖动是不可以的,原因:只能拖动一个,我们通过压缩包拖动

巨蟒python全栈开发linux之centos6_nginx_181

解压缩:

巨蟒python全栈开发linux之centos6_nginx_182

巨蟒python全栈开发linux之centos6_nginx_183

这个时候,我们看到了解压缩的文件

巨蟒python全栈开发linux之centos6_django_184

 我们现在需要安装虚拟环境:

先创建一个文件夹allenv,再在allenv安装virtualenvwrapper

巨蟒python全栈开发linux之centos6_django_185

巨蟒python全栈开发linux之centos6_静态文件_186

这个时候,我们就安装成功了

巨蟒python全栈开发linux之centos6_nginx_187

这个时候,我们就看到了wrapper工具了

2.学习virtualenvwrapper工具升级版
1.安装
pip3 install virtualenvwrapper
2.配置个人环境变量配置文件,每次登陆都启动virtualenvwrapper工具
vim ~/.bashrc
3.写入加载变量,使得virtualenvwrapper每次开机可使用
export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'

#添加virtualenvwrapper的参数,生成干净隔绝的环境
export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 #指定python解释器

source /opt/python36/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本


4.退出回话,重新登录,查看工具是否安装

5.学习virtualenvwrapper工具的命令
1.创建新的虚拟环境
mkvirtualenv mycrm

2.切换多个虚拟环境
workon 虚拟环境的名字

3.列出所有的虚拟环境目录
lsvirtualenv

4.进入当前激活的虚拟环境的目录
cdvirtualenv

 

巨蟒python全栈开发linux之centos6_django_188

 

 添加四个参数:

巨蟒python全栈开发linux之centos6_nginx_189

查找文件路径,和上图对应

 

巨蟒python全栈开发linux之centos6_静态文件_190

退出会话,重新登录,看一下是否生效

巨蟒python全栈开发linux之centos6_django_191

 

 再次登录,出现下边的信息

巨蟒python全栈开发linux之centos6_静态文件_192

这个时候,我们再创建虚拟环境,创建完成后,,自动进入虚拟环境

巨蟒python全栈开发linux之centos6_django_193

退出虚拟环境

巨蟒python全栈开发linux之centos6_静态文件_194

我们再创建一个虚拟环境

巨蟒python全栈开发linux之centos6_django_195

 

我们看一下有哪些虚拟环境

巨蟒python全栈开发linux之centos6_nginx_196

 下面,我们切换虚拟环境

巨蟒python全栈开发linux之centos6_nginx_197

现在我们进入mycrm虚拟环境,我们再进入Crm_Project项目

巨蟒python全栈开发linux之centos6_nginx_198

运行报错,我们查看报错

巨蟒python全栈开发linux之centos6_nginx_199

我们,我们再mycrm中安装django

 

巨蟒python全栈开发linux之centos6_nginx_200

安装完成后,我们再次运行:

巨蟒python全栈开发linux之centos6_nginx_201

报错,没有pymysql

巨蟒python全栈开发linux之centos6_静态文件_202

我们再安装pymysql在这个虚拟环境中.

巨蟒python全栈开发linux之centos6_django_203

安装完成后,我们再次运行

巨蟒python全栈开发linux之centos6_nginx_204

报错:

巨蟒python全栈开发linux之centos6_静态文件_205

这里边有一个坑,我们知道需要安装包,但是安装哪个包?

巨蟒python全栈开发linux之centos6_nginx_206

原因:

我们安装的包和模块之间不一定一致.

我们再django中找一下,见下图

巨蟒python全栈开发linux之centos6_nginx_207

巨蟒python全栈开发linux之centos6_django_208

安装成功,再次运行:

巨蟒python全栈开发linux之centos6_django_209

再次报错,见下图,没有链接mysql

巨蟒python全栈开发linux之centos6_django_210

我们需要安装mysql

巨蟒python全栈开发linux之centos6_nginx_211

查看安装,操作了哪些命令

巨蟒python全栈开发linux之centos6_nginx_212

4.还得解决crm项目运行所需的依赖环境
1.手动解决
pip3 install django==1.11.14
pip3 install pymysql
pip3 install django-multiselectfield
2.安装mysql数据库,支持crm业务
  #yum install mysql-server mysql -y
mysql服务端是 mysqld
mysql客户端有哪些?
mysql -uroot -p
pymysql
navicate
pycharm mysql驱动

安装linux的mariadb服务端
yum install mariadb-server mariadb mysql -y
#启动mysql服务端
systemctl start mariadb
#检查mysql是否启动
1.查进程
ps -ef |grep mariadb
2.查端口
netstat -tunlp |grep 3306

安装mysql

巨蟒python全栈开发linux之centos6_django_213

yum只能有一个人在用,也就是说一个人在用的时候会锁住

 

巨蟒python全栈开发linux之centos6_静态文件_214

此时安装的是服务端

 已经安装成功:

巨蟒python全栈开发linux之centos6_静态文件_215

下面我们登录,默认是没有密码的,但是报错,见下图:

巨蟒python全栈开发linux之centos6_nginx_216

我们应该先启动"mysql服务端"

 注意:虚拟环境不会对操作系统产生影响

激活虚拟环境,只会影响python解释器不会影响其他的内容:

巨蟒python全栈开发linux之centos6_django_217

退出虚拟环境

巨蟒python全栈开发linux之centos6_静态文件_218

我们现在不确定服务端的名字是什么,所以协程mysql*

巨蟒python全栈开发linux之centos6_django_219

还是取消吧

巨蟒python全栈开发linux之centos6_静态文件_220

 我们安装mariadb

 

巨蟒python全栈开发linux之centos6_nginx_221

巨蟒python全栈开发linux之centos6_nginx_222

得到下图的mariadb-server才是服务端

巨蟒python全栈开发linux之centos6_静态文件_223

选择y

巨蟒python全栈开发linux之centos6_django_224

下面,我们启动服务端

巨蟒python全栈开发linux之centos6_django_225

再查一下mariadb的进程

 

巨蟒python全栈开发linux之centos6_nginx_226

查找mariadb的端口查找不到

巨蟒python全栈开发linux之centos6_静态文件_227

 

 查找端口是可以的

巨蟒python全栈开发linux之centos6_静态文件_228

 

巨蟒python全栈开发linux之centos6_静态文件_229

这个时候,就进入这个MariaDB

巨蟒python全栈开发linux之centos6_nginx_230

巨蟒python全栈开发linux之centos6_django_231

 

巨蟒python全栈开发linux之centos6_静态文件_232

 原因:我们需要激活虚拟环境:

巨蟒python全栈开发linux之centos6_django_233

依然报错,如下

巨蟒python全栈开发linux之centos6_静态文件_234

在windows中可以登录数据库

巨蟒python全栈开发linux之centos6_django_235

 

 

巨蟒python全栈开发linux之centos6_django_236

下图是默认地址 ,-h是指定主机的

巨蟒python全栈开发linux之centos6_静态文件_237

巨蟒python全栈开发linux之centos6_django_238

巨蟒python全栈开发linux之centos6_静态文件_239

得到的数据库就在windows下边的system32文件夹下边

巨蟒python全栈开发linux之centos6_django_240

我们只需要将数据库拖动到linux中即可

巨蟒python全栈开发linux之centos6_django_241

思考,如何用这个数据?

我们以前都是写入,但是这次我们写出

巨蟒python全栈开发linux之centos6_静态文件_242

 下图中,输入命令"报错"

 

巨蟒python全栈开发linux之centos6_nginx_243

再次登录查看一下,没见到crm,视频中看到了crm

巨蟒python全栈开发linux之centos6_django_244

下面,我们退出

巨蟒python全栈开发linux之centos6_nginx_245

再次启动,加上IP和端口

巨蟒python全栈开发linux之centos6_django_246

 

巨蟒python全栈开发linux之centos6_静态文件_247

依然报错,原因是,我上边输入了windows的密码,其实这个导入不需要输密码.再次登录账户和密码,看到结果

第一种是,我输入windows中的密码时候的错误,第二种是我没有输入密码时候的错误,第二种报错没有问题(这是平台的问题)

 

巨蟒python全栈开发linux之centos6_nginx_248

没有导入之前的数据库

巨蟒python全栈开发linux之centos6_静态文件_249

这时候的数据库,我们登录数据库的账户和密码

我们看到了crm这个密码

巨蟒python全栈开发linux之centos6_静态文件_250

退出数据库,我们再次运行:

巨蟒python全栈开发linux之centos6_静态文件_251

下面重新运行,一定要加上ip和端口号

巨蟒python全栈开发linux之centos6_django_252

显示不出来,原因是没有关闭防火墙,下面我们关闭防火墙,再次运行

巨蟒python全栈开发linux之centos6_静态文件_253

windows上很难关注到这些问题,当放到linux服务器上才会发现这些问题

出现这个问题:

巨蟒python全栈开发linux之centos6_静态文件_254

巨蟒python全栈开发linux之centos6_django_255

我们需要编辑"settings.py",见上图,找到allow_host

巨蟒python全栈开发linux之centos6_静态文件_256

巨蟒python全栈开发linux之centos6_django_257

巨蟒python全栈开发linux之centos6_django_258

加上一个*,然后我们保存退出

巨蟒python全栈开发linux之centos6_nginx_259

这个时候,我们再次启动

再次运行,就出现了下图:

巨蟒python全栈开发linux之centos6_django_260

CDN服务器:

 内容分发网络,CDN是构建在网络之上的内容分发网络.依靠部署在各地的边缘服务器通过中心平台的负载均衡,内容分发

 

 

6.crm项目部署2

流程梳理:

巨蟒python全栈开发linux之centos6_nginx_261

 

 

巨蟒python全栈开发linux之centos6_nginx_262

巨蟒python全栈开发linux之centos6_django_263

巨蟒python全栈开发linux之centos6_nginx_264

巨蟒python全栈开发linux之centos6_django_265

巨蟒python全栈开发linux之centos6_静态文件_266

巨蟒python全栈开发linux之centos6_nginx_267

 

7.crm项目部署3

 是否有一种工具可以帮助我们进行管理,从手动管理到自动管理?(马蜂窝也在用)

巨蟒python全栈开发linux之centos6_nginx_268

14.配置supervisro工具
注意要退出虚拟环境
注意要退出虚拟环境
注意要退出虚拟环境
原因:我们装这个环境,不仅仅是针对python的应用
我们的目的是管理所有的应用,所以,我们需要装在物理环境之下,需要先退出虚拟环境再安装
1.安装easy_install
pip3是python3的软件包管理工具
easy_install 是python2的软件包管理工具
安装这个虚拟工具,也就是easy_install
yum install python-setuptools

2.安装supervisor
easy_install supervisor

3.创建supervisor的配置文件

echo_supervisord_conf > /etc/supervisor.conf

4.修改supervisor的配置文件,添加启动uwsgi的命令

supervisor其实就是帮咱们执行了,需要手动执行的命令而已
vim /etc/supervisor.conf
写入如下内容,在最底部写
[program:s18crm]
command=/root/Envs/nginx_crm/bin/uwsgi --ini /opt/Crm_Project/uwsgi.ini
stopasgroup=true
killasgroup=true


5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出
5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出
5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出
5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出

supervisord -c /etc/supervisor.conf #这是启动supervisor服务端命令

supervisorctl -c /etc/supervisor.conf #这是supervisor客户端管理命令

6.学习supervisor的命令

status s18crm #查看状态
start s18crm #启动任务
stop s18crm #停止任务

start all
stop all #启停所有的任务

感谢cctv

巨蟒python全栈开发linux之centos6_django_269

退出虚拟环境之后,我们开始安装,

 下面看一下,supervisor是否能够在python3里边能够安装.

pip3 install supervisor

官网太慢,我们可以直接使用豆瓣的源下载

pip3 install -i https://pypi.douban.com/simple supervisor

 

巨蟒python全栈开发linux之centos6_静态文件_270

上图中,我已经成功安装了这个环境,但是老师当时在python3的环境中安装失败了.老师的截图见下图

巨蟒python全栈开发linux之centos6_静态文件_271

 

 

巨蟒python全栈开发linux之centos6_静态文件_272

巨蟒python全栈开发linux之centos6_django_273

巨蟒python全栈开发linux之centos6_nginx_274

巨蟒python全栈开发linux之centos6_静态文件_275

打开上边的文件,输入大写的G,回到底部输入

 注意:上边也有supervisor其实就是帮助我们执行了,需要手动执行的命令而已

 

 原来的启动方式:(必须来自虚拟环境底下)

巨蟒python全栈开发linux之centos6_nginx_276

巨蟒python全栈开发linux之centos6_nginx_277

巨蟒python全栈开发linux之centos6_静态文件_278

 

 

巨蟒python全栈开发linux之centos6_静态文件_279

保存退出:

巨蟒python全栈开发linux之centos6_nginx_280

巨蟒python全栈开发linux之centos6_静态文件_281

启动虚拟环境,查看是都有其他进程,答案是没有的

下面我们开始启动

 

巨蟒python全栈开发linux之centos6_静态文件_282

这个时候s18crm所处的状态是运行中的状态.

 主进程是6274

 

在第二个窗口打开,查看

巨蟒python全栈开发linux之centos6_django_283

巨蟒python全栈开发linux之centos6_静态文件_284

第一个是主进程是6274,和第一个窗口正好对应起来.

 

 这个时候,我们只需要supervisor管理uwsgi,不需要手动管理了

 

 停止操作(我们在窗口1进行的操作)

巨蟒python全栈开发linux之centos6_django_285

状态操作

 我们在窗口2查看一下

巨蟒python全栈开发linux之centos6_nginx_286

这个时候已经关闭了

巨蟒python全栈开发linux之centos6_django_287

我们再启动所有的内容

巨蟒python全栈开发linux之centos6_静态文件_288

现在,我们通过第二个窗口查看又起来了

 

巨蟒python全栈开发linux之centos6_静态文件_289

退出

 访问不了页面的原因是没有启动nginx,所以需要启动nginx

巨蟒python全栈开发linux之centos6_静态文件_290

再次访问就可以访问了

 

总结三大要素:重启nginx//重启防火墙//重启数据库

 账号:[email protected]

密码:123456



标签:文件,nginx,python,centos6,全栈,虚拟环境,--,我们,uwsgi
From: https://blog.51cto.com/u_11182673/5968348

相关文章

  • Python super()参数详解
    这里记录一下python中的super()的两个参数需要注意的关键点。具体来说如以下代码所示:#子类B父类AclassB(A):def__init__(self):super(B,self).__init......
  • 【编程基础】正则表达式基本使用及在Python中使用正则表达式匹配内容
    前言当接触一个新知识点或者技术时,只要问完哲学中的三大问题,基本就对这个知识点或者技术有大致的了解,这也是我学习一个新技术常用的方法,那到底是哪三大问题呢?是什么?怎么做,为......
  • 【编程实践】出行无忧,利用Python爬取天气预报
    前言天气预报就是应用大气变化的规律,根据当前及近期的天气形势,对某一地未来一定时期内的天气状况进行预测。它是根据对卫星云图和天气图的分析,结合有关气象资料、地形和季节......
  • Python开发环境
    以下为阿里算法平台的推荐版本为:python==3.6tensorflow==1.13.1(cpu&gpu)torch==1.5.0prophet==1.0.1cuda==10.0tfplus==1.0.9penrose=2.0.0常见包安装:Python......
  • 如何使用ChatGPT来自动化Python任务
    1.概述最近,比较火热的ChatGPT很受欢迎。今天,笔者为大家来介绍一下ChatGPT能做哪些事情。2.内容ChatGPT是一款由OpenAI开发的专门从事对话的AI聊天机器人。它的目标是让A......
  • 从一道CTF题学习python字节码到源码逆向
    概述:该题来源为2022爱春秋冬季赛ezpython,难度不是很大刚好适合我这样的萌新入门题目:30LOAD_CONST1(204)3LOAD_CONST......
  • python中pandas操作excel数据
    python自动化办公领域,pandas处理excel表格非常优秀,今天初次使用pandas,测试一下。#coding:utf-8importpandasaspdfile_path=r"G:\41个设备.xlsx"data=pd.read_excel......
  • 推荐-centos7安装高版本python3.10
    前言如果在centos7上编译安装python3.7以上版本,ssl功能会出问题,因为python3.7以后需要更高版本的openssl支持,这样的话,就需要提前编译安装高版本的openssl,比如1.1.1系列,这......
  • 不用描述符,不算懂 Python
    在日常的编码中,我们应该使用Python的描述符,来使代码更具有单一职责原则,也就是SRP(SingleResponsibilityPrinciple)原则,如果你还没有用过描述符,那快来看看怎么用吧,不然就......
  • Python学习笔记--SQL数据
    SQL本人受到Java的影响,数据库的话,就不按照教程走了,我就直接使用的是Navicat软件的数据库啦!SQL支持注释:两种单行注释(--和#),和一种多行注释(/**/)基础的使用语法:使......