当前位置: 首页 > article >正文

Linux中部署项目

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.d
  cp 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=$infra
  baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
  gpgcheck=1
  gpgkey=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=$infra
  baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
  gpgcheck=1
  gpgkey=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=$infra
  baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
  gpgcheck=1
  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  • 保存并退出编辑器
  :wq
  • 清理并重建 Yum 缓存
  sudo yum clean all
  sudo 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.kler.cn/a/446456.html

相关文章:

  • 从监控异常发现网络安全
  • 为何VisualRules更适合技术人员使用
  • Vue+element 回车查询页面刷新
  • AI的进阶之路:从机器学习到深度学习的演变(二)
  • 【人工智能】用Python实现图卷积网络(GCN):从理论到节点分类实战
  • Pytorch | 利用FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
  • 精准采集整车信号:风丘混合动力汽车工况测试
  • Solon 集成 activemq-client
  • Next.js v15- Metadata
  • vimdc
  • 【活动邀请·深圳】深圳COC社区 深圳 AWS UG 2024 re:Invent re:Cap
  • 【c++笔试强训】(第四十一篇)
  • 4_使用 HTML5 Canvas API (3) --[HTML5 API 学习之旅]
  • 青少年编程与数学 02-004 Go语言Web编程 13课题、模板引擎
  • Linux之磁盘管理相关命令
  • nginx长连接配置
  • 二维码:理解二维码 / 生成二维码 / 小程序支持哪种类型的二维码 / 小程序识别GS1码
  • 【postgresql初级使用】小小索引大用途,奇妙的索引让大数据查询提升成百上千倍,多种索引类型的区别,你用对索引了吗?
  • centOS定时任务-cron服务
  • javaFX.(蜜雪冰城点餐小程序)MySQL数据库
  • flask-admin的modelview 实现list列表视图中扩展修改状态按钮
  • 【Prompt Engineering】6 文本扩展
  • ML 系列:第 40 节 — 最大似然MLE 的简单问题
  • 【WRF教程第3.1期】预处理系统 WPS 详解:以4.5版本为例
  • 利用Java获取淘宝商品详情API接口的深入指南引言
  • iOS 应用的生命周期