巨蟒python全栈开发linux之centos7

1.crm项目部署回顾(小BOSS)

crm部署  nginx+uwsgi+django+mysql

nginx         前端

uwsgi+django      后端

mysql        数据支撑

crm是一个单体的应用,前端代码和后端代码,融合在了一起.这种需要会布置

linux默认终端有7个

按住ctrl + alt 从 f1-f7是7个终端 f1是图形化终端,f2-f7是黑屏
我们用的是xshell远程连接,连接到linux,可以有N个终端

我们重新登录服务器,

注意.docker不要随便停人家的服务,这很危险.

写代码,提供服务才是产品,才能够赚钱.linux命令一定要学熟

领导给了服务器账户和密码,要登录服务器,看进程,看端口,看具体跑了什么东西,才能明白服务器的作用

3306是一台服务器.ps -ef nginx代表web服务器的服务器

nginx web server  学名是服务器,也就是linux用的web软件

命令看下ps -ef

每个任务对应一个窗口,

 web  `   对应80

django  对应8000

数据库  3306

如果端口改变了,我们需要认识后边的Program name

老师想要尽可能这个过程中发生了什么,从无到有.

如何快速的进行一步?

linux默认终端有7个 
按住ctrl + alt 从 f1-f7是7个终端   f1是图形化终端,f2-f7是黑屏
我们用的是xshell远程连接,连接到linux,可以有N个终端

1.先去启动后端,uwsgi + django 
2.先准备项目  xftp  lrzsz  
3.先准备虚拟环境
4.安装uwsgi 
5.用uwsgi启动crm项目
    -一是命令 +  参数   (不建议使用,请用配置文件 uwsgi.ini)
        uwsgi --http  :8000 --module  crm.wsgi  
        解释:--http  就是直接可以通过浏览器访问,不通过nginx
        uwsgi --socket :8000 --module crm.wsgi 
        解释:  --socket 是必须用nginx去反向代理,才能找到,浏览器直接访问找不到

No application,这个错误是,必须要进入项目的第一层目录,可能在家目录下面可能执行

下面我们用uwsgi.ini进行配置

我们需要要这个文件uwsgi.ini启动,下面我们打开这个文件看一下文件内的配置

配置文件,就如上图那么多.

 

现在,如果我们想要启动这个进程,必须找到第一层,在这个目录下面启动

回车,发现启动4个进程

 

我们发现,上边的进程已经存在了.

 出现如下图的问题:

解决方案见下图.

强制杀死,两个进程

 

这个时候,启动了4个工作进程.

 我们现在结束窗口1这个运行

运行第二个窗口,查看进程

再次在窗口1中运行:

在窗口2中再次查看

查看一下端口

这个时候,我们能够查看到这个端口uwsgi是8000端口

 

这个时候我们查看到的是8000端口访问不了,

我们关闭防火墙试一下

依然访问不了

5.用uwsgi启动crm项目
    -一是命令 +  参数   (不建议使用,请用配置文件 uwsgi.ini)
        uwsgi --http  :8000 --module  crm.wsgi  
        解释:--http  就是直接可以通过浏览器访问,不通过nginx
        uwsgi --socket :8000 --module crm.wsgi 
        解释:  --socket 是必须用nginx去反向代理,才能找到,浏览器直接访问找不到

    正确的方式:
        二,用配置文件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来优化 
                processes       = 4
                # the socket (use the full path to be safe

                #如果你用了nginx反向代理,就填写socket参数
                #如果你用了nginx反向代理,就填写socket参数
                #如果你用了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
View Code
        
        三,通过配置文件,启动crm,启动后端!!!!
        uwsgi --ini uwsgi.ini 
        
        四。关闭防火墙    iptables -F  #清空规则
        systemctl stop firewalld  #关闭防火墙服务
        systemctl disable firewalld  #禁止开机自启
 
        五,收集crm的静态文件
        修改settings.py 写入
        STATIC_ROOT= '/opt/crmstatic'

        六:用命令收集静态文件
        python3 manage.py collectstatic

 

这样我们就可以查看这个防火墙,这时候就仅仅有3条列了.看见这三行代表防火墙已经关闭了

我们再次刷新一下网址,

服务端得到的地址

无效请求块的大小 ,

我们现在是把后盾啊跑出来了.

2.安装这个数据库

2.准备数据库,启动
#保证mariadb已经安装了  
yum install mariadb-server mariadb -y 

systemctl start mariadb   #启动数据库

没有任何的提示,就代表最好的提示

下面,我们启动数据库

我们也可以验证这个事情,查看的命令是  systemctl status mariadb

这个时候,我们发现,正在运行了

 

这个时候,我们发现了这个命令包括8000端口的uwsgi和3306端口的mysql都已经启动了

我们可以登录mariadb看一下

登录,没有密码,查看一下数据库

退出

3.准备nginx,进行反向代理
    1.安装nginx 
    2.修改nginx的配置文件  nginx.conf 
    3.修改代码如下,截取的片段代码如下,参照着修改
    
upstream  mycrm {
    server  0.0.0.0:8000;
}
    #nginx的虚拟主机参数
    server {
        #第一个虚拟主机,监听的80端口
        listen       80;
        #填写的是你自定义的域名 或者服务器的ip地址,或者写locathost
        server_name  192.168.226.128;

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

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

这个时候,我们再准备nginx

打开文件:

我们需要改的是连个虚拟主机

保存,退出

我们找到了这个参数逇位置

现在也就是一个普通的文本uwsgi_params,包含在nginx.conf肯定不行的

 下面我们再来编辑刚才的文件:

只有上边的一点点代码

上边代表解决静态文件问题的文件.

 只要配置了上图红框内的内容,nginx就会返回静态文件相关的内容.

uwsgi_pass代表转发给一个单点机器

下面我们结合一下负载均衡结合地址池

在这里,我们需要写上多个地址.

 这个时候,下面我们需要修改一下下面的uwsgi_pass的写法

整体写法见下图

也就是负载均衡结合反向代理

上边是:定义负载均衡池,写入你的后端地址

 下面的是:转发给负载均衡池,名字是自定义的叫mycrm

 保存退出.

 一个问题:没有做静态文件收集

补充:

        五,收集crm的静态文件
        修改settings.py 写入
        STATIC_ROOT= '/opt/crmstatic'

        六:用命令收集静态文件
        python3 manage.py collectstatic

修改一下这个settings.py

这个地方,最好还是用虚拟环境,然后输入收集命令.

输入yes,只有熟练了,才会

 

其实我们什么事情,都没有做.所以是0个文件.

下面是一点点步骤和一些片段代码:

3.准备nginx,进行反向代理
    1.安装nginx 
    2.修改nginx的配置文件  nginx.conf 
    3.修改代码如下,截取的片段代码如下,参照着修改
upstream mycrm { server
0.0.0.0:8000; } #nginx的虚拟主机参数 server { #第一个虚拟主机,监听的80端口 listen 80; #填写的是你自定义的域名 或者服务器的ip地址,或者写locathost server_name 192.168.226.128; #当用户访问 www.s18dnf.com的时候,就进入这个虚拟主机 location / { uwsgi_pass http://mycrm; include uwsgi_params; } #这个location是解决crm的静态文件的问题的 #只要请求url是192.168.226.128/static/admin/admin.css location /static { #alias参数 就是将/static转化为/opt/crmstatic ,也就找到了我们所有的静态文件 alias /opt/crmstatic; }

整个是自上而下找代码.

 ip是通过自上而下寻找,如果是4个主机,我们需要通过域名进行区分.

目的就是找到,功能性的虚拟主机.

nginx修改完成后,我们需要在平滑加载一下

报错,我们重新打开看下

这个时候,我们去掉http看一下

依然报错,

多了一个括号

应该是少了一个分号;

老师测试的时候,出现的一个问题

这个错误是需要启动nginx

老师检查了一下端口,这时候没有开启80端口,80代表的是nginx

上边这个我们需要开启nginx服务

这个时候再次访问,依然访问不到,什么情况

流程图:

用户=>请求192.168.34.128(域名www.pian.com:80)==>nginx(通过uwsgi_pass进行负载均衡)

 ==>(uwsgi  8000端口)

一次我们访问的是80端口

访问80端口,得到下图:

没有访问的权限,但是进入到了django了

下面我们进入admin,访问下面的地址

这个时候,静态页面也就出来了

我们可以直接访问这个地址,得到下面的页面,下面我们需要结合域名和ip进行处理

2.supervisor的坑(接着上边的第一个)

4.还差一个supervisor 
    1.下载安装(看昨日笔记)
    2.修改supervisor的配置文件
    写入任务
    3.这里有个坑
    
    我们用supervisor,其实就是帮咱们执行了一下启动uwsgi的命令而已
    
    4.注意后台不能启动过uwsgi

 我们需要导出一个文件

昨天我们已经操作了,所以上边就省略了

此时我们开始编辑supervisor.conf

 在最底部写入这样的一个任务

 如果路径发生了变化,第一个要修改成自己的uwsgi的绝对路径

以及自己的配置的绝对路径.

注意,这里的一个坑.

如果后端已经开了一个uwsgi,再用supervisor启动,当然是启动不了的.

下面我们开始用匹配supervisor的一个命令

这个时候代表已经启动了

 我们再启动一下supervisor,看到熟悉的报错界面,见下图,应该看到的是running

也就是我们已经开启了一个8000,现在我们想再用supervisor再开启一个8000,肯定会报错的.

我们现在应该怎么办?干掉原来的8000

还有一个问题是supervisor跑起来了,一直开一个小窗口在这个跑,能不能在后台让他跑?

手动起这个程序,会需要一个窗口,但是用supervisor就会在后台起这个.什么叫后台起?就是不占用一个窗口,在程序后边启动.

我们先退出左边的程序.

 

查看端口

筛选出supervisor

我们干掉之后,重新来一次  kill  -9  6273  强制杀死

我们看一下man手册

 

没找到,可以通过linux 在线命令查看

kill -9  表示强制杀死的一个信号

 干掉之后,重新执行下面的命令

这个时候成功跑起来了(刚才电脑卡了一下,未来可能存在一些问题,注意下).

这个时候,成功访问.

上图是我们停止服务,再看一下网页

 

 

再开启一下,

3.路飞学城部署

vue+nginx+uwsgi+django+mysql+redis

redis(就是一个key - value键值型数据库,缓存型数据库,内存型数据库),mysql是一个关系型数据库

vue + django 前后端分离的项目 

js  html css  bootstrap  jquery  

点击进入"路飞学城",

点击python//linux//go只是实现单独的不刷新,类似于ajax局部刷新

名字叫做vue+django  前后端分离的项目  这种也需要会布置

上图是nginx.conf的一个配置文件

 部署方法如下:

 

首先,我们建立一个统一管理的目录.s18luffy

直接在linux下载

 

上边是解压的命令

因为使用mac结尾的所以出现了这个图标.

我们删除这个文件.

 我们每次开一个新项目,就需要开启一个新的虚拟环境

这个过程需要一点点时间.

 

我们看到,上图目前是一个干净的虚拟环境.

下图先处理的是后端的uwsgi后端的部署.

2.后端uwsgi部署
1.下载路飞代码
wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip
2.安装新的虚拟环境,解决环境依赖问题 ,可以用requirements.txt解决依赖问题
vim requirements.txt #打开,编辑写入如下模块依赖包信息

certifi==2018.11.29
chardet==3.0.4
crypto==1.4.1
Django==2.1.4
django-redis==4.10.0
django-rest-framework==0.1.0
djangorestframework==3.9.0
idna==2.8
Naked==0.1.31
pycrypto==2.6.1
pytz==2018.7
PyYAML==3.13
redis==3.0.1
requests==2.21.0
shellescape==3.4.1
urllib3==1.24.1
uWSGI==2.0.17.1

3.安装这个文件 requirements.txt
pip3 install -i https://pypi.douban.com/simple -r requirements.txt

4.使用uwsgi去启动路飞学城后端
使用uwsgi.ini配置文件方式启动,内容如下
[uwsgi]
# Django-related settings
# the base directory (full path)
#填写项目的绝对路径(第一层路径)
chdir = /opt/s18luffy/luffy_boy
# Django's wsgi file
#填写crm第二层目录下的wsgi.py文件的路径
module = luffy_boy.wsgi
# the virtualenv (full path)
#填写虚拟环境的绝对路径
home = /root/Envs/s18luffy

# process-related settings
# master
master = true
# maximum number of worker processes
#基于uwsgi的多进程,根据cpu来优化
processes = 4
# the socket (use the full path to be safe

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

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

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

5.用supervisor也去管理路飞的后台
[program:s18luffy]
command=/root/Envs/s18luffy/bin/uwsgi --ini /opt/s18luffy/luffy_boy/uwsgi.ini
stopasgroup=true
killasgroup=true

首先,我们创建这样的一个文本文件,再打开,写入要安装的包.

记得要空一行.

保存退出.

上图是,我们先看一下要安装的包以及,这个文件夹下面的内容.

下面,我们开始安装

这个时候一行一行读取下载.

这时候,我们需要配置第四步.

安装完成之后,我们查看一下安装了哪些包

下面我们测试一下能不能跑起路飞学城来?

 现在,我们调用的是wsgi这个模块,这个模块的性能很低

上边红色的是,我们没有进行数据库迁移,我们先退出来,解决的这个问题.

 上图当前处于运行状态,我们当然不能用0.0.0.0:9999进行访问.

 

上图,我们返回的仅仅是json字符串.

也就是json化的数据,也就是发送给前端的vue.

后端给前端发送数据,前端在渲染,相关的内容

这个时候,我们得到的知识一些json的一些数据.

 这个时候,我们返回的只是一些json的数据,没有什么意义

 

我们需要的是,通过json返回的数据渲染前端的内容.

 现在,我们访问这个前端也就没有了任何的意义.

 

 前端得到的是json数据是没有意义的.我们该如何处理?

 

 下图是第一层路径

 

第二层路径也是需要修改的,注意我们说的需要修改的文件是启动文件uwsgi.ini

需要修改的地方:

1.项目的绝对路径,第一层路径
2.第二层路径下的wsgi.py文件
3.填写虚拟环境的绝对路径
4.修改端口
socket=0.0.0.0:9000

虚拟环境如何寻找?存放虚拟环境的位置,见下图

 现在,我们需要考虑端口是否会冲突

这个时候,我们看到后端端口,8000正在跑.

cd -  #回到上一次的工作目录

我们再创建一个启动文件.

 编辑这个文件,复制上边的内容:

确认没有问题,保存退出

 下面我们启动文件

 

下图中,确保没有error信息,后端就跑起来了

下面我们再用supervisor在启动一下

 我们不能手动启动,我们用supervisor试一下,

退出之后,我们编辑一下下面的supervisor内容.

进入之后,如何复制4行?光标停在途中所示的绿色位置然后  4yy  就能复制了四行,复制就  p    一下

 环境里边的uwsgi和配置文件里边的uwsgi都需要绝对路径

dd是删除一行的命令

然后,我们保存退出.

上图是查看执行uwsgi的绝对路径

 我们启动文件的路径:见下图

然后我们运行这条命令:

 因为我们修改了下图所示的supervisor.conf,所以我们需要处理一下

我们先杀死关于supervisor的内容.

 这个时候已经杀死了supervisor,

思考:如果杀不死怎么办?

杀死这个进程可能慢一些,不要着急

 这个时候,我们再启动一下supervisor

 

出现上边现象是因为,我们把两条绝对路径给注释掉了

 这个时候,我们再重新启动一下:

这个时候,我们看到了s18crm和s18luffy都运行了

 

这个时候,我们再次打开这个配置文件.

复制出来:

[program:s18luffy]
command=/root/Envs/s18luffy/bin/uwsgi  --ini  /opt/s18luffy/luffy_boy/uwsgi.ini
stopasgroup=true
killasgroup=true

后端现在搞定了,我们开始搞前端

1.前端vue部署,虽然没有学,但是思路是有的,如何完?

2.路飞学城部署 vue + nginx + uwsgi + django + mysql + redis(就是一个key - value型数据库,缓存型数据库,内存型数据库)

vue + django 前后端分离的项目 

js  html css  bootstrap  jquery  


部署方法如下
1.前端vue部署 
1.下载vue代码,解压缩
wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip

unzip 07-luffy_project_01.zip 


2.配置node环境,去打包编译vue代码

下载node的代码包
    wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz
解压缩node代码包
tar -zxvf node-v8.6.0-linux-x64.tar.gz
配置node的PATH环境变量即可
修改PATH生效即可

3.验证node是否正确配置(node就是如同python解释器   npm就是如同pip软件包管理工具)
node -v 
npm -v   

4.修改vue的代码文件
因为vue需要向后台发起请求,找到uwsgi
我们的架构是将uwsgi隐藏在nginx后面

所有,vue(端口80)首先找的是nginx(反向代理,端口是9000),然后nginx(反向代理,端口是9000)反向代理给uwsgi (后端地址,9001) 

修改方式如下
api.js路径如下/opt/s18luffy/07-luffy_project_01/src/restful
#这里更改你自己的服务器ip地址
sed -i  "s/127.0.0.1:8000/192.168.226.128:9000/g"  api.js 

    sed 是linux处理字符串的命令
    -i 是将结果替换到文件
    "s/127.0.0.1:8000/192.168.226.128:9000/g"   #解释  s是替换模式  /你想替换的内容/你想替换的结果/   g是全局替换 
    api.js  你想修改操作的文件
    
    
    
5.进行打包vue,生成静态文件夹 dist
确保你在vue的代码文件夹 
npm install  #解决vue代码所需的模块依赖  

npm run build    #进行编译打包


6.当vue打包正确完成后,生成一个dist静态文件夹,此时就给丢给nginx去处理啦!!!

首先,前端代码需要下载下来,

前端也是需要下载一个压缩包.

即使,我们不会写python和node,依然可以做好这个事情.

前面,我们先保存退出.

先回到/opt/下面,再回到我们的项目下面,s18luffy下面.

我们,现在需要的是对前后端的代码进行统一管理.

现在我们开始下载:

先查看一下,然后我们再解压缩

 解压缩:

这个时候node环境就出来了

 进入node环境,bin认识

这个时候,我们发现node和npm已经提供好了

 有人已经帮我们做好了,我们只需要配置环境变量就可以了

如何将上边的路径加入环境变量?

然后,我们找到,

 PATH,添加内容到路径内.:

保存,退出.

执行下图的命令,使其生效

 下面我们看一下具体的内容.版本

node是解释器,npm指的是pip那个包

查看版本的目的:

3.验证node是否正确配置(node就是如同python解释器   npm就是如同pip软件包管理工具)
node -v 
npm -v   

下面,我们进入vue目录下面的代码框架的目录

vue的代码需要打包,编译的

 vue首先找到nginx,nginx用的是虚拟主机配置的,通过 两个server虚拟主机实现的功能,

 vue最终生成的是静态文件.

部署vue的流程:

1.用户访问域名ip,首先进入的是nginx,看到的是vue的静态页面index.html

2.当我们用户在浏览器,点击路飞页面的课程列表,就向后台的django发起post请求,比如0.0.0.0:9000(django和uwsgi)

3.uwsgi也就是后台,接收到请求,响应请求,返回一个json数据

4.vue接收到数据,进行渲染.也就是看到了课程信息了.

但是,我们在django前面加上了nginx,也就是反向代理,为了让用户不直接访问后台,为了保护后台,

不要http找到django,而用的是socket找到django,

再总结一下,

vue  发起数据请求,请求流程是

vue=>nginx=>反向代理    丢给uwsgi,

所以,vue找到的还是nginx

 

注意,nginx和uwsgi各自占用一个端口.

 9001指的是后端django启动的一个端口.

捋一下:

8000指的是crm的uwsgi.

9000指的是第二个虚拟主机的9000

9001指的是后端的uwsgi的9001

80虚拟主机1,是首先打交道的虚拟主机,作用是:用于返回vue页面的一个东西.

虚拟主机可以实现web服务器的一个作用.

虚拟主机用于返回静态页面的作用,虚拟主机2是反向代理的作用.

接收前端的一个反向列表.看一下python的课程有哪些,

首先传递到nginx,然后再传到uwsgi,

虚拟主机是通过server标签实现的,

当我们在路飞首页,点击课程列表的时候,vue发起一个post请求,请求格式是  服务器ip:9000  反向代理的作用端口

然后,nginx的9000端口,又向后台的uwsgi 9001转发了请求,

下面我们开始继续进行:(站在运维的角度思考问题)

我们看到有一个js文件.

打开这个文件:

 

我们应该替换成服务器IP以及虚拟主机2的ip

 没有运维就是需要自己需要干

 里边信息那么多,肯定不可能自己一个一个修改的

用sed,用于处理字符串的一个命令

最后的g,代表全局替换

直接回车,就全部修改了

 

现在,只是返回这样的结果,并没有生效

 我们加上-i表示替换结果,写入到文件.

回车,再打开一下,发现全部都修改完成了.

 

sed是linux处理字符串的命令

-i是将结果替换到文件

    sed 是linux处理字符串的命令
    -i 是将结果替换到文件
    "s/127.0.0.1:8000/192.168.226.128:9000/g"   #解释  s是替换模式  /你想替换的内容/你想替换的结果/   g是全局替换 
    api.js  你想修改操作的文件
    
    
    
5.进行打包vue,生成静态文件夹 dist
确保你在vue的代码文件夹 
npm install  #解决vue代码所需的模块依赖  

npm run build    #进行编译打包


6.当vue打包正确完成后,生成一个dist静态文件夹,此时就给丢给nginx去处理啦!!!

56.需要进入那个源码处理

56.我们要执行命令的路径

现在,我们开始执行安装,注意必须在这个目录下面才能执行下面的两条命令

warning不重要,error重要.不行.

这个安装速度是取决于网速

npm install  #解决vue代码所需的模块依赖//取决于网速  

npm run build    #进行编译打包//取决于机械硬盘转的速度

 

编译打包完成之后,会出现一个dist文件,我们进入这个dist

一个是主页,nginx和static静态文件

6.当vue打包正确完成后,生成一个dist静态文件夹,此时就给丢给nginx去处理啦!!!

 

 

 

目前nginx.conf已经和crm结合了.

这里,我们先拷贝出一份nginx.conf,防止该乱了

 

这样我们心里就有数了

此时我们编辑

我们先开一个窗口,找到相应的路径

 

不要忘了加上分号

这个时候,我们需要加上上边的两行参数.

先不搞反向代理,先保存退出

这个时候,我们需要重新读取nginx

这个时候,我们访问不到

为什么是空的?报错?

 我们看一下架构图

上图,我们得到vue代码的位置

这个时候,我们发现有两个入口

之前,配置crm的static,找的是crm里边的,现在不找这里边的静态文件了.

我们干掉,下面的静态文件

 保存,退出,重新读取这个文件

 

重新加载这个文件.

再次刷新,我们得到下面的界面:

 

 之所以出现上图中报错的原因是,我们的虚拟主机还没有配置

我们再次编辑

我们再次需要配置第二个虚拟主机

 上图是我们需要配置反向代理的虚拟主机,保存退出

再次重启nginx

 

 也就是上图中需要写成9001

现在我们进入supervisor

 

 先停止,再启动,再次查看一下,这个时候,已经出来了

 可能出现错误的原因,排错步骤,重启,重新加载

 确保9000是nginx的

9001是uwsgi的

 这个时候就刷新出来了.

6379redis

alex &&alex3714

 现在是可以登录了

  存在问题,加入不了购物车

报服务器端错误

 现在我们启动的是redis请求

 我们需要安装一个redis数据库,下面我们需要安装redis数据库

 

我们发现是sqlite3,代码需要自己写

虚拟环境不会影响yum的

现在,我们需要启动redis,然后查看一下端口

 我们发现6379redis服务器已经启动了  redis-server是服务端//redis-cli是客户端

这个时候,我们已经进入数据库了

上图的命令,表示已经通了

 现在,我们再次运行,就会显示加入购物车成功了

这个时候购物车里边就有东西了

再加入一条linux数据,回到服务端进行测试一下

这个时候就有了2条数据了.这样就成功完成了.

原文地址:https://www.cnblogs.com/studybrother/p/10657658.html