ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(2-Vue)

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(1-Django)

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(3-实现局域网通过本机IP地址加端口号访问本地虚拟机的web项目)

Vue项目ubuntu+vuecli部署

vuecli编译

在这里插入图片描述
完成之后在项目下生成如下dist文件
在这里插入图片描述
Xftp上传到ubuntu的自定文件夹中
在这里插入图片描述

nginx配置

检查之前的nginx配置文件是否有语法错误,用如下命令

nginx -t

报错了,应该是没有权限
在这里插入图片描述
试试sudo

sudo nginx -t

成功运行

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

nginx加入如下配置

	#	Vue configuration
	server {
	listen   8080;     #配置访问时的端口号
	server_name  192.168.80.128;
	charset     utf-8;
	client_max_body_size  75M;  #影响post文件的最大大小

	location / {          
		root /home/andy/Documents/photovoltaic/photovoltaichtml;
		index index.html;
		}
	}

传入ubuntu,重启nginx。部署完成(如果不行,再重启uWSGi)

service nginx restart

复制当前nginx.conf文件到/etc中(在使用finashell传文件时,应该是权限问题,但是是root用户啊。不能直接传入/etc/nginx/nginx.conf。我在这复制进去成功了)

sudo cp -i nginx.conf /etc/nginx/nginx.conf

uWSGi基本命令

启动

uwsgi --ini pvsite_uwsgi.ini 

设置后台运行-d

uwsgi -d --ini pvsite_uwsgi.ini

重启

uwsgi --reload xxx.pid  //需要在ini中配置uWSGi运行进程的pid保存路径

停止

uwsgi --stop xxx.pid	//需要在ini中配置uWSGi运行进程的pid保存路径

终极停止

sudo pkill -f uwsgi -9
sudo 代表使用管理员权限执行命令。可以省略
kill -9中,9代表的就是9号信号,带有强制执行的意思,它告诉进程:“无论你现在在做什么,立刻停止”

解决无法获取后台api;vue文件信息暴露在外(关闭sources与devtools)

由于之前一直用的是本地的回环地址,所以这样肯定是无法获取到部署后的Django数据的。
在这里插入图片描述
修改axiosbaseURL
在这里插入图片描述
如下图所示,浏览器可以查看到我们的项目文件,这可不兴看啊。
在这里插入图片描述
前端文件中vue.config.js中添加如下

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false,
  // 不让其他人看源码
  productionSourceMap: false,
})

改完变成这样了,比原来好一些,后续在寻求更好的解决方法吧
在这里插入图片描述

解决其他小问题

给项目换浏览器小图标,vue项目设置浏览器标题title及图标。

请添加图片描述
动态设置标题:通过路由导航守卫设置,使用Vue-RouterbeforeEach拦截
不错的方法

/* 第一步:在router中的index.js路由下设置mate属性*/ 
routes: [{
      path: '/',
      name: 'home',
      component: () => import('@/pages/home/index'),
      meta:{
        keepAlive: true
      }
    },
    {
      path: '/person/auth,
      name: 'personAuth',
      component: () => import('@/pages/person/auth),
      meta:{
        title: '功能授权',
        keepAlive: false
      }
    }
  ]
 
/* 第二步:在路由守卫router.beforeEach中设置如下代码 */
router.beforeEach((to, from, next) => {
  /* 路由发生变化修改页面title */
  if (to.meta.title) {
    document.title = to.meta.title
  }
})
解决路由守卫:vue-router.esm.js?68cf:2065 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: “/search”.

在router目录下添加如下代码

// src/router/index.js
Vue.use(Router)  
const router = new Router({
  routes
})
const VueRouterPush = Router.prototype.push
Router.prototype.push = function push (to) {
  return VueRouterPush.call(this, to).catch(err => err)
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值