我有一个带有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
}
}