Vue部署项目到阿里云云服务器的实现步骤

 更新时间:2025年12月30日 08:21:56   作者:天呐草莓  
本文主要介绍了部署 Vue 项目到阿里云云服务器,将文件上传到服务器,使用Nginx作为Web服务器提供服务,配置Nginx以支持前端路由,感兴趣的可以了解一下

部署 Vue 项目到阿里云云服务器 (CentOS/Ubuntu 为例)

核心步骤: 在本地构建 Vue 项目生成静态文件,然后将这些文件上传到服务器,并使用 Nginx 作为 Web 服务器提供服务。

前提条件:

  1. 一台运行 Linux (如 CentOS 或 Ubuntu) 的阿里云 ECS 实例。
  2. 本地开发环境已安装 Node.js 和 npm/yarn。
  3. 本地已安装 SSH 客户端 (如 OpenSSH)。
  4. 服务器已安装 Nginx。
  5. 拥有服务器的 SSH 登录权限 (用户名和密码或密钥对)。

详细步骤:

1. 本地构建 Vue 项目

  • 打开终端,进入你的 Vue 项目根目录。
  • 运行构建命令生成静态文件:
    npm run build
    # 或者使用 yarn
    yarn build
    
  • 构建完成后,项目目录下会生成一个 dist 文件夹。这个文件夹里包含了所有优化压缩后的 HTML、CSS、JavaScript 和静态资源文件。这就是你需要上传到服务器的内容。

2. 服务器环境准备

  • 登录服务器: 使用 SSH 登录你的阿里云服务器。
    ssh username@your_server_ip
    # 如果使用密钥,可能需要指定密钥路径
    ssh -i /path/to/your-key.pem username@your_server_ip
    
  • 安装 Nginx (如果未安装):
    • Ubuntu:
      sudo apt update
      sudo apt install nginx
      
    • CentOS:
      sudo yum update
      sudo yum install nginx
      
  • 启动并设置 Nginx 开机自启:
    sudo systemctl start nginx
    sudo systemctl enable nginx
    
  • 配置防火墙 (如果启用): 确保防火墙允许 HTTP (端口 80) 和 HTTPS (端口 443) 的流量。阿里云安全组也需要在控制台开放这些端口。
    • Ubuntu (ufw):
      sudo ufw allow 'Nginx Full' # 允许 HTTP(80) 和 HTTPS(443)
      
    • CentOS (firewalld):
      sudo firewall-cmd --permanent --add-service=http
      sudo firewall-cmd --permanent --add-service=https
      sudo firewall-cmd --reload
      

3. 上传构建文件到服务器

  • 在本地终端 (不是在服务器上),使用 scp 命令将 dist 文件夹上传到服务器的一个目录。选择一个合适的目录,例如 /var/www/your_project_name 或用户家目录下的某个位置。
    scp -r /path/to/your/local/vue-project/dist username@your_server_ip:/path/to/target/directory/on/server
    # 示例: scp -r ./dist user@123.123.123.123:/var/www/my-vue-app
    
    • -r: 递归复制整个目录。
    • 替换 /path/to/your/local/vue-project/dist 为你的本地 dist 文件夹的实际路径。
    • 替换 username 为你的服务器用户名。
    • 替换 your_server_ip 为你的服务器公网 IP 地址。
    • 替换 /path/to/target/directory/on/server 为你想存放 dist 文件夹内容的服务器目标路径。确保该目录存在,或者先登录服务器创建它 (mkdir -p /path/to/target/directory)。

4. 配置 Nginx

  • 登录服务器。
  • 创建一个新的 Nginx 服务器块 (Server Block) 配置文件。通常放在 /etc/nginx/conf.d//etc/nginx/sites-available/ (Ubuntu) 并在 sites-enabled/ 创建符号链接。这里以 /etc/nginx/conf.d/ 为例:
    sudo nano /etc/nginx/conf.d/your_project_name.conf
    
  • 在打开的编辑器中,输入类似下面的配置:
    server {
        listen 80;
        server_name your_domain.com www.your_domain.com; # 替换为你的域名,或者用服务器IP时写 _ (下划线)
        # server_name _; # 如果没有域名,使用 IP 访问,可以用这个
    
        root /path/to/your/dist/folder/on/server; # 替换为 dist 文件夹在服务器上的实际路径
        index index.html;
    
        location / {
            try_files $uri $uri/ /index.html; # 对于 Vue Router 的 history 模式非常重要
        }
    
        # 可选:配置错误页面
        error_page 404 /index.html;
    }
    
    • 关键点:
      • root: 必须指向你上传的 dist 文件夹的路径。
      • try_files $uri $uri/ /index.html;: 这是处理前端路由 (如 Vue Router 的 history 模式) 的关键。它告诉 Nginx 在找不到文件时尝试加载 index.html,由 Vue 应用处理路由。
      • server_name: 如果你有域名,填域名。如果只用 IP 访问,可以写 server_name _;
  • 保存并退出编辑器 (在 nano 中按 Ctrl + O 保存,Ctrl + X 退出)。
  • 测试 Nginx 配置: 运行以下命令检查配置文件语法是否正确:
    sudo nginx -t
    
    如果输出显示 syntax is oktest is successful,则配置正确。
  • 重新加载 Nginx: 让新的配置生效:
    sudo systemctl reload nginx
    

5. 访问你的应用

  • 打开浏览器。
  • 访问你的服务器公网 IP 地址 (例如 http://123.123.123.123) 或者你配置的域名 (例如 http://your_domain.com)。
  • 如果一切配置正确,你应该能看到部署好的 Vue 应用了。

补充说明:

  • HTTPS (SSL/TLS): 强烈建议在生产环境中使用 HTTPS。你需要获取 SSL 证书 (可以从阿里云 SSL 证书服务购买或使用 Let’s Encrypt 免费证书),并在 Nginx 配置中添加监听 443 端口的 server 块,配置 ssl_certificatessl_certificate_key 路径。配置完成后也需要 sudo nginx -tsudo systemctl reload nginx
  • 域名绑定: 如果你使用域名,需要在你的域名注册商处将域名解析 (A 记录) 指向你的阿里云服务器的公网 IP 地址。阿里云域名解析在阿里云 DNS 控制台操作。
  • 权限问题: 确保 Nginx 进程 (通常是 www-datanginx 用户) 对你上传的 dist 文件夹及其内容有读取权限。如果遇到 403 Forbidden 错误,检查权限 (ls -l /path/to/dist) 并可能需要修改 (sudo chmod -R 755 /path/to/dist, sudo chown -R nginx:nginx /path/to/dist - 根据你的 Nginx 用户调整)。
  • 路由刷新问题: 如果使用 Vue Router 的 history 模式,并且刷新页面时出现 404,一定是 Nginx 配置中缺少或错误配置了 try_files $uri $uri/ /index.html; 这行。仔细检查。

按照以上步骤操作,你应该能够成功地将你的 Vue 项目部署到阿里云服务器上。

到此这篇关于Vue部署项目到阿里云云服务器的文章就介绍到这了,更多相关Vue部署项目到阿里云内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue+tsx使用slot没有被替换的问题

    Vue+tsx使用slot没有被替换的问题

    本文主要介绍了Vue+tsx使用slot没有被替换的问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • vue-baidu-map实现区域圈线和路径的渐变色

    vue-baidu-map实现区域圈线和路径的渐变色

    这篇文章主要介绍了vue-baidu-map实现区域圈线和路径的渐变色方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Vue Promise解决回调地狱问题实现方法

    Vue Promise解决回调地狱问题实现方法

    这篇文章主要介绍了Vue Promise解决回调地狱问题,总的来说这并不是一道难题,那为什么要拿出这道题介绍?拿出这道题真正想要传达的是解题的思路,以及不断优化探寻最优解的过程。希望通过这道题能给你带来一种解题优化的思路
    2023-01-01
  • Vue之mixin混入详解

    Vue之mixin混入详解

    这篇文章主要为大家介绍了Vue之mixin混入,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • vue前端实现验证码登录功能

    vue前端实现验证码登录功能

    这篇文章主要介绍了vue前端实现验证码登录功能,登录时图形验证通过三种方法结合实例代码给大家讲解的非常详细, 通过实例代码介绍了vue登录时图形验证码功能的实现,感兴趣的朋友一起看看吧
    2023-12-12
  • Vue2递归组件实现树形菜单

    Vue2递归组件实现树形菜单

    这篇文章主要为大家详细介绍了Vue2递归组件实现树形菜单的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Vue2.0+ElementUI实现查询条件展开和收起功能组件(代码示例)

    Vue2.0+ElementUI实现查询条件展开和收起功能组件(代码示例)

    文章介绍了如何将查询条件表单封装成一个通用组件,以提高开发效率,组件支持多条件的折叠和展开功能,并提供了使用示例,感兴趣的朋友一起看看吧
    2025-01-01
  • vue中字典的使用

    vue中字典的使用

    这篇文章主要介绍了vue中字典的使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • 详解vue-router 动态路由下子页面多页共活的解决方案

    详解vue-router 动态路由下子页面多页共活的解决方案

    这篇文章主要介绍了vue-router 动态路由下子页面多页共活的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 关于Element-UI中slot的用法及说明

    关于Element-UI中slot的用法及说明

    这篇文章主要介绍了关于Element-UI中slot的用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10

最新评论