Lyf凤

靡不有初,鲜克有终

扩大
缩小

路飞学城,前后端分离项目部署--day80

今日任务

1.crm部署 nginx + uwsgi + django + mysql

crm是一个单体的应用,前端代码和后端代码,融合在了一起

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去反向代理,才能找到,浏览器直接访问找不到

正确的方式:
二,用配置文件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

三,通过配置文件,启动crm,启动后端!!!!
uwsgi --ini uwsgi.ini

四。关闭防火强
iptables -F #清空规则
systemctl stop firewalld #关闭防火墙服务
systemctl disable firewalld #禁止开机自启

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

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

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

systemctl start 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;
}


4.还差一个supervisor
1.下载安装
2.修改supervisor的配置文件
写入任务
3.这里有个坑

我们用supervisor,其实就是帮咱们执行了一下启动uwsgi的命令而已

4.注意后台不能启动过uwsgi

 

 

 

 

 


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生效即可
vim /etc/profile ==>添加 /opt/s18luffy/node-v8.6.0-linux-x64/bin 到PATH中
source /etc/profile

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路径如下 cd /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 -i "s/127.0.0.1:8000/172.16.132.153:9000/g" api.js #全局替换指令 改为我自己的IP后的

sed 是linux处理字符串的命令
-i 是将结果替换到文件
"s/127.0.0.1:8000/192.168.226.128:9000/g" #解释 s是替换模式 /你想替换的内容/你想替换的结果/ g是全局替换
api.js 你想修改操作的文件



5.进行打包vue,生成静态文件夹 dist ==>切记:nginx中的下面的代码要删除
#这个location是解决crm的静态文件的问题的
location /static {
#alias参数 就是将/static转化为/opt/crmstatic ,也就找到了我们所有的静态文件
alias /opt/crmstatic;
}
确保你在vue的代码文件夹 cd /opt/s18luffy/07-luffy_project_01
npm install #解决vue代码所需的模块依赖

npm run build #进行编译打包


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

 

 

 

 

 

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

使用Python启动项目: python3 luffy_boy/manage.py runserver 0.0.0.0:9999
python3 luffy_boy/manage.py migrate


4.使用uwsgi去启动路飞学城后端
使用uwsgi.ini配置文件方式启动,内容如下
cd luffy_boy
vim 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也去管理路飞的后台 vim /etc/supervisor.conf
[program:s18luffy]
command=/root/Envs/s18luffy/bin/uwsgi --ini /opt/s18luffy/luffy_boy/uwsgi.ini
stopasgroup=true
killasgroup=true

备注:使用 supervisor 的指令:
supervisord -c /etc/supervisor.conf #这是启动supervisor服务端命令

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

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

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

 

3.nginx反向代理转发
修改nginx.conf内容如下

vim /opt/s18tngx/conf/nginx.conf
虚拟主机1
server {
#第一个虚拟主机,监听的80端口
listen 80;
server_name 192.168.226.128;
location / {
root /opt/s18luffy/07-luffy_project_01/dist;
index index.html;
}
}

虚拟主机2

server {
listen 9000;
server_name 192.168.226.128;
location / {
uwsgi_pass 0.0.0.0:9001;
include uwsgi_params;
}

}

重启nginx生效
nginx -s reload

 

 

 


4.启动redis,路飞学城用的是sqllite,不需要mysql

yum install redis -y #安装命令
systemctl start redis

redis登录命令
redis-cli 登录命令
登录后输入 ping 返回一个pong代表正确启动


5.windows访问路飞学城首页,查看课程列表 ,进行alex账户登录
账户: alex
密码: alex3714

登录后,添加django课程信息后,可以查看购物车信息,代表正确启动路飞学城


今日作业:
1.完成crm部署
2.完成路飞学城,前后端分离项目部署,
挨个打钩,每个同学都得做出来

posted on 2019-04-03 20:58  Lyf凤  阅读(203)  评论(0)    收藏  举报

导航

levels of contents