通过使用XShell工具、Nginx环境实现服务器项目构建与发布

前言:

在信息化和数字化的今天,网站和应用的构建与发布已成为企业发展的重要一环。为了确保项目的顺利上线和稳定运行,选择合适的工具和环境至关重要。本文将详细介绍如何通过XShell工具以及Nginx环境来实现服务器项目的构建与发布,为广大开发者提供一条高效、便捷的路径。如果想学习Ubuntu系统下载和学习资料的可以私我,如果需要的人多的话将会发布一篇关于Ubuntu系统的介绍。

一、为什么需要打包项目

浏览器只能识别并运行html、css、js 文件 。 换句话而言,项目中用vue ,react框架做的项目文件,浏览器是不认识的。 而打包的过程就是把 vue 的关键文件打包成 html、css、js 的文件,让浏览器进行识别,并展示我们的项目。

二、打包之后项目可以通过浏览器直接访问吗

通过 npm run build 打包项目之后,打包的文件会被放入到 dist文件夹中,然后我们直接双击 index.html文件,可以发现,浏览器是无法显示项目的。原因是因为一些文件找不到了。 查看我们的url可以发现,其实我们的url是一个file协议。那么对应的文件路径就会编程盘符下的,在我们当前的盘符下没有对应的文件,那么自然是无法找到的。 而想要解决这个问题的话,就需要把我们的项目运行到一个服务器上,并且把项目部署到服务器之中,这样我们就可以访问啦。 而服务器的存在就是为了可以托管我们的项目,从而避免出现模块无法被找到的问题。

三、域名、DNS、公网IP、服务器、Nginx之间的关系

 1. 域名:https://blog.csdn.net/weixin_63152500?type=lately

域名是一个容易识别和记忆的网址,如https://www.zhihu.com/。它是用户访问网站时输入的网址,方便用户记忆和访问,而不需要记住复杂的IP地址。

2. DNS:域名解析服务器

DNS是Domain Name System的缩写,是一个分布式的目录服务,将用户易于记忆的域名与服务器IP地址进行关联。当用户输入域名时,DNS服务器会查询并将域名转换为相应的IP地址,从而帮助用户访问到目标服务器。

3. 公网IP:服务器在网络中的唯一地址

公网IP是服务器在互联网上的唯一地址,当DNS将域名解析为IP地址时,这个IP地址就是公网IP。用户通过这个公网IP地址,可以访问到部署在服务器上的服务。

4. 服务器:服务部署的电脑

服务器是一台高性能的计算机,用于存储、处理和传输数据。在Web服务中,服务器通常用于部署和运行网站和应用程序。用户可以通过访问服务器的公网IP地址或使用域名来访问这些服务。

5. Nginx:网页服务

Nginx是一个高性能的HTTP和反向代理web服务器,特点是占有内存少,并发能力强,有报告表明能支持高达50000个并发连接数。在Web服务中,Nginx通常用于处理大量的并发连接,提供静态文件服务,通过Nginx,可以实现负载均衡、SSL加密、访问控制等功能,提高网站的性能和安全性。

四、XSHELL和XFTP安装

  1. 打开XShell官网,​​​点击所有下载->所有家庭/学校免费版。

  2. 下载地址:

XSHELL和XFTP安装地址icon-default.png?t=N7T8https://www.xshell.com/zh/free-for-home-school/

五、服务器购买

 1、服务器可在华为云,阿里云,腾讯云官网上根据需求选择合适的服务器类型。

华为云对象存储服务器OBS:https://console.huaweicloud.com/console/?region=cn-east-3#/home

 阿里云对象存储OSS:https://www.aliyun.com/product/oss

 腾讯云轻量应用服务器:https://console.cloud.tencent.com/lighthouse/instance/index?rid=1

2、购买后拿到服务器IP,用户名和密码。

3、打开管理控制台,您可以找到服务器的配置选项,然后找到通信或网络相关的设置,进行端口的配置。

如果是自己编写的程序,一般使用1024以后的端口号,到65535.1023之前都是熟知端口。8081端口号通常用于 HTTP 代理或 Web 代理服务器的服务端口,tomcat文件服务器端口号为8060 uni-ui的端口号为8080,前端项目使用8081。

 

六、Xshell连接服务器

  • 双击空白处新建会话,名称自定义,主机填写服务器IP

  •  ctrl+鼠标点击会话,输入服务器用户名和密码

   

  • 显示连接成功  

 

七、使用XSHELL工具搭建Nginx环境步骤

 注意当前是在 / 路径下执行,可以使用pwd命令查看,如果是 /root 下要执行 cd / 命令

 1、pwd命令查看当前路径

pwd

 2、如果是/root 路径要改变成 / 

cd /

 3、首先

sudo apt update

4、nginx编译时依赖gcc环境

sudo apt install gcc g++

 5、安装prce,让 nginx支持重写功能

 sudo apt search pcre*

 6、安装zlib, nginx使用zlib对http包内容进行gzip压缩

 sudo apt install zlib1g zlib1g-dev

 7、安装openssl,用于通讯加密

 sudo apt install openssl libssl-dev

 8、进行nginx安装

 mkdir nginx

 9、进入nginx文件夹

cd nginx/

 10、在nginx中下载nginx压缩包

 wget https://nginx.org/download/nginx-1.22.0.tar.gz

 11、解压nginx

 tar -zxvf nginx-1.22.0.tar.gz

 12、进入nginx-1.22.0目录中查看

 cd nginx-1.22.0/

 13、查看可执行文件

 ll

 14、在nginx-1.22.0目录中检查平台安装环境

./configure --prefix=/usr/local/nginx

 15、如果不能执行make命令,先安装再执行

sudo apt install make

 16、进行源码编译

 make

 17、安装nginx

 make install

 18、查看nginx配置

/usr/local/nginx/sbin/nginx -t

19、 若不想执行复杂/usr/local/nginx/sbin/nginx -t来查看则需要制作软连接,制作nginx软连接进入进入usr/bin目录

cd /usr/bin/

 20、制作软连接

 ln -s /usr/local/nginx/sbin/nginx nginx

 21、接下来制作开始配置文件,首先进入到nginx的默认配置文件中

vim /usr/local/nginx/conf/nginx.conf

 80改成8001,并且在该文件在最底部增加配置项(按下i进入输入模式)如图:

22、按下esc键,通过:wq!保存并退出

 23、返回并进入nginx目录下

(注意:若此时找不到nginx文件,可能是cd /与最初进来的路径变化了,看到的是根目录下的文件和目录列表,而不是你最初进入的家目录中的文件和目录列表。所以最开始需要cd /切换路径,此时解决方法退出重进该新建会话)

cd /

cd nginx/

 24、在nginx文件中创建新的配置文件

 touch nginx.conf

 25、进入到nginx.conf文件

 vim nginx.conf

 26、写入如下配置

# muying- datav-report
server{
# 端口
listen 80;
# 域名
server_name localhost;
# 资源地址
root /nginx/dist/;
# 目录浏览
autoindex on;
# 缓存处理
add_header Cache-Control "no-cache, must-revalidate";
# 请求配置
location / {
# 跨域
add_header Access-Control-Allow-Origin *;
# 返回 index.html
try_files $uri $uri/ /index.html;
}
}

 27、通过esc wq!保存退出

Esc

:wq

 28、在nginx中创建dist文件夹,并进入dist文件夹下

 mkdir dist

cd dsit/

 29、在nginx/dist文件夹中写如 index.html进行测试

touch index.html

vim index.html

然后编写 hello world

 30、通过nginx -s reload重启服务

nginx -s reload

 31、检查

nginx -t

 32、在浏览器中通过,'IP'测试访问

nginx -c /etc/nginx/nginx.conf

 33、重新加载 Nginx 配置的命令

nginx -s reload

34、然后打开网页输入服务器ip地址就可以访问啦,如果是你的将会显示“hello world ”,如下方地址实例本人亲测:

大数据驱动的云端智能停车场可视化管理平台icon-default.png?t=N7T8http://118.178.232.152:8001/#/

35、检查服务是否正常运行

 sudo service nginx status

八、使用XFTP上传文件

1、连接XFTP

工具栏的xshell右边的绿色小图标xftp,点击会自动连接

 2、然后确保右边框是在dist文件夹下

 3、上传文件

将打包好的文件拖拽到右边覆盖或者删除重新上传

4、重启nginx

退出后然后重新再执行一遍启动nginx

nginx -t

nginx -c /etc/nginx/nginx.conf

nginx -s reload

5、这样就成功上传到服务器啦

6、域名使用

如果想要使用域名,将域名与服务器绑定,就在nginx下的nginx.conf文件中然后重新启动nginx

listen 80

server_name 域名

九、遇到报错如何解决

1、如果nginx安装有问题,重新安装 Nginx

  • 检查nginx是否正常运行

sudo systemctl status nginx 或者 sudo service nginx status

  • 卸载当前损坏的 Nginx 安装(如果有的话)

sudo apt remove nginx

  •  清理旧版本的配置文件和依赖

 sudo apt purge nginx*

  •  更新软件包列表

 sudo apt update

  •  安装nginx

sudo apt install nginx

  •  安装完成后,尝试启动 Nginx 服务

sudo systemctl start nginx

  •  检查 Nginx 服务的状态

 sudo service nginx status

 2、端口被占用

执行nginx -c /etc/nginx/nginx.conf发现端口被占用,如果不是正在使用的项目,或者是服务状态报错可能占用了端口需要找出并删除重启就好了。步骤如下:

  • 查找哪个进程正在使用端口 如8081端口:

sudo netstat -tulnp | grep 8001

  • 结束进程sudo kill -9 [PID] 

  •  然后重启nginx

nginx -c /etc/nginx/nginx.conf

nginx -t

nginx -s reload

 3、执行命令的路径有问题

容易忽略产生报错的问题,本人亲自尝试找了半天,就是最最最开始的命令要执行一遍cd /,

不要在root下面进行命令,不然过程感觉都是对的没有问题,就是运行打不开项目。

4、低版本nginx包

当你安装了一个低版本的nginx包的时候,可能会出现不兼容,执行make命令会报错,会提示有

make下有几个.c文件报错。

使用vim 项目打开进行修改.

当时本人遇到是是说switch下的case需要添加/* fall through */注释来告诉编译器这是故意的。

如果fall through不是故意的:

你需要在每个case块的末尾添加break语句来防止代码继续执行下一个case块。

然后esc :wq退出

返回文件重新执行make

本人亲测毛用没有哈哈,可能是能力不够吧,然后就卸载了nginx安装包,打开nginx官网下载了可以试用的版本,目前这个版本nginx-1.22.0本人亲测有效。

5、nginx官网地址:

NGINXicon-default.png?t=N7T8https://www.nginx-cn.net/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

datax介绍和用法

Datax 简介 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。 DataX本身作为数据同步框架&…

智慧图书馆为什么用rfid电子标签而不是磁条

智慧图书馆一般都会使用RFID技术,而不是磁条。以下是几个原因: 1. 效率更高:RFID技术可以实现非接触式读取,图书馆工作人员可以同时读取多本书的信息,大大提高了借还书的效率。 2. 数据量更大:RFID标签可以…

大模型-入门小知识

大模型是什么 大量参数(上亿)深度学习模型 人工只能包含机器学习,深度学习,深度学习包括大模型 单个神经元的计算模型: 大模型是怎么训练的 之前是算法(神经网络)----> 训练(门槛降低&…

LlamaIndex代理的逐步执行框架,包括代理运行器和代理工作者

原文地址:llamaindex-agent-step-wise-execution-framework-with-agent-runners-agent-workers 2024 年 4 月 15 日 LlamaIndex lower-level 代理 API 提供了一系列功能,超出了仅从头到尾执行用户查询的范围。 介绍 LlamaIndex 提供了一个全面的代理 API…

设计模式- 中介者模式(Mediator)

1. 概念 中介者模式(Mediator Pattern),是一种对象行为型模式。该模式的主要目的是定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合变得松散,并且可以独立地改变它们之间的交互。 2. 原理结构图 抽…

Python Selenium无法打开Chrome浏览器处理自定义浏览器路径

问题 在使用Python Selenium控制Chrome浏览器操作的过程中,由于安装的Chrome浏览器的版本找不到对应版本的驱动chromedriver.exe文件,下载了小几个版本号的驱动软件。发现运行下面的代码是无法正常使用的: from selenium import webdriver …

FPGA“题目周周练”活动来啦!

Hi,各位编程精英er~ 不知道大家的FPGA学习之旅到达哪一个阶段了呢?又在这个过程中遇到了哪些困惑? 作为一门高度专业化且充满挑战的技术,FPGA的学习是一场不断思考、认知、持续深化的过程。在这个过程中,思维的敏捷和…

【vue2】实现微信截图(复制图片)在项目内可粘贴

需求 后台管理在上传图片地方需要将复制的图片粘贴上传 一、添加事件 在原有上传组件的基础上添加 paste事件 二、方法 onPaste(e) {const items (e.clipboardData || window.clipboardData).items;let blob null;for (let i 0; i < items.length; i) {if (items[i].ty…

034——从GUI->Client->Server->driver实现读写EEPROM

目录 1、修改GUI 2、修改client 3、 修改server 4、 修改driver_handele 5、 测试和提交 1、修改GUI 之前叫IIC&#xff0c;我们其实是借助EEPROM来测试IIC是不是好用所以名称改一改 长得有点奇怪 这样虽然一样长了但是还是很奇怪。 就先这样吧 layout_l [[tool.name(N…

100个实用电气知识

在当今社会&#xff0c;电力作为日常生活和工作中不可或缺的能源&#xff0c;扮演着越来越重要的角色。为了更好地利用电力资源&#xff0c;了解电气知识成为了越来越多人的需求。在电气领域&#xff0c;有很多实用的知识&#xff0c;这些知识对于从事电气工作的人来说是非常重…

二叉树oj题(2)

1.二叉树的最近公共祖先 解题思路&#xff1a;方法一&#xff1a; 1.先判断p或者q 是不是 root当中的一个 2.左子树当中递归査找p或者q 3.右子树当中递归查找p或者q 如何查找: root 的 left 和 right 都不为空 ->root root的 left 为空 right 不为空->right这一侧找…

出海不出局 | 小游戏引爆高线市场,新竞争态势下的应用出海攻略

出海小游戏&#xff0c;出息了&#xff01; 根据 Sensor Tower 近期发布的“2024 年 3 月中国手游收入 TOP30”榜单&#xff0c;出海小游戏在榜单中成了亮眼的存在。 其中&#xff0c;《菇勇者传说》3 月海外收入环比增长 63%&#xff0c;斩获出海手游收入增长冠军&#xff0c…

vue element-ui 表格横向滚动条在合计项下方

目前效果 需求效果 1.隐藏bodyWrapper滚动条&#xff0c;显示footerWrapper滚动条 css代码如下&#xff1a; div ::v-deep .el-table--scrollable-x .el-table__body-wrapper{overflow-x: hidden!important;z-index: 2!important;} div ::v-deep .el-table__footer-wrapper …

理发师问题的业务建模方案

背景 题目&#xff1a; 假设有一个理发店只有一个理发师&#xff0c;一张理发时坐的椅子&#xff0c;若干张普通椅子顾客供等候时坐。没有顾客时&#xff0c;理发师睡觉。顾客一到&#xff0c;叫醒理发师 。如果理发师没有睡觉&#xff0c;而在为别人理发&#xff0c;他就会坐…

Android—— log的记忆

一、关键log 1.Java的 backtrace(堆栈log) 上述是一个空指针异常&#xff0c;问题出现在sgtc.settings&#xff0c;所以属于客户UI问题。 2.WindowManager(管理屏幕上的窗口和视图层次结构) 3.ActivityManager(管理应用程序生命周期和任务栈) 4.wifi操作 (1) 连接wifi&#…

开源大模型Llama3,堪比GPT-4。手把手本地安装,纯小白可操作,不需要编程经验,国内可下载,可视化使用。

最近最劲爆科技动态&#xff0c;Meta开源Llama3模型&#xff0c;最强开源模型。 Llama3发布后&#xff0c;扎克伯格亲自给媒体表示“要超越所有人&#xff0c;做最领先AI”。 吴恩达等一众大佬表示祝贺。 在线体验地址&#xff1a;https://www.meta.ai/ 不过国内在线体验基本…

OpenWRT磁盘扩容(PVE虚拟机方案)

官方扩容指导文档 PVE给虚拟机磁盘扩容 给虚拟机磁盘扩容&#xff0c;选中OpenWRT的硬盘&#xff0c;随后选择调整大小 输入增量大小&#xff0c;即增加多少磁盘空间给硬盘。这里我选择增加4G 进入OpenWRT控制台界面安装一些linux常用查看磁盘的工具&#xff08;也可以通过网…

EasyPoi实现简单的Excel导出、导入

EasyPoi实现Excel导出、导入 下面这种方式不需要模板&#xff0c;更加方便但是不能进行复杂的导出 一、引入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.4.0</version><…

2024商业地产五一劳动节健康大会朋克养生市集活动策划方案

2024商业地产五一劳动节健康大会朋克养生市集&#xff08;带薪健康 快乐打工主题&#xff09;活动策划方案 活动策划信息&#xff1a; 方案页码&#xff1a;53页 文件格式&#xff1a;PPT 方案简介&#xff1a; 打工不养生 赚钱养医生 期待已久的五一假期&#xff0c; …

mysql download 2024

好久没在官网下载 mysql server 安装包。今天想下载发现&#xff1a; 我访问mysql官网的速度好慢啊。mysql server 的下载页面在哪里啊&#xff0c;一下两下找不到。 最后&#xff0c;慢慢悠悠终于找到了下载页面&#xff0c;如下&#xff1a; https://dev.mysql.com/downlo…