Linux中部署项目

embedded/2024/12/22 15:57:49/

1.下载JDK17

进入 /usr/local 目录,创建 java 文件夹。并将 JDK17 上传到 java 目录下。

上传成功后,通过cd命令进入Java文件夹目录,解压 JDK17 压缩包,命令

unzip zulu17.44.53-ca-jdk17.0.8.1-linux_x64.zip。

如果报错说 unzip 命令不存在,安装该命令:yum install -y unzip zip

解压后的目录:

 为了简单,就不配置环境变量了,直接拿实际引用执行 Java 相关命令。
另外执行一条命令,修改文件名,让它看着没那么长:

mv zulu17.44.53-ca-jdk17.0.8.1-linux_x64 jdk17.0.8.1

2. Nginx 软件

1.更新系统软件包列表。

sudo yum update

2.安装 Nginx 命令。

sudo yum install nginx

安装Nginx出错:

  • 错误信息显示无法解析主机 mirrorlist.centos.org ,这通常是因为 CentOS 7 的官方仓库已经停止维护,导致无法访问。

解决方法

1. 更换 Yum 源

由于 CentOS 7 的官方仓库已经停止维护,需要更换为可用的镜像源。以下是具体步骤:

  • 备份原有配置文件
  cd /etc/yum.repos.dcp CentOS-Base.repo CentOS-Base.repo.backup
  • 编辑配置文件
  vi CentOS-Base.repo
  • 修改内容
    将 mirrorlist 注释掉,并添加 baseurl 指向国内镜像源,例如阿里云镜像源:
  [base]name=CentOS-$releasever - Base#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infrabaseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7[updates]name=CentOS-$releasever - Updates#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infrabaseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7[extras]name=CentOS-$releasever - Extras#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infrabaseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  • 保存并退出编辑器
  :wq
  • 清理并重建 Yum 缓存
  sudo yum clean allsudo yum makecache
2. 安装 EPEL 源

Nginx 不在 CentOS 的默认仓库中,需要安装 EPEL(Extra Packages for Enterprise Linux)源:

sudo yum install epel-release
3.安装 Nginx

安装 EPEL 源后,可以安装 Nginx:

sudo yum install nginx
4.Nginx 开机自启。
sudo systemctl start nginx
sudo systemctl enable nginx

3.项目打包上传

通过命令创建项目相关文件夹。

mkdir -p /home/shortlink/logs

Maven 执行 clean install 逻辑,将 SpringBoot 可执行 Jar 生成。shortlink-all 下执行 mvn clean install,可以通过命令行或者工具栏。

 将 项目jar包上传到服务器 /home/shortlink 目录下。

4.前端上传

进入到前端项目目录下,执行 npm run build 命令。如果是 Windows 系统用户,记得去 CMD 命令行里执行。出现dist目录即代表成功。

将该 dist 目录上传到云服务器 /home/shortlink 目录下。上传前记得压缩下 dist 目录,上传方便些,上传成功后再解压。

执行解压缩命令:unzip dist.zip 完成压缩包解压。

5.安装中间件环境

以 Docker 形式指导如何安装所依赖的中间件。

1.安装 yum-utils

以 yum 安装为例子进行安装,安装 yum-utils,使用 yum-config-manager 工具设置 yum 源,后面两个是 devicemapper 驱动依赖

yum install -y yum-utils device-mapper-persistent-data lvm2
2.使用阿里源访问
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

出现以下内容则表示成功。

 3.安装docker
yum install docker-ce #(这样写默认安装最新版本)
yum install  docker-ce-<VERSION_STRING> (指定安装版本) 
例: yum install docker-ce-18.03.1.ce

安装成功提示信息如下:

4.启动并加入开机启动
systemctl start docker     启动  
systemctl restart docker   重启
systemctl enable docker    开机启动

执行 docker version 查看 Docker 版本号。

5.验证是否安装成功

执行命令:docker run hello-world 测试是否安装成功。

 若进行到这一步没有问题的话就说明 Docker 已经安装成功了 。

5.配置可用镜像

注意,现在 Docker 拉取镜像被限制了,我们需要额外执行以下逻辑:

(这个问题通常是由于网络连接问题导致的,特别是在国内网络环境下,访问国外的 Docker Hub 仓库可能会遇到速度慢或连接超时的情况。)

# 创建目录
sudo mkdir -p /etc/docker# 写入配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.unsee.tech","https://dockerpull.org","https://docker.1panel.live","https://dockerhub.icu"]
}
EOF# 重启docker服务
sudo systemctl daemon-reload && sudo systemctl restart docker
6. 安装 MySQL
docker run --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_HOST='%' \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7.36
  • -d:以后台的方式运行。
  • --name mysql:指定容器的名称为 mysql。
  • -e MYSQL_ROOT_HOST='%':允许 root 用户在任何主机访问。
  • -p 3306:3306:将容器的 3306 端口挂载到宿主机的 3306 端口上。
  • -e MYSQL_ROOT_PASSWORD=root:指定 root 的密码为 root。

通过 MySQL 客户端工具连接并导入数据库和数据。

7.安装 Redis
docker run \
-d -p 8848:8848 \
-p 9848:9848 \
--name nacos2 \
-e MODE=standalone \
-e TIME_ZONE='Asia/Shanghai' \
nacos/nacos-server:v2.1.2
  • docker run: 创建并启动一个新的容器。
  • -p 6379:6379: 将容器的6379端口映射到宿主机的6379端口,以便外部可以访问Redis。
  • --name redis: 为容器指定一个名称,这里是“redis”。
  • -d: 后台运行容器。
  • redis: 使用Redis镜像。
  • redis-server --requirepass "123456": 在容器中执行redis-server命令,并设置Redis的访问密码为"123456"。
8.安装 Nacos
docker run \
-d -p 8848:8848 \
-p 9848:9848 \
--name nacos2 \
-e MODE=standalone \
-e TIME_ZONE='Asia/Shanghai' \
nacos/nacos-server:v2.1.2
  • -d: 后台运行容器。
  • -p 8848:8848: 将容器的 8848 端口映射到宿主机的 8848 端口,这是 Nacos 的默认管理界面端口。
  • -p 9848:9848: 将容器的 9848 端口映射到宿主机的 9848 端口,这是 Nacos 2.X 新增的端口,用于 gRPC 通信。
  • --name nacos2: 为容器指定名称为 nacos2
  • -e MODE=standalone: 设置 Nacos 运行为单机模式。
  • -e TIME_ZONE='Asia/Shanghai': 设置容器的时区为亚洲/上海。
  • nacos/nacos-server:v2.1.2: 使用 Nacos 2.1.2 版本的 Docker 镜像。

6.启动项目

1. 启动后端项目

进入 /home/shortlink 文件夹下,开始启动后端项目。

nohup /usr/local/java/jdk17.0.8.1/bin/java \
-Xms2048m -Xmx2048m \
-Dshort-link.domain.default=修改为服务器外网IP:8003 \
-jar /home/shortlink/shortlink-aggregation.jar > logs/shortlink-aggregation.file 2>&1 &

执行 tail -f logs/shortlink-aggregation.file 命令查看日志是否启动成功。

依次启动网关项目。

nohup /usr/local/java/jdk17.0.8.1/bin/java \
-Xms1024m -Xmx1024m \
-jar /home/shortlink/shortlink-gateway.jar > logs/shortlink-gateway.file 2>&1 &

 执行 tail -f logs/shortlink-aggregation.file 命令查看日志是否启动成功。

2.Nginx 挂载前端项目

修改 Nginx 的配置,让前端可以访问。

sudo vim /etc/nginx/nginx.conf

 将默认 Nginx http/server配置改为下述配置:

http {# 只要保证 server 里的配置在 nginx 的 http 配置下就好server {listen       80;server_name  localhost;location / {root   /home/shortlink/dist;index  index.html index.htm;try_files $uri $uri/ /index.html;}location /api {proxy_read_timeout 10s;proxy_pass http://127.0.0.1:8000/api;}}
}

保存退出文件编辑状态,重载 Nginx 的配置。

sudo systemctl reload nginx

错误:

MIME类型不匹配服务器返回的MIME类型为application/octet-stream,而浏览器期望的是text/css

The stylesheet http://localhost/assets/index-1aa0ed73.css was not loaded because its MIME type, “application/octet-stream”, is not “text/css”.

解决:

nginx配置文件

cd /etc/nginx

include /etc/nginx/mime.types ;
default_type application/octet-stream;
types {text/css css;}

sudo systemctl reload nginx

友情提示:打包的项目中配置文件的中间件地址要换为虚拟机的地址。


http://www.ppmy.cn/embedded/147862.html

相关文章

蓝叠模拟器adb连接并配置网络代理

说在前面&#xff1a; 由于配置wsl导致原模拟器失效&#xff0c;选择了蓝叠模拟器&#xff08;下载安装器后会自动配置为Hyper-v版本&#xff09;蓝叠国际不能自动配置root&#xff0c;需要手动破解&#xff0c;此处选择的是蓝叠中国&#xff08;二者可以同时安装并共存&#…

端口聚合配置

配置端口聚合 本文中端口聚合配置任务描述了如何配置以太网端口聚合。 概述 端口聚合&#xff0c;即将几个属性相同的物理端口聚合绑定到一起形成一个逻辑上的通道。端口的聚合方式可以是将几个物理端口静态的聚合到一起而不管与这些物理端口相连的端口是否符合聚合的条件&a…

Flutter组件————BottomNavigationBar

BottomNavigationBar 是Flutter中用于在屏幕底部显示导航栏的组件&#xff0c;它允许用户在几个主要视图之间进行切换。 参数 参数名类型描述itemsList定义导航栏中的每个项目&#xff0c;通常包含图标和标签。onTapValueChanged当用户点击导航栏中的项目时触发的回调函数&am…

MATLAB深度学习实战PCB缺陷检测

本文采用YOLO作为核心算法框架&#xff0c;结合Matlab构建用户界面&#xff0c;使用MATLAB进行开发。YOLO以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对PCB电路板缺陷数据集进行训练和优化&#xff0c;该数据集包含丰富的PCB电路板缺陷图…

解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题

配置一下apache里面的配置文件&#xff1a;httpd.conf 和 httpd.vhosts.conf httpd.conf httpd-vhosts.conf 重启服务 展示&#xff1a; 浏览器中中文乱码问题&#xff1a;

AI呼入机器人详解

AI呼入机器人详解 原作者&#xff1a;开源呼叫中心FreeIPCC&#xff0c;其Github&#xff1a;https://github.com/lihaiya/freeipcc AI呼入机器人&#xff0c;也称为智能客服系统或虚拟客服助手&#xff0c;是利用人工智能技术来自动处理和响应客户来电的解决方案。这类机器人…

*【每日一题 基础题】 [蓝桥杯 2023 省 B] 飞机降落

题目描述 N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti 时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 Di 个单位时间&#xff0c;即它最早可以于 Ti 时刻开始降落&#xff0c;最晚可以于 Ti Di 时刻开始降落。降落过程需要 Li个单位时间…

kubeadm_k8s_v1.31高可用部署教程

kubeadm_k8s_v1.31高可用部署教程 实验环境部署拓扑图**部署署架构****Load Balance****Control plane node****Worker node****资源分配&#xff08;8台虚拟机&#xff09;**集群列表 前置准备关闭swap开启ipv4转发更多设置 1、Verify the MAC address and product_uuid are u…