部署路飞学城

部署整体框架图:

1 熟悉linux操作

2 上传路飞学城项目到linux服务器

xftp上传到服务器

lrzsz工具

3 完成python3解释器的安装

在linux命令行模式下, 输入python3,能够正常进入python3的解释器

4 完成virtualenvwrapper工具的配置,解决虚拟环境问题

1 安装虚拟环境virtualenv

2 安装virtualenvwrapper工具

3 确认virtualenvwrapper.sh脚本正常使用

4 确认用户环境变量配置文件,有virtualenvwrapper.sh的四行配置

WORKON_HOME=~/Envs
VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3
source /opt/python36/bin/virtualenvwrapper.sh

5 创建路飞学城专用虚拟环境

luffy_city_env

6 上传requirements.txt

关于requirements.txt的一些操作

生成requirements.txt文件

  pip freeze > requirements.txt

安装requirements.txt依赖

  pip install -r requirements.txt

7 安装路飞学城项目所需要的所有模块

5 完成centos7下安装配置mariadb数据库,且创建数据库数据,迁移导入路飞学城数据

#centos7底下,mariadb就是mysql数据库,只是包名的不同 ​ #启动mariadb服务端 ​ #使用客户端去链接mysql服务端

1 导出数据库数据

有两种方法第一种:
mysqldump -u root -p --all-databases >  luffy_city.sql
第二种:
直接从navicat导出数据库的数据
   (1) 先从navicat导出数据库数据,导出为luffycity.sql
   (2) 将luffycity.sql上传到服务器的/opt目录下
   (3) 在服务器上进入mysql,然后创建数据库luffycity
   (4) 进入数据库luffycity
   (5) 使用命令source luffycity.sql导入luffycity.sql数据
   (6) 使用show tables命令查看数据是否成功导入

2 使用mysql -uroot -p 在linux上登陆mariadb

3 刷新授权表

出路飞学城项目的数据库, 允许root用户远程登录

# 允许root用户远程登录,并且给予所有数据库所有表的所有权限
grant all privileges on *.* to root@'%' identified by 'nihao123';
flush privileges;

4 上传这个数据文件到linux数据库中

linux的mysql,导入这个数据文件

(1) 进入mysql
    mysql -u root -p
(2) 进入数据库
    use luffycity
(3) 导入数据
    source /opt/luffycity.sql
注意1,linux的数据库,需要对root用户设置远程链接的权限, 密码是nihao123
注意2,SELinux和linux的防火墙要给关闭,否则windows去链接linux的3306端口可能被拒绝
注意3: 第4步一定要确认OK之后才能继续往下操作

6 测试使用linux的python解释器去运行项目 切换到 项目中运行(注意要解决解释器的模块问题,才能正常运转项目)

(1) 先修改路飞学城项目的settings.py文件

ALLOW_HOSTS=["*"]
数据库连接配置
注意: mariadb就是mysql,这里的ENGINE不用修改
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        "HOST": "127.0.0.1",
        "PORT": 3306,
        "USER": "root",
        "PASSWORD": "nihao123",
        "NAME": "luffycity",
    }
}
​

(2) 使用命令把django跑起来

python3 manage.py runserver 0.0.0.0:8000

7 完成uWSGI命令学习,使用uWSGI启动路飞学城,支持多进程

1 安装uwsgi

(1) 进入luffy_city_env虚拟环境
    workon luffy_city_env
(2) 安装uwsgi
    pip3 install uwsgi

2 uwsgi 启动测试文件

(1) 创建一个testqishi2.py
(2) 写入以下几行代码
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3
(3) 通过uwsgi命令将测试文件跑起来
uwsgi --http :9000 --wsgi-file testqishi2.py
(4) 测试通过IP+端口访问
http://192.168.12.60:9000
3 uwsgi启动django项目
uwsgi --http :9000 --module luffy.wsgi
4 uwsgi热加载启动
注意: 以后面试可能会问到, uwsgi是否支持热加载启动
注意: 以后面试可能会问到, uwsgi是否支持热加载启动
uwsgi --http :9000 --module luffy.wsgi --py-autoreload=1
5 使用uwsgi配置文件启动django项目
(1) 创建一个配置文件uwsgi.ini(注意,这个配置文件不管放在哪里都可以,但是启动的时候,需要找到这个配置文件)(2) 写入以下配置
[uwsgi]
​
chdir           = /opt/luffy_city/luffy
module          = luffy.wsgi
home            = /root/Envs/luffy_city_env
master          = true
processes       = 1
socket          = 0.0.0.0:8000
http            = 0.0.0.0:8000
vacuum          = true
​(3) 通过指定uwsgi.ini配置文件把django跑起来
uwsgi uwsgi.ini
 
6 uwsgi.ini配置详解
[uwsgi]
# Django-related settings
# the base directory (full path)
# 写上项目的绝对路径
chdir           = /opt/book_manage
# Django's wsgi file
# 填写找到django的wsgi文件,填写相对路径,以chdir参数为相对路径
module          = book_manage.wsgi
# the virtualenv (full path)
# 填写虚拟环境的绝对路径
home            = /root/Envs/book_manage_env/
# process-related settings
# master
#启动uwsgi主进程
master          = true
# maximum number of worker processes
processes       = 1
# the socket (use the full path to be safe
#如果你使用了nginx,做反向代理,必须填写socket链接,而不是http参数
socket          = 0.0.0.0:8000
#如果你不用nginx,直接使用uwsgi,运行一个http服务端,就用这个http参数
http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

注意: socket和http参数二选一,一定要注意!!!!!!!!!!!!!!!!!!

注意: socket和http参数二选一,一定要注意!!!!!!!!!!!!!!!!!!

注意: socket和http参数二选一,一定要注意!!!!!!!!!!!!!!!!!!

由于uwsgi 不支持处理静态文件,所以,我们需要配置nginx与uwsgi结合,通过nginx来处理静态文件

8 完成nginx的安装配置,了解nginx.conf如何配置

1 收集静态文件

(1) 修改settings.py配置文件, 加入以下一行配置

STATIC_ROOT='/opt/luffy_city/static'

(2) 创建静态文件存放目录/opt/luffy_city/static

mkdir -p /opt/luffy_city/static

(3) 一条命令收集django项目下面的所有静态文件

python3 manage.py collectstatic

看到这个信息说明已经成功收集

2 配置nginx结合uwsgi进行转发

(1)在nginx.conf配置文件下添加以下配置文件

location / {
            include  /opt/nginx112/conf/uwsgi_params;
            uwsgi_pass 0.0.0.0:9000;
        }

(2) 将uwsgi.ini配置文件里面的http注释掉,启用socket

socket          = 0.0.0.0:9000   # 启用此行
# http            = 0.0.0.0:9000  # 停用此行

(3) 在nginx.conf中添加静态文件地址

location /static {
            alias /opt/luffy_city/static;
        }

(4) 平滑重启nginx

/opt/nginx112/sbin/nginx -s reload
若出现pid错误,则是因为没有启动nginx
需要启动
    /opt/nginx112/sbin/nginx

(5) 在物理机上添加hosts

192.168.12.56    www.qishi2.com

9 验证所有流程是否正常

1 验证域名是否正常访问

2 验证静态文件是否正常显示

3 验证数据库是否连接正常

4 验证redis数据库是否连接正常

5 验证uwsgi是否正常启动

10 安装node , 配置vue前端

(1) 下载安装node软件包

wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz

(2) 解压缩

tar -zxvf node-v8.6.0-linux-x64.tar.gz

(3) 添加环境变量

进入编辑环境变量设置文件
    vim /etc/profile
添加node的环境变量
  PATH=/opt/node-v8.6.0-linux-x64/bin:/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

(4) 将vue项目里面的所有127.0.0.1和所有的localhost全部改为我们的服务器地址192.168.12.56

注意: 此步非常重要, 讲师机上面的vue项目里面,这个IP没有创建全局变量,导致127.0.0.1和localhost分布在很多个文件中,所以需要一个一个替换

(5) 进入到vue前端的项目目录, 使用npm run build生成dist项目静态文件

cd /opt/luffy_city/luffy_pc
npm run build
 

(6) 在luffy_pc目录下就可以看到dist文件夹,dist中生成一个indx.html,到时让nginx指向这个index.html即可

/opt/luffy_city/luffy_pc/dist

(7) 之后只要在/opt/nginx112/conf/nginx.conf

配置:

server {
     #用户访问域名或者ip,默认是nginx的80端口

        listen       80;
        server_name  192.168.119.12;
     #url匹配  /   也就是请求地址是192.168.119.12时,进入此location,返回vue的dist下index.html路飞学城首页
        location / {
        root /opt/07-luffy_project_01/dist;   #index.html文件的位置
        index index.html;
        }
    }

11 supervisor守护进程工具

1 安装supervisor

由于supervisor在python3下无法使用,因此只能用python2去下载!!!!!!

由于supervisor在python3下无法使用,因此只能用python2去下载!!!!!!

由于supervisor在python3下无法使用,因此只能用python2去下载!!!!!!

# 注意此时已经退出虚拟环境了!!!!!
easy_install supervisor
​
# 如果没有easy_install的话,就yum安装一个setuptools工具就可以用了
yum install python-setuptools

2 生成supervisord配置文件

echo_supervisord_conf > /etc/supervisord.conf

3 在/etc/supervisord.conf下添加以下两行配置

[program:luffy_city]
command=/root/Envs/luffy_city_env/bin/uwsgi /opt/luffy_city/luffy/uwsgi.ini

4 启动supervisor

supervisord -c /etc/supervisord.conf # 启动supervisor
supervisorctl -c /etc/supervisord.conf # 启动和进入supervisor交互模式

5 查看supervisor运行状态

supervisorctl  # 使用此命令后将会进入supervisor交互式管理界面
status  # 查看进程运行状态

6 管理supervisor里面的进程

stop luffy_city    # 关闭luffy_city进程
stop all           # 关闭所有进程
start luffy_city   # 开启luffy_city进程
start all          # 开启所有进程
status             # 查看所有进程运行状态
​
supervisorctl status  # 可以不用进入交互模式查看

12 最终效果

访问nginx的80端口,即可找到路飞学城应用,且保证静态文件页面正常

项目部署Vue+Django(luffy)的更多相关文章

  1. 项目部署 ubuntu Django uwsgi配置

    1.进入项目文件夹 mkdir uwsgi_file vim uwsgi.ini 写入保存 [uwsgi] chdir = /home/mysite/my_project # 项目目录 module ...

  2. Liunx之django项目部署

    一.python web 项目部署 python django默认启动python3 manage.py runserver 0.0.0.0:8000这种方式调用wsgiref单机模块,性能较低,生产 ...

  3. Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)

    Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...

  4. nginx+vue+uwsgi+django的前后端分离项目部署

    Vue+Django前后端分离项目部署,nginx默认端口80,数据提交监听端口9000,反向代理(uwsgi配置)端口9999 1.下载项目文件(统一在/opt/luffyproject目录) (1 ...

  5. django项目、vue项目部署云服务器

    目录 上线架构图 服务器购买与远程连接 安装git 安装mysql 安装redis(源码安装) 安装python3.8(源码安装) 安装uwsgi 安装虚拟环境 安装nginx(源码安装) vue项目 ...

  6. 服务器部署 Vue 和 Django 项目的全记录

    本篇记录我在一个全新服务器上部署 Vue 和 Django 前后端项目的全过程,内容包括服务器初始配置.安装 Django 虚拟环境.python web 服务器 uWSGI 和反向代理 Nginx ...

  7. Vue+Django项目部署

    本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改luffy/settings/prop.py中以下几项 (1) allow_hosts ALLOWED_HOST ...

  8. 在django中部署vue项目,不单独抽离dist文件

    1,在django项目下(app所在目录),新建vue项目,使用脚手架构建vue项目,vue create (项目名) 2,构建好以后,配置django: (1),配置settings: · 修改te ...

  9. 前端(以Vue为例)webpack打包后dist文件包如何部署到django后台中

    由于现在前端使用的三大框架配合webpack可以实现快速打包,为部署到服务端提供了非常大的便利,那么在前端打包后,应该做些什么可以部署到django的后台中呢? 1.打包后文件包dist 进入到 di ...

随机推荐

  1. c# webapi上传、读取、删除图片

    public class FileAPIController : BaseController    {        private readonly string prefix = "t ...

  2. java操作对比两个字符串,将差异数据提取出来

    记录瞬间 在实际的工作中,需要解决生成两次字符串结果进行对比的问题,将存在差异的字符串直接给出来. 当然,前提是需要将对比的两次结果,进行前期处理 比如: a_str = "@com/ene ...

  3. EXCEL对比在职员工与离职员工

    EXCEL 在B1中 填写这个 =VLOOKUP(A1,C:C,1,0)    然后往下拉  只要有出现#N/A  说明已经离职了 公司需要

  4. CentOS7中GreVPN的配置

    目前只实现了三层的GRE隧道,但其实二层也可以实现的,但是没有找到很好的方法,待研究 环境如下: host A :  121.207.22.123 host B: 111.2.33.28 1. 在ho ...

  5. SDK?JDK?JDK 下载、安装、配置图文教程

    什么是软件开发工具包(SDK)   开发一个软件,需要经过编辑.编译.调试.运行几个过程. 编辑:使用编程语言编写程序代码的过程. 编译:如上一节所讲,就是将编写的程序进行翻译. 调试:程序不可能一次 ...

  6. 2018-2019-2 《网络对抗技术》Exp2 后门原理与应用 20165215

    目录 实验内容 基础问题回答 常用后门工具 Netcat windows 获取 linux 的shell linux 获取 winsdows 的shell 使用nc传输数据 使用nc传文件 Socat ...

  7. 什么是Referer?Referer的作用?空Referer是怎么回事?

    什么是Referer? Referer是 HTTP请求header 的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含 Referer.比如我在www.sojson ...

  8. JS,JQuery小知识

    http://blog.163.com/wumingli456@126/blog/static/28896414201112252456459/?suggestedreading&wumii

  9. bash 基础命令

    bash的基础特性(): () 命令历史 history 环境变量: HISTSIZE:命令历史记录的条数: HISTFILE:~/.bash_history: HISTFILESIZE:命令历史文件 ...

  10. 含服务端,客户端,数据库的注册/登录/聊天/在线/离线查看的聊天demo

    用websocket,mysql,node的写了一个简单聊天的demo 实现了: 注册,登陆功能: 聊天信息广播: 在线/离线状态的查看: 服务端: 主要引用http,fs,mysql,socket. ...