1.如何使用XShell工具、Nginx代理服务器部署项目
前言
在信息化和数字化的今天,网站和应用的构建与发布已成为企业发展的重要一环。为了确保项目的顺利上线和稳定运行,选择合适的工具和环境至关重要。本文将详细介绍如何通过 XShell 工具以及 Nginx 环境来实现服务器项目的构建与发布,为广大开发者提供一条高效、便捷的路径。
一、为什么需要打包项目
浏览器只能识别并运行 html、css、js 文件 。 换句话而言,项目中用 vue ,react 框架做的项目文件,浏览器是不认识的。 而打包的过程就是把 vue 的关键文件打包成 html、css、js 的文件,让浏览器进行识别,并展示我们的项目。
二、打包之后项目可以通过浏览器直接访问吗
通过
npm run build
打包项目之后,打包的文件会被放入到dist
文件夹中,然后我们直接双击 index.html 文件,可以发现,浏览器是无法显示项目的。原因是因为一些文件找不到了。 查看我们的 url 可以发现,其实我们的 url 是一个 file 协议。那么对应的文件路径就会编程盘符下的,在我们当前的盘符下没有对应的文件,那么自然是无法找到的。 而想要解决这个问题的话,就需要把我们的项目运行到一个服务器上,并且把项目部署到服务器之中,这样我们就可以访问啦。 而服务器的存在就是为了可以托管我们的项目,从而避免出现模块无法被找到的问题。
三、域名、DNS、公网 IP、服务器、Nginx 之间的关系
- 域名:
域名是一个容易识别和记忆的网址,如http://118.178.232.152:8002/。它是用户访问网站时输入的网址,方便用户记忆和访问,而不需要记住复杂的 IP 地址。
- DNS:域名解析服务器
DNS 是 Domain Name System 的缩写,是一个分布式的目录服务,将用户易于记忆的域名与服务器 IP 地址进行关联。当用户输入域名时,DNS 服务器会查询并将域名转换为相应的 IP 地址,从而帮助用户访问到目标服务器。
- 公网 IP:服务器在网络中的唯一地址
公网 IP 是服务器在互联网上的唯一地址,当 DNS 将域名解析为 IP 地址时,这个 IP 地址就是公网 IP。用户通过这个公网 IP 地址,可以访问到部署在服务器上的服务。
- 服务器:服务部署的电脑
服务器是一台高性能的计算机,用于存储、处理和传输数据。在 Web 服务中,服务器通常用于部署和运行网站和应用程序。用户可以通过访问服务器的公网 IP 地址或使用域名来访问这些服务。
- Nginx:网页服务
Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,特点是占有内存少,并发能力强,有报告表明能支持高达 50000 个并发连接数。在 Web 服务中,Nginx 通常用于处理大量的并发连接,提供静态文件服务,通过 Nginx,可以实现负载均衡、SSL 加密、访问控制等功能,提高网站的性能和安全性。
四、XSHELL 和 XFTP 安装
打开 XShell 官网,点击所有下载->所有家庭/学校免费版。
下载地址: XSHELL 和 XFTP 安装地址
五、服务器购买
- 打开管理控制台,您可以找到服务器的配置选项,然后找到通信或网络相关的设置,进行端口的配置。
如果是自己编写的程序,一般使用 1024 以后的端口号,到 65535.1023 之前都是熟知端口。8081 端口号通常用于 HTTP 代理或 Web 代理服务器的服务端口,tomcat 文件服务器端口号为 8060 uni-ui 的端口号为 8080,前端项目使用 8081。
六、Xshell 连接服务器
- 双击空白处新建会话,名称自定义,主机填写服务器 IP
- ctrl+鼠标点击会话,输入服务器用户名和密码
- 显示连接成功
七、使用 XSHELL 工具搭建 Nginx 环境步骤
注意当前是在 / 路径下执行,可以使用 pwd 命令查看,如果是 /root 下要执行 cd / 命令
- pwd 命令查看当前路径
pwd
- 如果是
/root
路径要改变成/
cd /
- 首先
sudo apt update
- nginx 编译时依赖 gcc 环境
sudo apt install gcc g++
- 安装 prce,让 nginx 支持重写功能
sudo apt search pcre*
- 安装 zlib, nginx 使用 zlib 对 http 包内容进行 gzip 压缩
sudo apt install zlib1g zlib1g-dev
- 安装 openssl,用于通讯加密
sudo apt install openssl libssl-dev
- 进行 nginx 安装
mkdir nginx
- 进入 nginx 文件夹
cd nginx/
- 在 nginx 中下载 nginx 压缩包
wget https://nginx.org/download/nginx-1.22.0.tar.gz
- 解压 nginx
tar -zxvf nginx-1.22.0.tar.gz
- 进入 nginx-1.22.0 目录中查看
cd nginx-1.22.0/
- 查看可执行文件
ll
- 在 nginx-1.22.0 目录中检查平台安装环境
./configure --prefix=/usr/local/nginx
- 如果不能执行 make 命令,先安装再执行
sudo apt install make
- 进行源码编译
make
- 安装 nginx
make install
- 查看 nginx 配置
/usr/local/nginx/sbin/nginx -t
- 若不想执行复杂/usr/local/nginx/sbin/nginx -t 来查看则需要制作软连接,制作 nginx 软连接进入进入 usr/bin 目录
cd /usr/bin/
- 制作软连接
ln -s /usr/local/nginx/sbin/nginx nginx
- 接下来制作开始配置文件,首先进入到 nginx 的默认配置文件中
vim /usr/local/nginx/conf/nginx.conf
80 改成 8001,并且在该文件在最底部增加配置项(按下 i 进入输入模式)如图:
按下 esc 键,通过:wq!保存并退出
返回并进入 nginx 目录下
(注意:若此时找不到 nginx 文件,可能是 cd /与最初进来的路径变化了,看到的是根目录下的文件和目录列表,而不是你最初进入的家目录中的文件和目录列表。所以最开始需要 cd /切换路径,此时解决方法退出重进该新建会话)
cd /
cd nginx/
- 在 nginx 文件中创建新的配置文件
touch nginx.conf
- 进入到 nginx.conf 文件
vim nginx.conf
- 写入如下配置
# 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;
}
}
- 通过
esc wq!
保存退出
Esc
:wq
- 在 nginx 中创建 dist 文件夹,并进入 dist 文件夹下
mkdir dist
cd dsit/
- 在 nginx/dist 文件夹中写如 index.html 进行测试
touch index.html
vim index.html
然后编写 hello world
- 通过
nginx -s reload
重启服务
nginx -s reload
- 检查
nginx -t
- 在浏览器中通过,'IP'测试访问
nginx -c /etc/nginx/nginx.conf
- 重新加载 Nginx 配置的命令
nginx -s reload
- 然后打开网页输入服务器 ip 地址就可以访问啦,如果是你的将会显示“hello world ”,如下方地址实例本人亲测:
- 检查服务是否正常运行
sudo service nginx status
八、使用 XFTP 上传文件
- 连接 XFTP
工具栏的 xshell 右边的绿色小图标 xftp,点击会自动连接
- 然后确保右边框是在 dist 文件夹下
- 上传文件
将打包好的文件拖拽到右边覆盖或者删除重新上传
- 重启 nginx
退出后然后重新再执行一遍启动 nginx
nginx -t
nginx -c /etc/nginx/nginx.conf
nginx -s reload
这样就成功上传到服务器啦
域名使用 如果想要使用域名,将域名与服务器绑定,就在 nginx 下的 nginx.conf 文件中然后重新启动 nginx
listen 80
server_name 域名
九、遇到报错如何解决
- 如果 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
- 端口被占用
执行 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
- 执行命令的路径有问题
容易忽略产生报错的问题,本人亲自尝试找了半天,就是最最最开始的命令要执行一遍 cd /,不要在 root 下面进行命令,不然过程感觉都是对的没有问题,就是运行打不开项目。
- 低版本 nginx 包 当你安装了一个低版本的 nginx 包的时候,可能会出现不兼容,执行 make 命令会报错,会提示有
make 下有几个.c 文件报错。
使用 vim 项目打开进行修改.
当时本人遇到是是说 switch 下的 case 需要添加/_ fall through _/注释来告诉编译器这是故意的。
如果 fall through 不是故意的:
你需要在每个 case 块的末尾添加 break 语句来防止代码继续执行下一个 case 块。
然后 esc :wq 退出
返回文件重新执行 make
本人亲测毛用没有哈哈,可能是能力不够吧,然后就卸载了 nginx 安装包,打开 nginx 官网下载了可以试用的版本,目前这个版本 nginx-1.22.0 本人亲测有效。
- nginx 官网地址: NGINX