【前端部署】Ubuntu22.04 使用nginx部署vue前端项目教程

一.ubuntu安装nginx

1.更新本地软件包列表

sudo apt update

2.安装nginx

sudo apt install nginx

3.验证nginx是否安装成功

sudo systemctl status nginx

如果Nginx正在运行,则命令输出应该显示Active(active (running))状态。

在这里插入图片描述

4.若nginx未运行,则输入命令进行启动

sudo service nginx start

5.查看nginx版本信息

nginx -V

6.浏览器输入ubuntu所在服务器的ip地址

在这里插入图片描述
当我们看到如图所示,即说明nginx安装成功!

二.vue项目代码打包

方式一: 在vscode的终端输入

npm run build

方式二: 点击如图的红色方形部分的npm脚本进行项目代码打包

在这里插入图片描述

打包成功,则终端输出信息如下

在这里插入图片描述

当前目录下生成的dist文件夹就是打包好的vue项目代码

在这里插入图片描述

三.ubuntu修改nginx配置文件

nginx是依赖于其配置文件进行工作的,其配置文件路径是/etc/nginx/nginx.conf

使用下面的命令来查看默认配置文件

cat /etc/nginx/nginx.conf

如果你不想看到注释和空白,可以使用以下命令只显示具体内容

cat /etc/nginx/nginx.conf | grep -vE "#|^$"

在这里插入图片描述

接下来我将每行进行注释(注释以#开头):

user www-data;                        # 运行 Nginx 的用户
worker_processes auto;                # 自动设置 worker 进程数为 CPU 核心数
pid /run/nginx.pid;                   # Nginx 的 PID 文件路径
include /etc/nginx/modules-enabled/*.conf;  # 包含模块配置文件
events {                              # 事件处理模块的配置
        worker_connections 768;       # 每个 worker 进程的最大连接数
}
http {                                # HTTP 核心模块的配置
        sendfile on;                  # 开启 sendfile 功能
        tcp_nopush on;                # 开启 tcp_nopush 功能
        types_hash_max_size 2048;     # 设置 types_hash_max_size 参数的值
        include /etc/nginx/mime.types; # 包含 MIME 类型定义文件
        default_type application/octet-stream; # 默认 MIME 类型
        ssl_prefer_server_ciphers on; # 开启 SSL/TLS 功能
        access_log /var/log/nginx/access.log; # 访问日志文件路径
        error_log /var/log/nginx/error.log;   # 错误日志文件路径
        gzip on;                      # 开启 Gzip 压缩
        include /etc/nginx/conf.d/*.conf;    # 包含其他配置文件
        include /etc/nginx/sites-enabled/*;  # 包含虚拟主机配置文件
}

这里,我们只需要了解其中重要的3个部分:

  1. 第1行的 www-data 是运行nginx的用户,后面我们需要把该用户加入当前ubuntu用户所属组,保证www-data有足够权限访问当前ubuntu用户目录下的前端文件(因为本人是把前端文件的路径添加在当前ubuntu用户目录下的)。

  2. 倒数第3行的 include /etc/nginx/conf.d/*.conf;可以理解为把路径/etc/nginx/conf.d下的所有以.conf结尾的文件都复制到这里,而路径/etc/nginx/conf.d下的所有文件代表虚拟主机配置文件。

  3. 倒数第2行的 include /etc/nginx/sites-enabled/*;可以理解为把路径/etc/nginx/sites-enabled下的所有文件复制到这里,当我们进入目录/etc/nginx/sites-enabled下,会发现只有default一个文件。

    总结一下,当nginx运行的时候,会加载配置文件/etc/nginx/nginx.conf,而这个配置文件里面包含了目录/etc/nginx/sites-enabled下的所有文件(即文件default)


    这时可以参考之前查看 nginx.conf 的方式来查看default文件:

    cd /etc/nginx/sites-enabled
    
    cat ./default | grep -vE "#|^$"
    

    default文件内容如下:

    在这里插入图片描述

    文件中的配置信息进行注释,(以 # 开头)

     # 虚拟主机的配置
     server {
       # 侦听 80 端口,分别配置了 IPv4 和 IPv6
       listen 80 default_server;
       listen [::]:80 default_server;
    
       # 定义服务器的默认网站根目录位置
       root /var/www/html;
    
       # 定义主页的文件名
       index index.html index.htm index.nginx-debian.html;
    
       # 定义虚拟服务器的名称
       server_name _;
    
       # location 块
       location / {
         try_files $uri $uri/ =404;
       }
     }
    

    当我们在浏览器访问网站的时候是默认80端口的,如果我们需要在其他端口访问网站,例如8080端口,则需要修改listen 80 为listen 8080,则访问网站的时候需要在ip地址后面加上:8080。

    如果我们想更改网站文件存放的路径,直接修改 root 的路径就可以了

四.部署前端代码

理解上面内容后,我们可以开始部署前端文件了。一般情况下,我们是不会去修改nginx原有的配置文件内容,而是另外添加一些关键的文件,使得nginx在运行的时候顺带执行咱们添加的文件来完成相应的功能。

1.进入目录/etc/nginx/sites-enabled,创建文件myweb.conf,名字可以任意取,但是必须以.conf结尾

cd  /etc/nginx/sites-enabled
sudo touch myweb.conf

把以下内容添加到myweb.conf文件里面:

server {
   listen 8070 default_server; #可以把8070修改为你需要设置的端口号

   root /home/ubuntu/project/dist; #你的前端文件存放的路径地址

   index index.html index.htm;  #保证你的dist文件夹下面有个文件叫做index.html

   server_name localhost;  #这里的localhost替换为你自己的ubuntu所在ip地址
ubuntu
   location / {
       try_files $uri $uri/ =404;
   }
}

根据自己的情况进行以下修改:

  1. listen 8070 default_server;这里的8070可以修改为你需要设置的端口号
  2. root /home/ubuntu/project/dist;这里的/home/ubuntu/project/dist可以修改为你存放前端代码的具体路径,建议在当前ubuntu用户目录下新建一个project文件夹,把之前打包好的前端代码文件夹dist放在这里
  3. server_name localhost;这里的localhost替换为你自己的ubuntu所在的ip地址

总结一下,我们为什么要添加myweb.conf在目录/etc/nginx/sites-enabled下,因为之前有讲过nginx运行的时候是要加载目录/etc/nginx/sites-enabled下的所有文件,这样当然也就顺便把文件myweb.conf加载啦,而myweb.conf文件存放的是我们部署的前端代码文件的一些信息,这样nginx就能加载到咱们的前端代码啦。

2.上传打包好的前端代码文件夹dist到当前ubuntu用户所在的目录下,如/home/ubuntu/project,该目录需要根据自己的情况进行相应的修改,需要保证与myweb.conf文件下的root行所在的路径一致即可。

3.把nginx用户www-data添加到当前ubuntu的用户所属组:
使用命令groups查看当前用户所属组,例如
在这里插入图片描述

可以看到红色方框即为当前用户所属组,接着使用命令把用户www-data添加到当前用户组ubuntu

sudo usermod -a -G ubuntu www-data

该命令根据自己实际情况进行修改。

我们可以查看当前用户组的所有用户,判断是否添加成功:

getent group ubuntu

在这里插入图片描述

可以看到,我们添加成功了,这样nginx用户就有权限访问到咱们的前端代码啦!

4.在ubuntu所在的云服务器或者虚拟机添加防火墙规则,允许访问8070端口:

我这里使用的是云服务器,因此需要添加防火墙规则
在这里插入图片描述

5.在浏览器输入ip地址:8070即可访问到前端界面啦!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/613433.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】——课程平台的创建设计

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

2024HW Linux应急响应基础学习

首先展示关于Linux的关键目录,这是应急响应查看的关键: 常用命令 top //查看进程资源的占用情况 ps -aux //查看进程 直接写ps aux也可以 netstat -antpl //查看网络连接 ls -alh /proc/pid //查看某个pid对应的可执行程序 pid记得修改 lsof /…

微信登录功能--网站应用

微信开发平台注册https://open.weixin.qq.com/ 账号中心-填写基本资料(最好是公司注册) 账号中心-开发者资质认证(充钱,300) 审核通过之后,管理中心-网站应用-创建网站应用(AppSecret一定一定…

SMART700西门子触摸屏维修6AV6 648-0CC11-3AX0

西门子工控机触摸屏维修系列型号:PС477,PC677,TD200,TD400,KTP178,TP170A,TP170B,TP177A,TP177B,TP270,TP277,TP27,MP370,MP277,OP27,OP177B等。 触摸屏故障有:上电黑屏, 花屏,暗屏,触摸失灵,按键损坏,电源板,高压板故障,液晶,主板坏等,内容错乱、进不了…

nacos server安装部署傻瓜级教程

下载地址:GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.an easy-to-use dynamic service discovery, configuration and service management platfo…

C++ 搜索二叉树

目录 1.二叉搜索树概念 2. 实现二叉搜索树 2.1. 二叉搜索树的插入 2.2查找 2.3删除节点 3.二叉树的应用(KV结构) 1.二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为…

AutoCAD中密集的填充打散后消失的问题

有时候在AutoCAD中,图案填充的填充面积过大或填充太过密集时,将该填充打散,也就是执行Explode时,会发现填充图案消失了。 原因是打散后线条太大,系统就不显示了。可以通过设置:HPMAXLINES 值,来…

奇诡 matlab 小 bug matlab git需要记录的改动太多

似乎是我有一次添加了太多的路径之后的事情。但是不敢说一定是这个导致的: 症状:只要对文本进行任何编辑操作,工作区就会出现"Processing … Cancel"的提示,如果不管的话这个提示不会消失,同时matlab变得越来…

Minimal-Supervised Medical Image Segmentation via Vector Quantization Memory

文章目录 Minimal-Supervised Medical Image Segmentation via Vector Quantization Memory摘要方法实验结果 Minimal-Supervised Medical Image Segmentation via Vector Quantization Memory 摘要 辅助重构分支:该分支通过提供额外的监督并产生学习视觉表示所需…

2025COSP深圳户外展已定档招商工作正式启动!抢占先机,领跑华南市场

想开拓全国最具消费能力的华南市场? 想招到优质的实力经销商? 想快速的提高品牌知名度? 2025-COSP深圳国际户外展会将于2025年2月27-3月1日在深圳福田会展中心盛大开幕! 回顾过去 2024-COSP深圳国际户外展我们取得了较好的成绩…

UEC++ FString做为参数取值时报错error:C4840

问题描述 用来取FString类型的变量时报错: 问题解决 点击错误位置,跳转到代码: void AMyDelegateActor::TwoParamDelegateFunc(int32 param1, FString param2) {UE_LOG(LogTemp, Warning, TEXT("Two Param1:%d Param2:%s"), param…

流量分析(一)

数据库类流量分析 MySQL流量 常规操作,查找flag ctfhub{} 注意要选择字符集 Redis流量 查找ctfhub结果没找到 尝试把其变成十六进制继续进行查找 看到了前半段flag 接着往下看 找到了后半段的flag MongoDB流量 还是一样查找ctfhub 字符串没找到 转成十六进制也没…

【算法】二叉树中的dfs

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、计算布尔二叉树的值二、求根节点到叶节点数字之和三、二叉树剪枝四、验证搜索二叉树五、二叉搜索树中…

U盘文件剪切丢失怎么办?揭秘原因并给出恢复方法

在日常生活和工作中,U盘已成为我们不可或缺的数据存储和传输工具。但有时候,我们在对U盘中的文件进行剪切操作时,会遇到文件丢失的情况。这种突如其来的数据消失往往会让人感到惊慌和困惑。那么,为什么U盘剪切时文件会丢失呢&…

详解GaussDB(DWS)中的行执行引擎

1.前言 GaussDB(DWS)包含三大引擎,一是SQL执行引擎,用来解析用户输入的SQL语句,生成执行计划,供执行引擎来执行;二是执行引擎,其中包含了行执行引擎和列执行引擎,执行引擎…

DataLab-数据分析的Ai辅助工具

添加图片注释,不超过 140 字(可选)DataLab是一个由DataCamp提供的强大在线数据分析平台,它通过AI技术简化了数据处理流程,使得用户无需编程或数据分析的高级技能即可快速获取数据洞察。它支持多种数据源,包…

路由器、交换机和网卡

大家使用VMware安装镜像之后,是不是都会考虑虚拟机的镜像系统怎么连上网的,它的连接方式是什么,它ip是什么? 路由器、交换机和网卡 1.路由器 一般有几个功能,第一个是网关、第二个是扩展有线网络端口、第三个是WiFi功…

显影不干净如何解决?

知识星球(星球名:芯片制造与封测社区,星球号:63559049)里的学员问:光刻工序完成后,晶圆表面有部分图形容易出现显影不净是什么原因?有什么好的解决办法吗? 光刻工序流程 …

SQL常用函数

一、日期相关函数 1、CURDATE() / CURRENT_DATE 返回当前日期 2、CURRENT_TIME()/CURTIME() 返回当前时间 3、CURRENT_TIMESTAMP 返回当前日期时间 4、DATE()从日期或日期时间表达式中提取日期值 5、DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数 6、DATE_FORMAT按表达式…

求职网络安全:这个领域的就业机会正在增长

随着大安全时代的到来,网络安全已经从虚拟空间延伸到现实空间。当今网络战愈演愈烈,网络军备赛即将来临。网络空间领域的战争归根到底还是人才的竞争。面对新形势,建立高效的网络安全人才培养体系对中国信息安全产业发展和保证国家安全来讲都至关重要! 目…