### 部署 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 :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]。 ---