当前位置: 首页 > news >正文

OpenEuler 等 Linux 系统中运行 Vue 项目的方法

在 OpenEuler 等 Linux 系统中运行 Vue 项目,通常需要经过环境准备、项目部署、启动服务三个步骤。以下是详细操作指南:

一、准备运行环境

Vue 项目依赖 Node.js(包含 npm 包管理器),需先安装:

1. 安装 Node.js 和 npm
  • 方法 1:通过系统包管理器(推荐,适合 OpenEuler)
    OpenEuler 的软件源中可能包含 Node.js,直接安装:

    # 查看可用可用版本
    sudo dnf search nodejs# 安装(以Node.js 16为例,可根据项目需求选择版本)
    sudo dnf install -y nodejs-16.x86_64  # 具体版本号以搜索结果为准# 验证安装
    node -v  # 输出Node.js版本,如v16.20.2
    npm -v   # 输出npm版本,如8.19.4
    
  • 方法 2:通过 NodeSource 安装(适合需要特定版本)
    若系统源版本不符,可使用 NodeSource 脚本安装:

    # 安装Node.js 18(其他版本替换数字即可)
    curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    sudo dnf install -y nodejs  # OpenEuler使用dnf,Ubuntu用apt
    

二、获取 Vue 项目代码

  1. 克隆项目(若使用 Git)

    git clone <项目仓库地址>
    cd <项目目录>  # 进入项目文件夹
    
  2. 或上传本地项目
    通过scp或 FTP 工具将本地 Vue 项目文件夹上传到 Linux 服务器,例如:

    scp -r /本地项目路径 user@服务器IP:/目标路径
    cd /目标路径/项目文件夹
    

三、安装项目依赖

进入项目目录后,安装package.json中定义的依赖:

# 安装依赖(使用npm)
npm install# 若依赖安装缓慢,可切换淘宝镜像
npm config set registry https://registry.npm.taobao.org
npm install
  • 若出现依赖冲突(如peer dependency错误),可尝试:
    npm install --force  # 强制安装(谨慎使用,可能引发兼容性问题)
    # 或使用yarn(需先安装yarn:npm install -g yarn)
    yarn install
    

四、运行 Vue 项目

根据项目配置,选择以下方式启动:

1. 开发环境运行(npm run serve

适合开发阶段,启动带热更新的开发服务器:

# 启动开发服务(默认端口8080)
npm run serve
  • 输出类似:App running at: http://localhost:8080/
  • 若需外部访问(如从本地浏览器访问服务器上的项目),需修改vue.config.js配置允许跨域和指定主机:
    // 在项目根目录的vue.config.js中添加
    module.exports = {devServer: {host: '0.0.0.0',  // 允许所有IP访问port: 8080,       // 端口(可自定义)disableHostCheck: true  // 关闭主机检查(避免跨域问题)}
    }
    
    重启服务后,通过服务器IP:8080访问。
2. 生产环境部署(构建 + 静态服务)

适合正式上线,先构建静态文件,再用 Web 服务器(如 Nginx)运行:

步骤 1:构建静态文件
# 生成dist文件夹(包含HTML/CSS/JS等静态资源)
npm run build

构建成功后,项目根目录会生成dist文件夹。

步骤 2:用 Nginx 部署静态文件
  1. 安装 Nginx

    sudo dnf install -y nginx
    sudo systemctl start nginx
    sudo systemctl enable nginx  # 设置开机启动
    
  2. 配置 Nginx

    # 创建项目配置文件
    sudo vi /etc/nginx/conf.d/vue-project.conf
    

    添加以下内容(替换/path/to/your/project/dist为实际dist文件夹路径):

    server {listen 80;  # 访问端口server_name localhost;  # 服务器IP或域名root /path/to/your/project/dist;  # 静态文件目录index index.html;# 处理Vue路由(避免刷新404)location / {try_files $uri $uri/ /index.html;}
    }
    
  3. 验证配置并重启 Nginx

    sudo nginx -t  # 检查配置是否有误
    sudo systemctl restart nginx
    
  4. 访问项目
    在浏览器中输入服务器IP(或配置的域名),即可访问生产环境的 Vue 项目。

五、常见问题解决

  1. 端口被占用
    开发环境启动时若提示EADDRINUSE: address already in use :::8080,需释放端口:

    # 查找占用8080端口的进程
    netstat -tuln | grep 8080
    # 杀死进程(替换PID)
    kill -9 <PID>
    
  2. 权限问题
    安装依赖时若提示Permission denied,避免使用root用户,或添加--unsafe-perm

    npm install --unsafe-perm
    
  3. 防火墙阻断端口
    若无法访问 8080 或 80 端口,开放端口:

    # 开放8080端口(开发环境)
    sudo firewall-cmd --add-port=8080/tcp --permanent
    # 开放80端口(生产环境Nginx)
    sudo firewall-cmd --add-port=80/tcp --permanent
    # 刷新配置
    sudo firewall-cmd --reload
    

总结

  • 开发环境:npm run serve(需 Node.js,适合调试);
  • 生产环境:npm run build + Nginx 部署(性能更好,适合正式上线)。
    根据实际需求选择方式,确保 Node.js 版本与项目依赖兼容(可在package.json中查看engines字段)。
http://www.dtcms.com/a/334129.html

相关文章:

  • 【P14 3-6 】OpenCV Python——视频加载、摄像头调用、视频基本信息获取(宽、高、帧率、总帧数)
  • C++ string类操作全解析(含模拟实现)
  • 高等数学 8.4 空间直线及其方程
  • [Linux] Linux硬盘分区管理
  • AI 搜索时代:引领变革,重塑您的 SEO 战略
  • MySQL异步连接池的学习(五)
  • PHP反序列化的CTF题目环境和做题复现第2集_POP链构造
  • 生产环境Redis缓存穿透与雪崩防护性能优化实战指南
  • 马拉松|基于SSM的马拉松报名系统微信小程序的系统设计与实现(源码+数据库+文档)
  • 【数据分享】大清河(大庆河)流域上游土地利用
  • Java设计模式详细解读
  • 双向SSL认证之Apache实战配置
  • 【分数求和1】
  • LintCode第116题-跳跃游戏
  • 【leetcode】5 最长回文子串 动态规划法
  • Horse3D游戏引擎研发笔记(六):在QtOpenGL环境下,仿Unity的材质管理Shader绘制四边形
  • AI云电脑盒子技术分析——从“盒子”到“算力云边缘节点”的跃迁
  • 【运维心得】三步更换HP笔记本电脑外壳
  • 电路方案分析(二十一)笔记本电脑散热风扇参考设计
  • OBOO鸥柏丨75寸/86平板企业办公会议触控一体机核心国产化品牌招投标参数
  • OpenCV Python——图像拼接(一)(图像拼接原理、基础知识、单应性矩阵 + 图像变换 + 拼接)
  • 国外护理学专业期刊Top10分析评介
  • 知识点汇总LinuxC高级 -1
  • 【嵌入式FreeRTOS#7】中断管理实验
  • 《C++进阶之继承多态》【多态:概念 + 实现 + 拓展 + 原理】
  • MoE及其优化技术->COMET(字节)
  • Spring MVC 九大组件源码深度剖析(三):ThemeResolver - 动态换肤的奥秘
  • 国产碳化硅模块及顶部散热的11种封装产品介绍应用
  • 标准瓦片层级0~20,在EPSG:4326坐标系下,每个像素点代表的度数
  • Spring AI Starter和文档解读