项目部署Vue+Django(luffy)
部署路飞学城
部署整体框架图:

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)的更多相关文章
- 项目部署 ubuntu Django uwsgi配置
1.进入项目文件夹 mkdir uwsgi_file vim uwsgi.ini 写入保存 [uwsgi] chdir = /home/mysite/my_project # 项目目录 module ...
- Liunx之django项目部署
一.python web 项目部署 python django默认启动python3 manage.py runserver 0.0.0.0:8000这种方式调用wsgiref单机模块,性能较低,生产 ...
- Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)
Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...
- nginx+vue+uwsgi+django的前后端分离项目部署
Vue+Django前后端分离项目部署,nginx默认端口80,数据提交监听端口9000,反向代理(uwsgi配置)端口9999 1.下载项目文件(统一在/opt/luffyproject目录) (1 ...
- django项目、vue项目部署云服务器
目录 上线架构图 服务器购买与远程连接 安装git 安装mysql 安装redis(源码安装) 安装python3.8(源码安装) 安装uwsgi 安装虚拟环境 安装nginx(源码安装) vue项目 ...
- 服务器部署 Vue 和 Django 项目的全记录
本篇记录我在一个全新服务器上部署 Vue 和 Django 前后端项目的全过程,内容包括服务器初始配置.安装 Django 虚拟环境.python web 服务器 uWSGI 和反向代理 Nginx ...
- Vue+Django项目部署
本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改luffy/settings/prop.py中以下几项 (1) allow_hosts ALLOWED_HOST ...
- 在django中部署vue项目,不单独抽离dist文件
1,在django项目下(app所在目录),新建vue项目,使用脚手架构建vue项目,vue create (项目名) 2,构建好以后,配置django: (1),配置settings: · 修改te ...
- 前端(以Vue为例)webpack打包后dist文件包如何部署到django后台中
由于现在前端使用的三大框架配合webpack可以实现快速打包,为部署到服务端提供了非常大的便利,那么在前端打包后,应该做些什么可以部署到django的后台中呢? 1.打包后文件包dist 进入到 di ...
随机推荐
- HTML——HTML部分学习笔记
1.前端工程师是干什么的? PC页面 移动端页面 Web开发 = 前端开发 + 后台开发--->web应用(网站) 后台:数据 前台:负责数据展示 + 交互效 ...
- 将 notepad++ 添加到鼠标右键菜单 带图标
1.打开注册表编辑器,HKEY_CLASSES_ROOT\*\shell目录点击右键.新建-->项,这里命名的项则就是鼠标右键列表里面显示的内容,这里起名为[Edit With Notepad+ ...
- Git 教程(二):提交和回退
我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed version c ...
- JavaScript自定义事件和触发(createEvent, dispatchEvent)
$(dom).addEvent("ft", function() { alert("走起"); }); // 创建 var evt = document.cre ...
- Lua 哑变量
[1]哑变量 哑变量,又称为虚拟变量.名义变量. 还得理解汉语的博大精深,‘虚拟’.‘名义’.‘哑’等等,都是没有实际意义.所以,哑变量即没有现实意义的变量. 哑变量的应用示例如下: local fi ...
- python-列表与元组
列表(List) 特性: 列表也是一种Sequence 类型 下标 能切片 可以存储任何类型的数据,每个元素是任意类型,可以存放任 ...
- OO第一单元优化博客
OO第一单元优化博客 第一次作业: 合并同类项+提正系数项+优化系数指数0/1=满分 第二次作业: 初始想法 一开始是想以\(sin(x)\)和\(cos(x)\)的指数作为坐标,在图上画出来就可 ...
- zabbix3.4实现sendEmail邮件报警
一.安装软件 wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz 创建目录 mkdir /us ...
- cent OS 7查询IP
环境: win7旗舰版 VMware Workstation Pro (虚拟机软件) CentOS-7-x86_64-DVD-1804.iso 安装时选择了默认配置,最小系统安装. 安装好后用 if ...
- android开发_Eclipse新建项目+新建模拟器
一.新建项目 1 Eclipse->右键->new->Android Application Project,得到下图: 2 输入创建项目信息 3 点击next 4 点击 next ...