led网站建设方案模板,公司网站管理,吉林省招标网官方网站,秦皇岛网站制作源码这篇博客写在凌晨 4 点 20 分#xff0c;这个时候我刚线上部署完成 web 项目#xff0c;自己写的全栈项目 这个点儿#xff0c;也睡不着了#xff0c;索性就写篇博客记录一下 一、踩坑实录 这个是 最重要的#xff0c;所以写在前面 Nginx 配置文件
location
location /a… 这篇博客写在凌晨 4 点 20 分这个时候我刚线上部署完成 web 项目自己写的全栈项目 这个点儿也睡不着了索性就写篇博客记录一下 一、踩坑实录 这个是 最重要的所以写在前面 Nginx 配置文件
location
location /admin {root /home/project/backstage/dist; index index.html index.htm;}这里最坑的是 root 指令root 就是代替host的 如你所见它最终访问的路径就是 /home/project/backstage/dist/admin 然后 index 指令会在此目录下搜索 index.html所以如果存在index.html,那么最终访问到的就是 /home/project/backstage/dist/admin/index.html。
我刚开始想当然的认为/admin 路径 会转发到 /home/project/backstage/dist这里害得我把nginx 配置文件学了遍最后在一个 nginx 部署实战课视频里面才知道有这么一遭所以真不能想当然。
接口调用关系的设计
我开发使用的操作系统是 windows部署到服务器的时候后端还行只需要修改上传图片的存储路径但是前端用到的请求路径就多了需要做较多修改。最终我采用的方案是 后端接口前统一加上/api,比如 /api/product前端门户系统使用80端口前端后台系统使用81端口之所以采用两个接口是因为门户系统和后台系统结构极为相似比如 index.html 都需要加载 /assets 下的文件如果使用同一个接口那么这里就非常不好处理我尝试过用正则表达式捕获组解决这个问题但水平有限无效。事实证明把它们分开是明智的因为后面就比较顺利了。
前端代码的请求地址方面耦合得比较严重后续要想办法解耦
二、总结经验
使用 linux 系统进行开发这样就不需要再部署的时候修改路径了。编写代码时要注意对文件路径和请求路径解耦可以考虑使用docker来解决部署上线的问题因为这样部署太麻烦了需要很多次修改。
三、整体思路 最后说一下web 项目整体部署思路吧 1. 在本地开发后先在本地部署测试之后再线上部署这样更容易查找问题
2. 安装MySQL把本地的MySQL的结构和数据复刻到云服务器这很简单直接导出sql就可以
3. 部署后端java -jar *.jar --server_name8080
4. 编译前端文件yarn build上传到云服务器
5. 安装 nginx根据自己需要修改配置文件主要是设置server还有一个client_max_body_size 设置文件上传大小限制的。 困了写得有点乱休息睡觉狗命要紧以后有机会再梳理和扩展一下此博客 这是我退伍之后又一次开发了全栈项目之前的一次全栈经历还是上学的时候嘞有点纪念意义故作此篇。 四、问题解决
关于数据请求 url 耦合的问题
解决办法 使用 nginx 代理实现解耦。比如 前端80 端口要请求后端 8080 端口的数据则使用 nginx 的 server 监听 80 端口将请求代理到后端
server {listen 80;server_name xxxxxx;location /api {proxy_pass http://localhost:8080}
}
...那么80端口门户系统中向后端的请求只需要 使用/api 开头就可以被代理到后端当然后端的 controller 也需要使用 /api 作为开头才能匹配。
关于开发系统和部署系统不一致的问题
其实解决了数据请求 url 耦合的问题这个问题就迎刃而解了本地部署和云端部署唯一的区别就是 nginx 配置文件不一样因为项目文件存放的路径不一样windows 和 linux 的文件路径规则写法也不一样。
五、所以现在的开发环境和部署的问题就解决了暂时用不到 docker 部署本着用不到就不用的原则本着减少变动的原则暂时就不用 docker 部署了