从零开始的 vue项目部署到服务器详细步骤(vue项目build打包+nginx部署+配置ssl证书)

news/2024/10/30 6:13:16/

nginxssl_0">从零开始的 vue项目部署到服务器详细步骤(vue项目build打包+nginx部署+配置ssl证书)

文章目录

  • 从零开始的 vue项目部署到服务器详细步骤(vue项目build打包+nginx部署+配置ssl证书)
  • 一、前言
  • 二、vue项目部署前配置
    • 1、vite.config.js 增加base字段
    • 2、src/router/index.js 在历史记录中加入BASR_URL
    • 3、src/utils/request.js 加上后端的baseURL
  • 二、加SSl证书配置https
    • 1、将域名解析到你的服务器
    • 2、验证该域名是否解析成功
    • 3、let's Encrypt 证书申请
      • (1)certbot安装
      • (2)let's Encrypt 证书申请
  • 三、配置nginx
  • 四、后话
    • 1、完结
    • 2、每日小tip:ssl证书自动续订。

一、前言

未来的开发者们请上座,在这里许多人在自己的电脑做完前端后,下一步就是怎么部署到服务器上对外开放了。
ps:默认各位大大已经购买云服务器了哈。
我的服务器是ubutu 22.04,第一次跟随本教程的时候最好也是ubuntu系统,避免环境问题。

二、vue项目部署前配置

为了便于演示,我新建了一个项目用于演示。

1、vite.config.js 增加base字段

import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'// https://vite.dev/config/
export default defineConfig({base:'vue-test',//这个为项目名plugins: [vue(),],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}}
})

2、src/router/index.js 在历史记录中加入BASR_URL

在这里插入图片描述

3、src/utils/request.js 加上后端的baseURL

如果,涉及后端,则需要在拦截器那边加上后端的baseURL,。如果没有则不用管,同时后续nginx也不需要配这个路由

二、加SSl证书配置https

前置条件:我默认你已经有域名了,如果没有需要在国内的阿里云、腾讯云、华为云,国外的Hostinger等云服务商都提供域名注册和域名解析服务。找一个你喜欢的就可以,在这里我用的是阿里云注册的域名进行演示。
(国内的域名需要提前备案,15天左右。如果比较着急且只是演示可以用香港或者国外如Hostinger 云服务厂商提供的域名这样可以免掉备案的步骤)

1、将域名解析到你的服务器

在这里插入图片描述

等待20s左右让其传播。

2、验证该域名是否解析成功

执行 nslookup + 域名,即可查询域名解析对象

nslookup bak.sligenai.cn

在这里插入图片描述
看到解析到你的公网服务器的ip就完成了

3、let’s Encrypt 证书申请

(1)certbot安装

我们需要安装Certbot并用于申请let’s Encrypt 。
打开终端,运行以下命令:

sudo apt update
sudo apt install certbot python3-certbot-nginx

(2)let’s Encrypt 证书申请

 sudo certbot --nginx -d bak.sligenai.cn

如果是第一次,可能会要你输入你的邮箱和让你输入A或Yes同意一些条款你按着输入就行。
在这里插入图片描述
然后就生成好证书了。记得保存好fullchain.pem和private.pem的路径,这个等下会用到。

下面是我的fullchain.pem和private.pem的路径
/etc/letsencrypt/live/bak.sligenai.cn/fullchain.pem
/etc/letsencrypt/live/bak.sligenai.cn/privkey.pem

fullchain.pemprivkey.pem这两个文件对于配置Web服务器以安全地提供服务是非常重要的。下面是这两个文件的详细说明:
fullchain.pem

  • 含义fullchain.pem文件包含了你的域名证书以及任何中间证书的完整链,但不包括根证书。这个文件是将你的证书(cert.pem)和中间证书(chain.pem)合并而成的。在大多数Web服务器的SSL配置中,使用这个文件可以确保客户端(如Web浏览器)能够信任你的证书,即能够通过证书链验证到达一个根CA,该根CA已被客户端信任。
  • 用途:在配置SSL/TLS时,fullchain.pem通常用于服务器配置中指定证书文件。例如,在Nginx中,会用它来设置ssl_certificate指令。

privkey.pem

  • 含义privkey.pem文件包含了你的私钥,这是在生成CSR(证书签名请求)时创建的。私钥是安全通信的基础,用于在SSL/TLS握手过程中对服务器端信息进行加密,确保只有对应的公钥(即你的服务器证书)能够解密。私钥必须保密,任何泄露都可能导致通信被解密。
  • 用途:在Web服务器的SSL配置中,privkey.pem用于设置私钥文件的位置。例如,在Nginx配置中,会用它来设置ssl_certificate_key指令。

总结

  • fullchain.pem:包含你的域名证书和中间证书的全部内容,用于服务器配置中指定证书链。
  • privkey.pem:包含你的私钥,用于服务器配置中指定私钥文件的位置。

在配置SSL/TLS时,确保正确使用这些文件,同时保护好你的私钥,避免安全风险。

注1:如果你没有开放443,80端口,申请的时候会报错
注2:如果你没有将域名解析到这个服务器的ip也会报错,会出现类似下面的回复。

在这里插入图片描述

nginx_93">三、配置nginx

nginx_94">1、nginx安装

sudo apt update
sudo apt install nginx

nginxconf_100">2、配置nginx.conf

打开nginx.conf

 vim /etc/nginx/nginx.conf

下面是一个nginx.conf模版

# nginx.conf
worker_processes auto; # 与worker_connections乘积表示实际处理事件的总数events {worker_connections 1024;  # 每个工作进程连接数
}http {include       mime.types;   # 文件扩展名与文件类型映射表default_type  application/octet-stream;client_max_body_size 10M;sendfile        on;            # 减少网络报文数量keepalive_timeout  65; # 链接超时时间,自动断开,如果为0则无限时长。# HTTP server配置(重定向到HTTPS)server {listen 80;  # 监听80端口server_name bak.sligenai.cn;             # 替换为你的域名return 301 https://$host$request_uri;  # 强制重定向到HTTPS}# HTTPS server配置server {listen 443 ssl;  # 监听443端口server_name bak.sligenai.cn;             # 替换为你的域名ssl_certificate /etc/letsencrypt/live/bak.sligenai.cn/fullchain.pem;          #替换为你的fuuchian.pemssl_certificate_key /etc/letsencrypt/live/bak.sligenai.cn/privkey.pem;    #替换为你的privkey.pemroot         /usr/share/nginx/html;location / {index index.html index.htm;rewrite / /login permanent; # 根据需求选择是否保留}location /vue-test {                              #替换为你的项目路由,注意需要一开头的base一致index index.html index.htm;try_files $uri $uri/ /vue-test/index.html;       #这个则是/路由/index.html 前面的部分一致不用动。   }location /abc {   #替换为请求拦截器中的baseURL的地址,如果没有后端则可以删掉这一部分add_header Cache-Control no-cache;add_header Pragma no-cache;add_header Expires 0;proxy_pass  http://localhost:3777/;   #后端地址}error_page  404  /404.html;  # 自定义404页面location = /404.html {internal;}error_page  500 502 503 504  /50x.html;  # 自定义500页面location = /50x.html {internal;}}}

注1:上面一共两个路由 /vue-test、 /abc ,分别为前端和后端。
注2:如果有多个项目则复制/vue-test 在旁边粘贴一个,改掉路由即可。
注3: 如果有其他域名,则额外把上面这个server复制一遍,即可。

nginx_175">3、重新运行nginx

在这里插入图片描述
检测nginx.conf是否配置正常

nginx -t

如果报错,则按照提示修改即可。

重新运行nginx

sudo systemctl reload nginx

4、vue 编译后文件上传服务器

在这里我们使用SCP完成传输

scp(Secure Copy
Protocol)是一个在Linux和Unix系统上广泛使用的命令行工具,用于在本地和远程之间安全地复制文件和目录。它基于SSH(Secure
Shell)协议,提供了数据传输的加密和安全认证,确保在传输过程中数据不会被窃听或篡改。

scp的基本语法非常直接,可以用来复制文件或目录从一个位置到另一个位置。这里有几个常见的用法示例:

  1. 复制本地文件到远程
  2. 模版:scp /path/to/local/file username@remotehost:/path/to/remote/directory

我们要拷贝编译后文件到nginx的web页面放置地方:/usr/share/nginx/html
所以我们到项目路径下执行指令如下:(ip替换为你的)

scp -r .\dist\ root@123.57.210.235:/usr/share/nginx/html

在这里插入图片描述
重命名dist为路由的地址

四、后话

1、完结

然后我们进入:https://bak.sligenai.cn/vue-test/,可以看到已经访问成功了!
恭喜你!掌握了如何从零开始的 vue项目部署到服务器(vue项目build打包+nginx部署+配置ssl证书),执行上面的步骤如果有什么问题欢迎在下面提出!

至此,你已经成功为你的网站安装了Let’s Encrypt SSL证书,并配置了自动续订。你的网站现在应该也可以通过HTTPS安全访问了。
在这里插入图片描述

2、每日小tip:ssl证书自动续订。

let’s Encrypt的有效期是90天,怎么自动更新呢?运行下面的代码:

sudo certbot renew --dry-run

如果这个命令成功执行,那么证书续订工作将自动进行。


http://www.ppmy.cn/news/1543015.html

相关文章

jeecgbootvue2菜单路由配置静态文件夹(public)下的html

需求:想要在菜单配置src/assets/iconfont/chart.html显示页面(目的是打包上线以后运维依然可以修改数据) 官网没有相关数据:菜单配置说明 JeecgBoot 开发文档 看云 问题现象: 我把文件放在src/assets/iconfont/chart.html然后在vue中作为 iframe 的 src 属性&am…

嵌入式软件 Bug 排查与调试技巧

目录 1、准备工作 2、打印调试 实现步骤 注意事项 3、断点调试 4、观察点调试 5、远程调试 6、内存分析 内存泄漏检测 栈溢出检测 7、异常处理 8、性能分析 9、逻辑分析仪 10、示波器 11、常见bug类型 12、调试策略 1、准备工作 硬件工具准备 调试器:例如 J - …

开源一套基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单的源码

大家好,我是一颗甜苞谷,今天分享一款基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单的源码。 前言 在当今快速发展的商业环境中,库存管理对于企业来说至关重要。然而,许多企业仍然依赖于传统的、手动…

山海鲸报表VS微软Power BI:哪个报表工具更适合企业?

在当今数据驱动的商业环境中,选择一款合适的报表工具对企业至关重要。山海鲸报表和微软Power BI都是广受欢迎的报表工具,但两者在功能、用户体验和应用场景上各有不同。那么,在实际使用中,究竟哪款工具更能满足企业需求呢&#xf…

探讨Facebook的AI研究:未来社交平台的技术前瞻

在数字时代,社交媒体已成为人们日常生活的重要组成部分。作为全球最大的社交网络之一,Facebook不断致力于人工智能(AI)的研究与应用,以提升用户体验、增强平台功能并推动技术创新。本文将探讨Facebook在AI领域的研究方…

深入理解所有权与借用——借用与生命周期管理

1. 可变与不可变借用的应用场景 在 Rust 中,借用是通过引用来实现的,可以分为可变借用和不可变借用。这两种借用的使用场景和规则各不相同,理解它们的应用能够帮助我们编写安全的代码。 1.1 不可变借用的基本概念 不可变借用允许多个引用同…

内网穿透之网络层ICMP隧道

免责申明 本文仅是用于学习检测自己搭建的靶场环境有关ICMP隧道原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法规…

聊聊我在新加坡的近况

我是 2022 年 4 月初过来新加坡的,然后两个月后就把老婆孩子们也接了过来。时至今日,已经两年半有余了。 22 年 8 月初的时候,写过一篇文章「聊聊我在新加坡的生活和工作体验」,没想到成了一篇热门文章,在知乎上不知不…