服务器上部署前端页面-实现IP+端口/index.html在线访问你的网页

该文章已生成可运行项目,

首先一点,不管是那个框架开发的网页前端,最后都需要Build,构建完毕以后都是原始的HTML + CSS + JS 三样文件!

所以不管用原始的三剑客(HTML + CSS + JS)开发的前端还是用各类框架开发的前端界面(只是让开发简单了点,其他都差不多)部署在服务器上步骤类似!

1.准备前端的目录文件 2.服务器上下载个Tomcat 确保能运行 3.把前端文件放在Tomcat下的webApp文件夹即可

(一)简单的HTML/CSS/JS项目

1. 准备前端项目

确保你的项目已经准备好了所有的静态资源文件(如HTML, CSS, JavaScript等)。不需要进行任何构建步骤,因为你已经有了可以直接运行的文件。

2. 部署到Tomcat
  • 创建一个目录:在Tomcat的webapps目录下创建一个新的文件夹,例如命名为myapp
  • 复制文件:将你的所有前端文件(包括HTML, CSS, JS等)复制到这个新创建的myapp文件夹中。
  • 配置Web应用(可选):
    • myapp文件夹内创建一个名为WEB-INF的子文件夹。
    • WEB-INF文件夹内创建一个名为web.xml的文件,这是标准的Java Web应用程序描述符。对于纯静态内容的应用,web.xml可以非常简单,如下所示:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>
3. 启动或重启Tomcat

如果Tomcat已经在运行,你可以通过重启服务来使更改生效。如果还没有启动,那么现在就可以启动它了。通常可以通过命令行执行startup.sh(Linux/Mac)或startup.bat(Windows)来启动Tomcat。

4. 访问你的应用

在客户端的浏览器地址栏输入 http://<服务器IP>:<端口号>/<应用名> 来访问你的前端页面。例如,如果服务器IP为192.168.1.100,端口号为8080,应用名为myapp,则应访问 http://192.168.1.100:8080/myapp/

  • 8080 则是Tomcat中配置的端口,配置地点:

找到这个地方

(二)使用Vue框架的项目[VUE]框架网页开发02-如何打包Vue.js框架网页并在服务器中通过Tomcat启动-优快云博客

1. 构建Vue项目

确保你已经安装了Node.js和npm(或yarn)。在你的Vue项目根目录下运行构建命令:

npm run build

 或者如果你使用的是Yarn:

yarn build

这个命令会在项目的dist文件夹中生成生产环境的静态资源文件如下图:

你会惊奇的发现框架发布后的文件目录和自己不用框架开发的目录不是一样么! 

你会惊奇的发现框架发布后的文件目录和自己不用框架开发的目录不是一样么! 

你会惊奇的发现框架发布后的文件目录和自己不用框架开发的目录不是一样么! 

2. 准备Tomcat

确认你已经在服务器上安装并配置好了Apache Tomcat。启动Tomcat服务,确保它正常工作。你可以尝试在浏览器中访问 http://localhost:8080 来检查Tomcat是否正在运行(默认端口是8080)。

3. 部署构建后的Vue项目
  • 创建一个目录:在Tomcat的webapps目录下创建一个新的文件夹,例如命名为myvueapp
  • 复制文件:将构建输出的dist文件夹中的所有内容复制到这个新创建的myvueapp文件夹中。
  • 配置Web应用(可选):
    • myvueapp文件夹内创建一个名为WEB-INF的子文件夹。
    • WEB-INF文件夹内创建一个名为web.xml的文件,如下所示:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <error-page>
        <error-code>404</error-code>
        <location>/index.html</location>
    </error-page>
</web-app>
4. 启动或重启Tomcat

如果Tomcat还没有启动,现在可以启动它。如果已经启动,则可以重启以使更改生效。通常可以通过命令行执行startup.sh(Linux/Mac)或startup.bat(Windows)来启动Tomcat。

5. 访问你的Vue应用

在浏览器中输入 http://<服务器IP>:<端口号>/<应用名> 来访问你的Vue应用。例如,如果服务器IP为192.168.1.100,端口号为8080,应用名为myvueapp,则应访问 http://192.168.1.100:8080/myvueapp/

四、注意事项

1. 安全性

公开暴露Tomcat服务可能带来安全风险,请确保采取适当的安全措施,比如限制对Tomcat管理界面的访问、定期更新软件版本等

2. 性能优化

对于高流量网站,考虑使用反向代理服务器(如Nginx)来提高性能和安全性

3. 解决常见问题

模块解析错误

如果你的Vue项目在构建过程中遇到模块解析错误,例如:

ERROR in ./src/components/Home.vue?vue&type=script&lang=js 1:0-196 1:0-196 1:197-382 1:197-382 Module not found: Error: Can't resolve '../assets/project4.jpg' in 'D:\Node\leoyangWeb\vuegaoxiao01\src\components'

请检查以下几点:

  • 文件路径:确保引用的文件路径正确。
  • 文件名和扩展名:确认文件名和扩展名是否完全匹配(包括大小写)。
  • 相对路径:尝试使用相对路径来引用文件
本文章已经生成可运行项目
<think> 我们正在处理一个Vue项目中的跨域问题。前端页面运行在https://collector.ucfitness.club,访问后端接口https://www.ucfitness.club:443(实际上是https://www.ucfitness.club,因为443是默认端口)。 由于端口相同但主机名不同(collector vs www),浏览器会阻止跨域请求。 解决方案: 1. 后端配置CORS(推荐):在www.ucfitness.club的服务器上设置响应头,允许来自collector.ucfitness.club的请求。 2. 前端配置代理(开发环境):在Vue项目的开发环境中,我们可以配置开发服务器代理,将特定前缀的请求转发到目标接口。 3. 生产环境:生产环境部署在https://collector.ucfitness.club,如果后端不配置CORS,则需要通过同域的反向代理来避免跨域。 由于用户是在Vue开发中遇到问题,我们重点讲解开发环境的代理配置。 步骤: 在Vue项目的根目录下,创建或修改`vue.config.js`文件(如果没有的话),添加如下代理配置: ```javascript module.exports = { devServer: { proxy: { // 代理所有以/api开头的请求 '/api': { target: 'https://www.ucfitness.club', // 接口的域名 changeOrigin: true, // 开启代理,在本地创建一个虚拟服务器 secure: true, // 如果是https接口,需要配置这个参数 pathRewrite: { '^/api': '' // 重写路径,去掉/api前缀 } } } } } ``` 然后,在代码中调用接口时,将原本的`https://www.ucfitness.club/api/sport/data/smartBandDataList?userId=612`改为`/api/sport/data/smartBandDataList?userId=612`(即相对路径,以/api开头)。 这样,在开发环境下,请求会被代理到目标接口,从而避免跨域问题。 注意:此配置只适用于开发环境(使用`npm run serve`运行时)。生产环境需要部署在同域下,或者让后端开启CORS,或者使用Nginx反向代理。 如果生产环境前端和后端仍然在不同域名,那么必须要求后端配置CORS,或者在生产环境的前端服务器(如Nginx)中配置反向代理。 反向代理配置示例(Nginx): ```nginx location /api/ { proxy_pass https://www.ucfitness.club/; # 其他代理设置... } ``` 这样,生产环境的前端请求`/api/...`也会被代理到目标接口。 总结: 开发环境:使用Vue代理 生产环境:使用后端CORS或Web服务器反向代理 §§相关问题§§ 1. 在Vue项目中,除了使用`vue.config.js`配置代理,还有哪些方法可以解决开发环境下的跨域问题? 2. 当使用代理时,如何确保代理配置在同时需要对接多个不同域名接口时有效管理? 3. 在Nginx反向代理配置中,如何处理WebSocket的代理转发? 4. 如果后端接口要求身份认证(如Cookie),在Vue代理配置中需要注意哪些事项? 5. 生产环境部署时,如何避免因前端路由使用history模式而导致的Nginx配置问题? </think> 以下是针对 Vue 开发中跨域问题的完整解决方案,特别针对您的场景:在 `https://collector.ucfitness.club/debugTool/index.html#/` 访问 `https://www.ucfitness.club:443` 接口。 --- ### Vue 项目跨域解决方案 #### 1. 开发环境配置代理(推荐) 在 `vue.config.js` 中添加代理配置: ```javascript // vue.config.js module.exports = { devServer: { proxy: { '/api': { // 代理路径前缀 target: 'https://www.ucfitness.club', // 目标接口 changeOrigin: true, // 启用域名切换 secure: true, // HTTPS 验证 pathRewrite: { '^/api': '' // 移除代理前缀 }, headers: { // 添加必要头信息(如认证) 'Authorization': 'Bearer your_token_here' } } } } } ``` **前端调用方式**: ```javascript // 使用代理路径(开发环境) axios.get('/api/sport/data/smartBandDataList?userId=612') // 生产环境直接调用(需配置生产环境变量) axios.get(process.env.VUE_APP_API_BASE + '/sport/data/smartBandDataList?userId=612') ``` #### 2. 生产环境解决方案 在 `nginx.conf` 配置反向代理: ```nginx server { listen 443 ssl; server_name collector.ucfitness.club; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location /api/ { proxy_pass https://www.ucfitness.club/; # 注意结尾斜杠 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # CORS 头(可选) add_header 'Access-Control-Allow-Origin' 'https://collector.ucfitness.club'; } location / { root /var/www/debugTool; # Vue 项目构建目录 index index.html; try_files $uri $uri/ /index.html; # 支持 Vue Router } } ``` #### 3. 环境变量配置 创建 `.env.development` 和 `.env.production` 文件: ```ini # .env.development VUE_APP_API_BASE=/api ``` ```ini # .env.production VUE_APP_API_BASE=https://collector.ucfitness.club/api ``` #### 4. Axios 全局配置 在 `src/utils/request.js` 中: ```javascript import axios from 'axios' const service = axios.create({ baseURL: process.env.VUE_APP_API_BASE, timeout: 15000 }) // 请求拦截器 service.interceptors.request.use(config => { if (localStorage.getItem('token')) { config.headers.Authorization = `Bearer ${localStorage.getItem('token')}` } return config }) // 响应拦截器 service.interceptors.response.use( response => response.data, error => { console.error('API Error:', error) return Promise.reject(error) } ) export default service ``` --- ### 调试技巧 1. **检查代理是否生效**: ```bash # 查看代理请求 curl http://localhost:8080/api/sport/data/smartBandDataList ``` 2. **Vue CLI 代理日志**: ```javascript // vue.config.js devServer: { proxy: {...}, quiet: false // 显示详细代理日志 } ``` 3. **浏览器网络检查**: - 开发环境:请求应发送到 `localhost:8080/api/...` - 生产环境:请求应发送到 `collector.ucfitness.club/api/...` --- ### 常见问题处理 | 问题现象 | 解决方案 | |---------|---------| | 代理后返回 404 | 检查 `pathRewrite` 规则和接口路径 | | HTTPS 证书错误 | 在代理配置中添加 `secure: false`(仅开发) | | OPTIONS 预检失败 | 确保后端支持 OPTIONS 请求 | | 生产环境跨域 | 配置 Nginx 反向代理或要求后端添加 CORS |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity青子

难题的解决使成本节约,求打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值