发布必备条件
一台Linux服务器(CentOS/Ubuntu)服务器
一款Web服务器(Nginx/Apache/Tomcat)
一个属于自己的独立域名(cn/com/org/…)
本次流程以CentOS和Nginx配置为例
webpack设置静态地址打包
- output的publicPath从开发地址
/dist/
设置为线上地址://www.yuuhei.site/dist/
服务器购买
- 选择阿里云产品的【云服务器ECS】
- 安全组有http(默认端口80)、https(默认端口443),linux SSH登录(默认端口22),windows远程桌面登录(默认端口3389)
链接远程服务器
- windows下最好使用git bash,ubuntu下默认是bash控制台
- 使用ssh user@remote_ip 连接
Web服务器的选择
- Nginx:高性能,高并发
- Apache:多平台,安全,流行
- Tomcat:多用于Java做jsp解析
配置Web服务器
- 命令行执行安装Nginx,各个linux系统的下载命令不一样,ubuntu执行sudo apt-get install nginx
- centOS和Ubuntu的nginx的配置文件一般都在/etc/nginx下,可以使用nginx -t查看配置文件位置
- nginx.conf文件内容的user xxx需要改为user root
- 着重配置的是http块区域里的内容(http > server > location)
node使用官网解压包安装
- 解压安装包
1 | tar -xzvf node-v10.15.2-linux-x64.tar.xz |
- 移动文件夹到/usr/local/node
1 | mv node-v10.15.2-linux-x64 /usr/local/node |
- 建立全局命令node和npm软链(全局命令一般都在/usr/local/bin/)
1 | ls -n /usr/local/node/bin/node /usr/local/bin/ |
- 这时候就可以直接全局执行node和npm了
nginx.conf
1 | # 改成user root |
部署了前端静态资源html的服务器配置nginx,达到代理请求转发的效果,例如果配置了/api/,在项目里请求的地址就是/api/xxx/xxx,且需在本地配置代理方便开发,代理配置在vue.config.js
1 | { |
域名解析
- www:平时输入网址的www,例如
www.baidu.com
- @:平时输入网址不输入www,例如
baidu.com
- 记录值:公网服务器的IPv4地址
- 记录类型
- A:将域名指向一个IPv4地址
- CNAME:将域名指向另外一个域名(redirect)
- 备案,服务器和域名的信息必须一致才能访问
网站工作原理
- 输入网址
- DNS解析,寻找对应服务器地址
- 进行握手(HTTP会话)
- 建立文档树,加载资源
项目index.html被缓存的解决方法
单页面的项目,就算js,css等文件做了hash的处理,在发完版后进入去的第一次,会有白屏的问题。原因就是index.html被缓存,之前的js的hash都变了,然后旧的html加载了不存在的js,导致报错白屏
重点是location / 的add_header Cache-Control "no-cache, no-store";
,不设置缓存,其余的是代理的设置
1 | server { |