部署adonis + nuxt应用的更好方法是什么

时间:2019-09-05 21:06:17

标签: vue.js deployment production nuxt

我有一个带有AdonisJS后端的Nuxt SPA。

很好,但是,我对部署过程有些疑问。

我在pm2上运行了该进程。

我的实际部署流程是这样的:

我在本地做了一些更改

提交并推送

在我的服务器中,我先进行git pull,然后执行yarn nuxt-build,然后执行节点ace nuxtbuild,并将dist创建为.nuxt。

一段时间后(在开发服务器上为283秒,在生产服务器上为98秒),我使用以下命令重新启动进程:pm2重新启动所有

很好,但是我遇到了一些问题:

1)在构建应用程序时,由于服务器超出了cpu的使用限制,我收到了AWS CPU通知。

2)在编译nuxt时,某些路由无法正常工作。

这意味着在进行新版本发布时,我必须停止1-3分钟的过程,这对于一个有很多查询的应用来说是很长的时间

有什么方法可以在本地编译nuxt,然后推送已编译的nuxt构建?拉我同事所做的一些更改时,我不会互相冲突。

或者将nuxt + adonis带入生产的最佳方法是什么?

这是我的nuxt.js配置:

const { resolve } = require('path')
const {
  configAuth,
  configAxios,
  configToast,
  configVuetify,
  baseURL
} = require('../resources/config')

module.exports = {
  mode: 'spa',
  // Dejar esto así tal cual
  dev: process.env.NODE_ENV === 'development',

  vue: {
    config: {
      productionTip: process.env.NODE_ENV !== 'development',
      devtools: process.env.NODE_ENV === 'development'
    }
  },
  /*
   ** Headers of the page
   */
  head: {
    title: 'Afrus',
    meta: [
      { charset: 'utf-8' },
      {
        name: 'viewport',
        content: 'width=device-width, initial-scale=1'
      },
      {
        hid: 'description',
        name: 'description',
        content: 'Afrus project'
      }
    ],
    link: [
      {
        rel: 'icon',
        type: 'image/x-icon',
        href: 'favicon.ico'
      },
      {
        rel: 'stylesheet',
        href: 'https://fonts.googleapis.com/css?family=Montserrat'
      },
      {
        rel: 'stylesheet',
        href: 'https://fonts.googleapis.com/css?family=Roboto'
      }
    ]
  },
  env: { baseURL },
  /*
   ** Plugins
   */
  plugins: [
    '~/plugins/axios',
    '~/plugins/i18n',
    '~plugins/prism',
    '~plugins/vue-moment',
    '~/plugins/vee-validate',
    '~/plugins/vue-color-picker',
    '~/plugins/vue-trumbowyg'
  ],
  /*
   ** Global CSS
   */
  css: [
    {
      src: '~assets/css/main.css',
      lang: 'css'
    },
    {
      src: '~/assets/css/app.styl',
      lang: 'styl'
    },
    {
      src: 'material-design-icons-iconfont/dist/material-design-icons.css',
      lang: 'css'
    }
  ],
  modules: [
    ['@nuxtjs/axios', configAxios],
    ['@nuxtjs/auth', configAuth],
    ['@nuxtjs/toast', configToast],
    ['@nuxtjs/vuetify', configVuetify],
    'nuxt-device-detect'
  ],
  /*
   ** Customize the progress-bar color
   */
  loading: { color: '#744d82' },
  router: { middleware: ['auth', 'i18n'] },
  /*
   ** Point to resources
   */
  srcDir: resolve(__dirname, '..', 'resources'),

  build: {
    plugins: [
      new webpack.ProvidePlugin({
        jQuery: 'jquery',
        $: 'jquery',
        'window.jQuery': 'jquery'
      })
    ],
    cache: true,
    parallel: true,
    hardSource: true
  }
}

0 个答案:

没有答案