Linux下部署前后端分离项目 —— Linux下安装nginx

server/2025/3/14 21:35:15/

1 打包前后端项目

1.1 打包Vue项目

# 构建生产环境包
npm run build:prod

注意:我这边使用的命令是 npm run build:pro,一般都是 npm run build:prod,具体看前端package.json文件中是如何配置的,如下:

1.2 后端打包

使用 maven 工具进行打包,先清理(双击 clean)再打包(双击 install),如下:

打包完成后,再需要部署模块的 target 目录下找到相关 jar

2 Linux下安装nginx

2.1 下载安装包

下载地址:nginx: download

这里选择下载的版本为:nginx-1.20.0,如下图:

将下载后的压缩包上传至linux服务器,如下图: 

2.2 解压安装包并移动nginx

# 解压安装包
tar xzf nginx-1.20.2.tar.gz
# 将安装包移动至 /usr/local/nginx
mv nginx-1.20.2 /usr/local/nginx

2.3 编译安装nginx

2.3.1 配置nginx

# 进入nginx目录
cd /usr/local/nginx
# 配置nginx。其中,./configure:代表配置编译选项,--prefix:指定安装目录
./configure --prefix=/usr/local/nginx

运行 ./configure --prefix=/usr/local/nginx 可能会出现以下错误:

如上图,缺少 gcc 依赖,安装 gcc,命令如下:

# 安装 gcc 依赖
yum -y install gcc

gcc 依赖安装完,重新执行 ./configure --prefix=/usr/local/nginx 。可能会提示以下错误:

如上图,缺少 pcre 依赖,安装 pcre,命令如下:

yum install -y pcre pcre-devel

pcre 依赖安装完,重新执行 ./configure --prefix=/usr/local/nginx 。可能会提示以下错误:

 如上图,缺少 zlib 依赖,安装 zlib,命令如下:

yum install -y zlib zlib-devel

zlib 依赖安装完,重新执行 ./configure --prefix=/usr/local/nginx 。配置nginx执行成功,提示如下:

2.3.2 构建&安装nginx

1. configure成功,使用 make 命令,编译nginx,出现如下图,说明编译成功

2. make成功,使用 make install /usr/local/nginx/ 命令,安装nginx出现如下图,说明编译成功

2.4 启动nginx

# 进入 nginx 的 sbin 目录
cd /usr/local/nginx/sbin/
# 启动nginx
./nginx# 如果 /usr/local/nginx/ 目录下没有日志文件夹,nginx启动会报错
# nginx下创建日志文件夹,并赋予权限
cd ..
mkdir logs
chmod 700 logs # 只有拥有者有读、写、执行权限。

重启 nginx ,如下:

nginx 常用命令,如下:

(1)启动:./nginx -c /usr/local/nginx/conf/nginx.conf

(2)快速停止:./nginx -s stop

(3)优雅关闭,在退出前完成已经接受的连接请求:./nginx -s quit

(4)重新加载配置:./nginx -s reload

2.5 验证nginx是否启动成功

浏览器输入服务地址,出现以下页面,说明启动成功:

2.6 设置nginx开机自启

1. 停止 nginx ,使用命令:./nginx -s stop

2. 新增脚本服务,使用命令:vi /usr/lib/systemd/system/nginx.service ,脚本内容如下:

[Unit]Description=nginx - web serverAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.confExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s stopExecQuit=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true[Install]WantedBy=multi-user.target

使用 :wq 命令保存脚本。

3. 重新加载 systemd 的服务单元文件(/usr/lib/systemd/system/下的.service文件)

systemctl daemon-reload

4. 重启 nginx 服务

systemctl start nginx

5. 配置系统服务后,nginx 常用命令,如下

(1)启动:systemctl start nginx

(2)停止:systemctl stop nginx

(3)查询nginx运行状态:systemctl status nginx

(4)重启: systemclt restart nginx

6. 如果希望服务每次启动后,nginx 自动运行,输入以下命令:

        设置 nginx 开机自启

systemctl enable nginx.service

3 部署

3.1 前端部署

将前端打包好的 dist 上传至服务器nginx 中的 html 目录下,如下:

3.2 后端部署

1. 这里以网关服务为例,将网关模块的相关 jar 放在一个路径下,如下图:

2. 新建启动脚本,start.sh

// 1. 新增 .sh 文件
touch start.sh
// 2. 修改 .sh 文件操作权限
chmod 777 start.sh
// 打开 start.sh 文件
vi start.sh
// 输入脚本内容// 保存并退出
:wq

脚本内容,如下:

#!/bin/bash
# 相关jar,例如:xxx.jar
JAR_NAME=xxx-gateway.jar
# jar包所在目录,例如:/root/xyd/xxx/xxx-gateway/
JAR_PATH=/root/xyd/xxx/xxx-gateway/
#您所希望jar启动的端口号,设置前请先查询是否已经被占用的情况
PORT=89# 设置日志输出文件信息
dat1=$(date +%Y-%m-%d-%H-%M)cd `dirname $0`
#使用说明,用来提示输入参数
usage() {echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"exit 1
}
#检查程序是否在运行
is_exist(){pid=`ps -ef|grep -E ''$JAR_NAME'.'$PORT'|'$PORT'.*'$JAR_NAME''|grep -v grep|awk '{print $2}'`#如果不存在返回1,存在返回0if [ -z "${pid}" ]; thenreturn 1elsereturn 0fi
}#启动方法
start(){is_existif [ $? -eq "0" ]; thenecho "${JAR_NAME} is already running. pid=${pid} ."elsenohup java -Xms256m -Xmx524m -Dfastjson.parser.safeMode=true -Dfile.encoding=UTF-8 -Dserver.port=${PORT} -jar ${JAR_PATH}${JAR_NAME} > ${JAR_PATH}${dat1}.log  2>&1 &echo "${JAR_NAME} is start success"#tail -f fileserver-web.outfi
}#停止方法
stop(){is_existif [ $? -eq "0" ]; thenkill -9 $pidecho "${JAR_NAME} is  stoped"elseecho "${JAR_NAME} is not running"fi
}#输出运行状态
status(){is_existif [ $? -eq "0" ]; thenecho "${JAR_NAME} is running. Pid is ${pid}"elseecho "${JAR_NAME} is NOT running."fi
}#重启
restart(){stopstart
}#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in"start")start;;"stop")stop;;"status")status;;"restart")restart;;*)usage;;                                                                                                                                                
esac

3. 启动 jar

启动关闭脚本相关命令:

(1)启动:./start.sh start

(2)关闭:./start.sh stop

(3)重启:./start.sh status

(4)查看状态:./start.sh restart

借鉴博客:linux启动jar的各种命令和脚本_linuxjar包启动命令-CSDN博客

3.3 修改 nginx 配置文件

输入命令 vi /usr/local/nginx/conf/nginx.conf ,修改配置文件,如下

重启 nginx ,如下:

systemclt restart nginx

3.4 验证部署

浏览器输入服务器地址:http://192.xx.xx.10/

文章来源:https://blog.csdn.net/weixin_48568302/article/details/146208461
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/server/174984.html

相关文章

深入解析 React 最新特性:革新、应用与最佳实践

深入解析 React 最新特性:革新、应用与最佳实践 1. 引言 React 作为前端开发的核心技术之一,近年来不断推出 新的 API 和优化机制,从 Concurrent Rendering(并发模式) 到 Server Components(服务器组件&a…

c++介绍函数指针 十

指针代表内存中地址标识符,变量,数组都是存储内存中的数据。所以可以获得它们的地址,用指针来表示这块内存。 如图输出内存中的地址。 对于一个函数来说,也是内存中存储这段数据,所以我们也可以获取函数的地址。 函数…

Mysql表的查询

一:创建一个新的数据库(companydb),并查看数据库。 二:使用该数据库,并创建表worker。 mysql> use companydb;mysql> CREATE TABLE worker(-> 部门号 INT(11) NOT NULL,-> 职工号 INT(11) NOT NULL,-> 工作时间 D…

unity几种设计模式(自用)

unity的几种设计模式 1.单例模式2.观察者模式3.工厂模式4.状态模式5.命令模式 1.单例模式 public class GameManager : MonoBehaviour {public static GameManager Instance { get; private set; }void Awake(){if (Instance null){Instance this;DontDestroyOnLoad(gameObj…

微信小程序审核失败,你的小程序涉及提供播放、观看等服务,请补充选择:文娱-其他视频类目 解决

之前审核的都没有什么问题,结果这次就不给过还提示我们这个。 我们的视频是操作演示的视频。仅用于介绍使用。 是否接受修改指引,勾选我不理解以上内容 再勾选 下面不理解内容异项 申诉理由 视频播放和观看只限于当前用户自己使用,而视…

idea超级AI插件,让 AI 为 Java 工程师

引言​ 用户可在界面中直接通过输入自然语言的形式描述接口的需求,系统通过输入的需求自动分析关键的功能点有哪些,并对不确定方案的需求提供多种选择,以及对需求上下文进行补充,用户修改确定需求后,系统会根据需求设…

VMware虚拟机网络连接模式介绍以及nat模式访问公网实践

在 VMware 虚拟机中,网络配置是非常重要的一部分。VMware 提供了三种主要的网络连接模式,分别是桥接模式(Bridged)、NAT模式(NAT) 和仅主机模式(Host-Only)。每种模式都有其特定的用…

宇树ROS1开源模型在ROS2中Gazebo中仿真

以GO1为例 1. CMakelists.txt更新语法 cmake_minimum_required(VERSION 3.8) project(go1_description) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")add_compile_options(-Wall -Wextra -Wpedantic) endif() # find dependencies find…