打包vue项目
npm run build
注意:
静态文件的路径配置
最笨方法:(找了很多网上的配置路径方法,都没解决)
先打包一遍,运行之后,找请求不到的静态文件请求路径是什么,再去本地项目中改,再次打包
![](https://i-blog.csdnimg.cn/blog_migrate/4770c797c5f4a2c62c56e43d9b3a1265.png)
缺点:
上线和本地不能同时满足
跨域
跨域最好让后端来做,这样打包之后不会出现各种各样的问题
比如,python后端
![](https://i-blog.csdnimg.cn/blog_migrate/bcf47f122bf7a26c56208aef5a248de8.png)
两行代码就解决了。
前端只需正常请求接口就可以了。
本地测试运行
安装服务器
npm i -g serve
进入打包好的dist文件夹
cd dist
运行
serve
项目配置的都没问题的话,这里就可以请求成功。
服务器安装nginx
nginx为反向代理,如果只是内网自己访问不需要配置nginx,可跳过此步。
查看是否有nginx
whereis nginx
![](https://i-blog.csdnimg.cn/blog_migrate/bf49a05dc0741fba7091b8a7d41560f3.png)
安装nginx
npm install -y nginx
查看版本号
nginx -v
![](https://i-blog.csdnimg.cn/blog_migrate/4d8e7a3f32eeff3b82c01f5499c4ac2d.png)
表示安装成功
启动nginx
nginx
访问服务器
以下界面即为启动成功
![](https://i-blog.csdnimg.cn/blog_migrate/241c357921555eb34399e0520fc6af60.png)
这里访问默认的是80端口,nginx服务器默认的是80端口,如果不能访问,大致有几种原因:
端口进程被占用
nginx未启动
nginx配置错误
服务器安全组未加入80端口
其中,端口进程被占用,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/70325ae06c65c40caf243453323742fb.png)
查看当前进程
netstat -ntlp
或者
netstat -tunlp
![](https://i-blog.csdnimg.cn/blog_migrate/41a3401cba17845469a91ffe9fdab1ab.png)
杀掉进程
kill 52161
再次查看进程 如果80端口依然被占用 接着kill 直到没有80端口进程
启动 nginx
启动成功,访问服务器
![](https://i-blog.csdnimg.cn/blog_migrate/d5860b9ccdff732905c5107cda3483ff.png)
停止nginx服务
nginx -s stop
重启nginx服务
nginx -s reload
修改nginx配置
找到配置文件存放位置
whereis nginx
![](https://i-blog.csdnimg.cn/blog_migrate/21770a9da707044eed6a7eefd77c328f.png)
此时 /etc/nginx 则是配置文件位置
cd /etc/nginx
![](https://i-blog.csdnimg.cn/blog_migrate/f2148821ba22c0fb6026941259f18c08.png)
nginx.conf 则是默认配置文件,编辑该文件
vim nginx.conf
![](https://i-blog.csdnimg.cn/blog_migrate/fcd47688c368456ef050356b3612e87d.png)
可以看到默认端口是 80
![](https://i-blog.csdnimg.cn/blog_migrate/cb9a60c6c0da8c81e77419914066d349.png)
可以更改默认端口---- i 切换到编辑模式 esc退出编辑模式 :wq 保存并退出 更多vim操作查文档
![](https://i-blog.csdnimg.cn/blog_migrate/f1e26c222c89c77d34735411377db396.png)
重启 nginx
此时再访问80端口就是报错,访问修改后的端口即可
![](https://i-blog.csdnimg.cn/blog_migrate/7e5ccd6f22ea6e242f68be239eea2a7b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bacb0f6499e9747b207028c28a42f121.png)
再次查看配置文件,端口是修改后的了
![](https://i-blog.csdnimg.cn/blog_migrate/95fa6aa211b8b31f65b0ab44b3c24a05.png)
修改网站的存放路径
假设是 /home/nmk/www/dist
![](https://i-blog.csdnimg.cn/blog_migrate/a070f4067922e9e891f6e8f0d8308bb4.png)
再次重启nginx服务
因为访问的文件夹不存在,所以 404
![](https://i-blog.csdnimg.cn/blog_migrate/a01c723f28f6d638e22c51c84398f967.png)
此时,切换到 /home/nmk
cd :切换目录
ls :查看当前目录下的文件
![](https://i-blog.csdnimg.cn/blog_migrate/ce9702fd3e65709579da0db61ada44d1.png)
新建www文件夹
mkdir www
再ls 就会多一个www文件夹
![](https://i-blog.csdnimg.cn/blog_migrate/3aaea172f47cee59be051b1eda1bffa7.png)
不需要创建dist文件,因为vue项目打包之后会自动放到dist文件中
前端项目上传
前端项目打包
npm run build
![](https://i-blog.csdnimg.cn/blog_migrate/5169092600ab7e5690032dcbc04fa6e7.png)
将文件夹上传至服务器的www文件夹下
---在cmd中操作就行
scp 文件路径 请求服务器 : 目标路径
![](https://i-blog.csdnimg.cn/blog_migrate/ac3c1f8eeae262f7c0d6a3dcc1e1c1ba.png)
如果上传失败,就把dist压缩再上传
![](https://i-blog.csdnimg.cn/blog_migrate/f8efb2d464a993c5d69a693f2ac4301a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/45533ef78c4ca91ca12b4554c411e10d.png)
访问服务器
不出意外的话,可以成功访问项目
出意外的话,比如:
403 无权限访问
切换到 /var/log/nginx
cd /var/log/nginx
vim error.log
可查看报错信息
![](https://i-blog.csdnimg.cn/blog_migrate/32e85959c6eab28615eff03d400c12df.png)
可以看出index.html无权限访问
切换至 /home/nmk/www/dist
cd /home/nmk/www/dist
查看文件的访问权限用户
ll
![](https://i-blog.csdnimg.cn/blog_migrate/53e7c4339350386793f7acca55b76827.png)
切换至 /etc/nginx
cd /etc/nginx
编辑配置文件
vim nginx.conf
![](https://i-blog.csdnimg.cn/blog_migrate/3197411adf5365643b98b57436154a88.png)
改为 root
重启nginx即可
404 未发现
(1)将路由模式改为hash
(2)修改nginx配置:
vim nginx.conf
![](https://i-blog.csdnimg.cn/blog_migrate/1179d097aee72d6496f8984a082d323d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/de4ade94ec4cddfad223a49e2c45604e.png)
重启即可
403 无权限
404 未找到
![](https://i-blog.csdnimg.cn/blog_migrate/1045bca9fd410d86e1ac9cdbe97d2ea4.png)
405 不可接受的请求方法
不允许静态文件响应POST请求,改为get请求
304 Not Modified
ETag:, 对比缓存,值没变,强制清除缓存即可,
200 请求无结果
但是如下
![](https://i-blog.csdnimg.cn/blog_migrate/7bc4f902f2bde1888da6ea231e7726dd.png)
502 无法正常响应
其他的错误,在error.log中查看,去查相关解决办法
Access to XMLHttpRequest at 'http://192.168.1.104:70/mol' from origin 'http://192.168.1.104' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
这个是资源没有请求到,比如数据库资源,数据库没开启,并不是前后端接口跨域
以上出现的问题,总结:
nginx配置文件问题
后端接口问题
跨域问题
缓存问题
请求方法
路由模式
具体情况具体分析叭。遇到问题查就可以了。
整个前后端项目部署可参考
https://blog.csdn.net/m0_51534164/article/details/129535227?spm=1001.2014.3001.5502