版权声明:写文章辛苦,请不要复制粘贴,如果要,请注明来处 https://blog.csdn.net/u012627861/article/details/87888493
背景
为了能够支持SEO,喜欢Vue的同学可能会使用Nuxt框架,本人通过实践,记录Nuxt的打包和部署中的一些问题
环境:阿里云 Linux CentOS 7.6
项目:Nuxt + Vuex + Express
打包
在项目中执行命令
npm run build
完成后拷贝以下内容到新的目录中
说明
.nuxt目录
是Nuxt框架将前后端内容结合以后产生的,所以这个需要被纳入nuxt.config.js文件
是Nuxt框架的配置文件,所以这个需要被纳入package.json文件
包含了依赖配置和脚本命令配置等内容,用于npm执行命令和下载依赖,所以这个需要被纳入server目录
是Web服务器启动的内容,目录中包含index.js是Web服务器的启动文件,所以这个需要被纳入static目录
默认解析为域名/
,这些内容如robots.txt是不会被打包进.nuxt目录下的,这些都是静态资源,所以这个需要被纳入
部署
我这里部署使用的是阿里云的CentOS 7.6,需要在服务器上安装node
(node安装后自带npm),安装步骤可以参阅《Node - 安装Node和NPM(Mac, Linux)》
- node安装完成后,将打包好的内容
上传
至服务器,上传可以采用lrzsz,vsftpd等工具 - 上传完成后,进入项目目录,运行
npm install
,下载依赖 - 依赖下载完成后,运行
npm start
启动即可,当然这么启动程序通过Ctrl + C
后服务就会终止,可以采用nohup npm start &
来启动程序
修改端口
打开package.json,找到scripts下的start,增加PORT=<端口号>即可,如下
关闭程序
运行命令ps -ef|grep node
可以看到有三条进程,其中有两条进程的指令为node xxx/.../index.js
杀掉node server/index.js
的这项进程即可,假定pid为1110(pid为第二列)
则执行命令kill -9 1110
即可
问题
项目启动后外网无法访问
描述:项目成功启动,通过curl localhost:3000
可以正确访问,但通过外网无法访问(阿里云已配置安全规则,打开了3000端口)
项目使用的是Express Web服务器,我不确定是这个服务器只允许本地访问还是有其他配置,反正各种尝试后都不能实现外网访问,最后通过增加nginx代理来实现外网访问。通过yum install nginx -y安装nginx,在/etc/nginx/conf.d目录下新增.conf文件,内容如下:
server {
listen 80;
server_name <domain>;
location / {
proxy_pass http://localhost:3000; # 这里为项目端口
}
}
(完)