Linux 环境下部署 VUE 前端项目

目录

1、安装下载Nginx

2、vue项目配置跨域请求

3. 打包vue项目并上传到服务器上

4. 修改Nginx配置

参考文章:


1、安装下载Nginx

运行以下终端命令行进行Nginx安装

sudo apt-get install nginx

安装完成后查看nignx版本,显示版本信息则说明安装成果

tanghao@DESKTOP-KL9JBME:~$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

启动nginx,如正确启动,则不会出现任何提示信息。

sudo nginx

这里需要注意,启动nginx的时候可能会出现端口占用的情况,这个时候需要杀死占用进程。

根据Nginx配置文件查看配置的端口默认的是80端口,然后我们输出指令查看端口占用情况。输入命令:sudo netstat -ntlp|grep 80。

查看到占用的端口后,输入kill命令杀死占用进程:sudo kill -9 1515087(进程号根据你自己的来输入)

最后,重启nginx:sudo nginx

tanghao@DESKTOP-KL9JBME:~$ sudo netstat -ntlp|grep 80
tcp        0      0 127.0.0.1:42475         0.0.0.0:*               LISTEN      802/node
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1515087/nginx: mast
tcp6       0      0 :::80                   :::*                    LISTEN      1515087/nginx: mast

tanghao@DESKTOP-KL9JBME:~$ sudo kill -9 1515087

nginx启动成功后打开服务器的外网面板地址,在浏览器输入本机ip后可以看到如下界面,至此成功大半!!

2、vue项目配置跨域请求

当在前端vue项目中需要调取受同源策略保护的Web API时,即发生所谓跨域请求,此时发送不成功,一般可以采用ajax的jsonp发起跨域请求,而对于vue项目的axios不支持jsonp请求。在开发环境下,可以选择修改vue.config.js文件来发起跨域请求。

下述代码中设置了一个代理请求 '/api',代理的目标地址是 https://172.xx.xx.xx:8080,即后端服务器的ip及网关端口。

module.exports = {
  devServer: {
    port: port,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    proxy: {
      '/api': {
        target: 'https://172.xx.xx.xx:8080',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

changeOrigin: true 代表支持跨域(必写);

pathRewrite代表重写路径。在发起请求过程中,对于url中以'/api'开头的请求,首先会将/api重写为空字符串,然后将vue.config.js文件中'/api'对应的target目标地址连接到请求头部,即若请求url为“ /api/management/login”,则实际会将请求发送到 https://172.xx.xx.xx:8080/management/login,从而实现跨域请求;

export function login(data) {
  return request({
    url: '/management/login',
    method: 'post',
    data
  })
}

3. 打包vue项目并上传到服务器上

在VS Code或者IDEA中打开已完成的前端Vue项目,输入如下命令进行打包,打包完成后再当前目录下出现名为dist文件夹,即为需要上传到服务器上的文件夹。

npm run build:prod
# 具体是否为该命令需查看项目目录下的package.json文件(一般是npm run build)

4. 修改Nginx配置

首先需要先暂停Nginx服务(一定要做!!!)sudo nginx -s stop

使用如下命令查看Nginx配置文件路径:sudo nginx -t

tanghao@DESKTOP-KL9JBME:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

使用vim命令打开配置文件进行编辑,在http{}中添加服务server,如下所示:sudo vim /etc/nginx/nginx.conf

server {
        listen       8060;  #自己设置端口号,访问前端的端口号
        server_name  xxx;  #自己设置项目名称
        location / {
            root   /home/tanghao/front-end/dist;  #服务器上vue项目的所在地址
            index  index.html;  #这里是vue项目的首页,需要保证dist中有index.html文件
        }

        #添加代理配置

        location /api/ {
            rewrite ^/api/(.*) /$1 break;             # 做统一代理
            proxy_pass https://172.xx.xx.xx:8080;     # 后端服务 ip、端口
        }

        error_page   500 502 503 504  /50x.html;  #错误页面
}

nginx.conf文件配置完成后,需要重新加载配置文件,执行如下命令:sudo nginx -c /etc/nginx/nginx.conf

完成后重新开启Nginx服务:sudo nginx -s reload

此时点击配置文件中所设置的连接: 前端服务器ip: listen(ip:port)即可访问部署完成的网页,如此处需要访问  http://xx.xx.xx.xx:8060

大功告成啦~~~

参考文章:

用Nginx将前端Vue项目部署到云服务器(含代理实现请求跨域)

Nginx启动时提示nginx: [emerg] still could not bind()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值