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编译
      • nginx配置
      • uWSGi基本命令
      • 解决无法获取后台api;vue文件信息暴露在外(关闭sources与devtools)
      • 解决其他小问题
          • 给项目换浏览器小图标,vue项目设置浏览器标题title及图标。
          • 解决路由守卫:vue-router.esm.js?68cf:2065 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: "/search".

Vue项目ubuntu+vuecli部署

vuecli编译

ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(2-Vue)_第1张图片
完成之后在项目下生成如下dist文件
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(2-Vue)_第2张图片
Xftp上传到ubuntu的自定文件夹中
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(2-Vue)_第3张图片

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 / {          #配置uWSGI服务器
		root /home/andy/Documents/photovoltaic/photovoltaichtml;
		index index.html;
		}
	}

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

service nginx restart

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
在这里插入图片描述
如下图所示,浏览器可以查看到我们的项目文件,这可不兴看啊。
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(2-Vue)_第4张图片
前端文件中vue.config.js中添加如下

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

改完变成这样了,比原来好一些,后续在寻求更好的解决方法吧
ubuntu 20.04.4+uWSGI+Nginx安装部署Django+Vue的web前后端全过程记录(2-Vue)_第5张图片

解决其他小问题

给项目换浏览器小图标,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)
}

你可能感兴趣的:(web笔记,Vue,前端,ubuntu,nginx)