最近部署一个Vue项目到阿里云ECS上,因为项目涉及一些跨域请求,所以采用了Nginx代理请求本地的node服务(利用pm2做进程管理)。node服务借助axios设置headers的referer、host转发请求,解决跨域请求问题。
先交代下在阿里云ECS里安装的部署环境:phpstudy(php调试运行大礼包,里面包含nginx、mysql等,还能监控端口占用情况)、pm2(node服务进程管理工具)、node、git等等。
部署过程
构建项目
构建项目前,要修改项目confing目录下的index.js,主要是build部分的端口、目录,具体如下:
build: { port: 9001, // 因为我是用PHPStudy做web服务器的,此时php.cgi会占9000端口,所以改用9001 // Template for index.html index: path.resolve(__dirname, '../dist/index.html'), // Paths assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: '', ....... }
主要有两部分
修改端口,跟代理端口一致
port: 9001
修改assetsPublicPath
assetsPublicPath: ''
nginx-conf配置
利用phpstudy,可以很方便的进行nginx相关设置、host修改、端口监控等等。先来说说nginx-conf的配置。
先找到nginx-conf配置入口
修改ngin-conf
upstream my_project { server 127.0.0.1:9001; keepalive 64; } server { listen 80; server_name my_project; #charset koi8-r; #access_log logs/host.access.log main; root "C:/phpStudy/PHPTutorial/WWW/project/dist"; location / { index index.php index.html index.htm; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_pass http://my_project/; proxy_redirect off; proxy_read_timeout 240s; } }
注意事项
root配置,指向构建后目录
root "C:/phpStudy/PHPTutorial/WWW/project/dist";
设置代理端口时,避免端口占用!!
upstream my_project { server 127.0.0.1:9001; keepalive 64; }
开始部署时,使用的是9000端口,一直运行不起来,后面发现phpstudy启动是php-cgi.exe默认就使用了9000端口。关于端口使用情况,phpstudy也提供了工具。
启动pm2
关于pm2的介绍、常规使用自行了解。在项目目录下事先已经写好了转发请求的逻辑。
pro.server.js
var axios = require('axios') const bodyParser = require('body-parser') var config = require('./config/index') var express = require('express') var app = express() var apiRoutes = express.Router() apiRoutes.get('/api/getdata', function(req, res) { var url = 'https://a.com' axios.get(url, { headers: { referer: 'https://b.com', host: 'b.com' }, params: req.query }).then((response) => { .... }).catch((e) => { console.log(e) }) }) app.use('/', apiRoutes) app.use(express.static('./dist')) var port = process.env.PORT || config.build.port module.exports = app.listen(port, function (err) { if (err) { console.log(err) return } console.log('Listening at http://localhost:' + port + '\n') })
这里只是简单的借助axios可以设置referer和host,实现代理转发的功能。
运行prod.server.js
prod.server.js是在根目录下,所以运行命令如下:
pm2 start prod.server.js
进程列表:
pm2 start list
查看进程详情
pm2 show 0
总结
整个部署过程涉及比较多的知识点,nginx代理,node开发部署,端口管理等等。在端口占用这个点上卡了一段时间。不过目前只是实现构建部署、访问。但维护成本还是比较高,先得从GitHub拉取代码,本地构建。项目完成以后,研究下持续性集成流程。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍vue项目部署到nginx/tomcat服务器的实现,包括了vue项目部署到nginx/tomcat服务器的实现的使用技巧和注意事项,需要的朋友参考一下 开发完的vue项目,需要部署到Nginx/Tomcat服务器上运行,作为一个前端小白,刚接触vue不久,研究了一番,于是写下这篇文章,记录下来便于今后部署。 1.router(history)模式vue项目部署到nginx 1)修改
本文向大家介绍Docker镜像+nginx 部署 vue 项目的方法,包括了Docker镜像+nginx 部署 vue 项目的方法的使用技巧和注意事项,需要的朋友参考一下 一、打包vue项目 在开发完的vue项目输入如下命名,打包生成dist文件夹 此时根目录会多出一个文件夹:dist文件夹,里面就是我们要发布的东西。 如果将该dist目录整个传到服务器上,部署成静态资源站点就能直接访
本文向大家介绍详解把Node.js项目部署到阿里云服务器(CentOs),包括了详解把Node.js项目部署到阿里云服务器(CentOs)的使用技巧和注意事项,需要的朋友参考一下 最近用node.js开发了一个web项目,开发完打算先部署到我自己买的阿里云学生服务器上,让客户先试用下网站。不知道如何把node.js项目部署到阿里云服务器,在问了飞哥哥之后,在网上找了下教程,部署成功。把教程整合了一
我是阿里云的新手,我有一个Apache Beam应用程序运行在Google Cloud Dataflow上。现在我想把同样的apache beam管道部署到阿里云。我正在寻求帮助,关于在阿里云中运行apache beam管道需要如何/哪些设置?阿里巴巴有没有一种资源相当于谷歌云平台Dataflow?
本文介绍了如何使用个人电脑(Linux 或 macOS 系统)在阿里云上部署 TiDB 集群。 环境需求 aliyun-cli >= 3.0.15 并且配置 aliyun-cli 注意: Access Key 需要具有操作相应资源的权限。 kubectl >= 1.12 helm >= 2.11.0 && < 3.0.0 && != 2.16.4 jq >= 1.6 terraform 0.12.
本文向大家介绍Docker部署web项目的实现,包括了Docker部署web项目的实现的使用技巧和注意事项,需要的朋友参考一下 上一篇已经安装好docker服务,下面继续介绍如何部署web项目 一:随便创建目录dock,准备好如下文件: 二、编写Dockerfile,通过它能快速地构建docker镜像 新增如下配置 解释: (1)FROM centos 表示从docker官方仓库中获取centos