Vue(7):vue项目部署到服务器通过公网IP访问

Vue项目部署到服务器通过公网IP访问

一、vue项目打包

1.打包项目及修改文件

​ 在本地的项目完成后,可能需要将其部署到服务器上,并且通过公网IP就可以访问到这个项目,下面介绍一下具体的部署流程。

​ 首先将写好的vue项目打包,在vue项目的当前目录下面运行npm run build,运行完成后,就可以发现项目中多了一个dist的文件夹,这是打包好的文件,可以用来直接运行。文件夹项目包含一个static和index.html文件,static文件下包含的是所有的源代码和数据,index.html是可以直接在本地运行的网页文件。

​ 在运行前先要改几个地方,才能够成功运行出来。在没有打包之前先打开config文件夹下面的index.js文件,修改如下图所示的dev和build对象中的assetsPublicPath属性,本来是’/’,现在改为’./’。完成后保存再进行打包操作(npm run build)。在这里插入图片描述
在这里插入图片描述
​ 打包完成后打开dist文件夹下面的index.html文件,把代码的路径改为和下图红色框中一样的路径。本来是’/’,现在改为’./’,一共四个地方,改好之后保存。然后运行这个HTML文件就可以在本地浏览器中看到主叫的项目了,如果能够成功运行,说明打包成功。

在这里插入图片描述

2.加载背景图片

​ 如果项目中有背景图片的话,如果按照上述操作,就不会显示出来。那么如何把背景图片也加载出来呢。打开build文件下面的utils.js文件,在如图所示的代码位置添加 publicPath: ‘…/…/’,这一行代码,就可以解决背景图片加载不出来的问题。

在这里插入图片描述

二、服务器配置环境

​ 上面vue项目配置完成后,先不用着急,把服务器上面的环境配置好才能运行。我用的服务器是阿里云Ubuntu服务器,远程连接工具为xshell。

​ xshell怎么连接服务器就不具体讲了,需要的自行百度。连接到服务器后,接下来按照下面的几个步骤进行操作。

​ 1.安装node环境,因为vue项目依赖于node,所以的先把这个安装好。在xshell中输入

apt install npm

​ 安装完成后输入npm -v来检查是否安装成功,如果命令行打印npm的版本号,说明安装成功。npm是国外的,下载速度很慢,所以换成cnpm,下载东西快一点。运行命令

npm i -g cnpm

​ 这个下载速度可能很慢,需要等待一会时间,不要没有安装完就直接取消了。如果报错没有安装成功,再安装一次试试。安装完成后可以输入命令 cnpm -v 来查看是否安装成功。

​ 安装完node后可以在命令行输入node,测试服务器是否安装好node.js环境。如果出现一个箭头,就代表安装完成。退出的话直接运行两次Ctrl+c。

​ 2.安装完成后,就需要把打包好的文件传到服务器上面去。查看我之前的教程《阿里云服务器初始配置》,在第三步中(登录连接到服务器),按照这一步操作给服务器安装lrzsz,来进行命令式的文件传送。或者通过xshell的xftfp来进行文件传送。选择vue项目中的dist文件夹,传送到服务器的根目录下面。如果不能选择文件夹,把dist文件夹压缩一下,然后服务器用压缩命令解压就可以了。

​ 3.vue项目中一般都是8080端口,阿里云服务器默认不开放这个端口,还是看《阿里云服务器初始配置》,在第二步中如何开发端口。开放完8080端口后,在xshell中运行命令cnpm i -g serve安装serve模块,然后进入到刚刚的dist文件夹下面,运行命令serve -l 8080,就成功将vue项目部署到服务器上面了。

============================ 2020-11-15 补充 ============================
最近想重新部署一个项目的时候,发现光从阿里云控制台打开端口还没有用,在那边打开端口可能只是开了一个外网可以访问的权限,如果服务器上面没有吧这个端口打开的话,也是没有用。可能之前阿里云就默认开了8080的端口。

现在想开放其他端口的话,还需要运行如下命令,把服务器上面的端口也打开。
以下的命令可以在centos上运行,也可以是Ubuntu

1、先查看一下防火墙已经开放了哪些端口
firewall-cmd --zone=public --list-ports

2、如果没有自己想打开的端口,就把端口开启,比如下面就是开放8099这个端口
firewall-cmd --zone=public --add-port=8099/tcp --permanent

3、使得上面配置立即生效
firewall-cmd --reload

4、如果想关闭当前这个端口
firewall-cmd --zone=public --remove-port=8099/tcp --permanent

启动: systemctl start firewalld
查看状态: systemctl status firewalld 
禁用,禁止开机启动: systemctl disable firewalld
停止运行: systemctl stop firewalld

============================ ============ ============================

​ 4.在浏览器中输入‘公网IP地址:端口(8080)’,就可以访问自己的项目了。注意不是xshell打印的地址,上面打印的地址为服务器的私网IP地址。

三、释放终端

​ 上面vue项目开启服务后会一直占用服务器的终端,如果想进行其他操作或者关闭xshell后,当前这个端口就会被关闭。如果想项目一直在服务器上面挂着,并且关闭xshell后或者估计后都可以访问到这个项目,那么进行如下的操作就可以解决这个问题。

​ 1.首先在命令行中cnpm i pm2 -g 来安装 PM2,然后确保服务器已经安装了vim和touch,一般都会有,不需要安装。在dist文件夹项目新建一个serve.sh文件,运行命令

touch serve.sh

​ 然后ls查看文件是否创建成功,创建成功后用vim打开,运行命令

vim serve.sh

先安装serve模块,否则可能获报错,造成其实服务已经起来了,但外网一直无法访问的情况出现。如果出错了可以通过pm2 logs来查看日志,看出现了什么错误。

npm install -g serve

​ 打开后在文件中写入

serve -l 8080

​ 在vim中的操作,i是插入,esc键是切换模式,:wq是保存并且退出,:q是退出。

​ 保存后退出vim编辑器。

​ 2.开启服务,运行命令。online代表在运行

pm2 start serve.sh

在这里插入图片描述

​ 3.如果想把这个服务停掉,运行命令

pm2 stop serve.sh

在这里插入图片描述

​ 至此vue项目部署到服务器上面就完成了,没有域名的就可以直接用公网IP地址:端口号的方式来访问了。

### 部署 Go 和 Vue3 项目到带有公网 IP服务器 #### 准备工作 为了成功部署基于 Gin 框架和 Vue3 构建的应用程序至拥有公网 IP服务器,需先完成如下准备工作: - **购买并配置云端服务器**:选择腾讯云或阿里云作为托管平台,并安装 CentOS 7 或 8 系统。确保已获取服务器公网 IP 地址[^1]。 - **环境搭建**: - 安装必要的软件包,如 Git、Node.js (用于 Vue 开发),以及 PostgreSQL 数据库。 - 设置防火墙规则允许 HTTP(S) 流量通过指定端口。 #### 后端部分——Gin API Server 对于后端应用而言,采用 Go 编写的 RESTful API 接口可以独立运行于任意支持该编程语言的操作系统之上。考虑到性能优化及安全性考量,建议直接利用 Go 自带的支持创建高性能 Web 应用的能力来启动服务,而非依赖额外的中间件层[^4]。 ```go package main import ( "log" "net/http" "github.com/gin-gonic/gin" ) func setupRouter() *gin.Engine { r := gin.Default() api := r.Group("/api/v1") { api.GET("/", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"message": "Welcome to the Go + Vue3 App!"}) }) } return r } func main() { router := setupRouter() log.Println("Starting server on :8080...") if err := router.Run(":8080"); err != nil { log.Fatal(err) } } ``` 上述代码展示了如何快速建立一个简单的 Gin 路由器实例监听 `:8080` 端口上的请求。 #### 前端部分——Vue3 单页面应用程序 前端工程则应编译成静态资源文件夹形式上传至目标主机。通常情况下会借助 CI/CD 工具链自动化这一过程;手动操作的话,则可通过命令行执行构建指令生成生产版本的 HTML/CSS/JS 文件集合。 ```bash npm run build ``` 这一步骤完成后将会在项目根目录下形成名为 `dist` 的输出路径,里面即包含了可分发给用户的最终产物。 #### Nginx 反向代理设置 为了让多个域名能够映射同一个物理位置下的不同前端项目,在此推荐使用 Nginx 来充当反向代理角色处理入站流量分配逻辑。编辑 `/etc/nginx/conf.d/default.conf` 添加类似下面所示的内容: ```nginx server { listen 80; server_name example1.com; location / { root /var/www/html/example1/dist; # 替换成实际存放 vue app 的 dist 文件夹路径 index index.html index.htm; try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://localhost:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 此处定义了一个虚拟主机条目专门服务于特定子域名称(`example1.com`),并通过内部转发机制将所有以 `/api/*` 开头的 URL 请求转交给本地正在运行中的 Go API 服务器处理。 #### 实现多域名指向同一台机器的不同前端项目 针对存在多个顶级域名均需解析回相同 IP 地址却对应着各自专属界面的情况,只需重复上面提到过的 Nginx configuration snippet 中关于 `server {}` block 的声明即可满足需求。每新增一组 `<domain-name>.conf` 文件便意味着又增加了一种可能的服务模式[^3]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值