后端部署(通用)

放行端口

  • 3306 MySQL
  • 6379 Redis
  • 15672 RabbitMQ web 面板
  • 5672 RabbitMQ
  • 22 端口 SSH
  • 443 HTTPS
  • 80 HTTP
  • 8848 Nacos
  • 9848 Nacos
  • 9849 Nacos
image-20241013000655616

还有服务器防火墙

image-20241015134440576

宝塔

安装 Java 环境

image-20240828111024249 image-20240828111206797

安装需要的 JDK ,这个项目安装 1.8.0_371 就可以

安装 MySQL

1、安装 MySQL

image-20241012235554319 image-20241012235637421

2、放行端口

image-20241013000655616

还有服务器防火墙

image-20241015134440576 image-20241013000847033

4、创建数据库

image-20241014202256613

5、允许远程连接

image-20241014202039444

6、使用测试工具进行连接 (以 IDEA 自带的为例)

image-20241015134629453 image.png

连接失败怎么办?

1、检查服务器端口是否放开

2、检查创建数据库的时候选择的 访问权限 是否是 所有人

3、检查用户名和密码

image-20241015135401548

安装 Redis

1、安装 Redis

image-20241015132439667 image-20241015132518917

4、修改设置文件

image-20241015133641986

修改 bind 变成 0.0.0.0

然后设置 requirepass 这个就是密码

然后重载配置

image-20241015135039666

5、放行端口

image-20241015134115134

还有服务器防火墙

image-20241015134440576

6、尝试连接 (以 IDEA 自带的为例)

image-20241015134209097 image.png

不需要填写用户名

密码填写之际之前在服务器requirepass

7、连接成功

image.png

运行后端

上传 jar 包到服务器任意文件夹 比如 /www

image-20240814234039321

一定要注意,如果自己的使用的配置是 application-prod.yml 一定要在启动命令后面加上 --spring.profiles.active=prod !

image.png image-20240814234444592

Docker

前期准备

  • CentOS 安装 Docker 教程
  • Ubuntu 安装 Docker 教程
  • JAR 文件

1、切换到工作目录

▼
text
复制代码
cd ~

创建一个单独的目录,存放部署相关的文件

▼
text
复制代码
mkdir project && cd project

2、创建 Dockerfile 文件 + 上传 jar 包

创建 Dockerfile 文件

▼
text
复制代码
touch Dockerfile

创建完成之后,使用 rz 命令、或者 WinScp 上传,上传到和 Dockerfile 同级目录下

3、创建 Dockerfile 文件

1)FROM docker 运行的环境

openjdk:8 指的是在 java8 环境下运行镜像

  • openjdk:8
  • openjdk:17

2)WORKDIR 工作目录

3)COPY 复制 Linux 系统文件到容器之中

4)CMD 运行 Jar 包的命令,配置文件生效的是 application-prod.yml

当然可以修改 --spring.profiles.active=prod 后面的 active=xxx 如果想要 application-test.yml 生效那么直接写 --spring.profiles.active=test

▼
text
复制代码
FROM openjdk:8 WORKDIR /app # COPY ./user-center-backend-0.0.1-SNAPSHOT.jar ./app/application.jar COPY ./本地 jar 包的名称 ./app/application.jar CMD ["java","-jar","./app/application.jar","--spring.profiles.active=prod"]

2、执行 docker build

▼
text
复制代码
docker build -t myapp:v1.0 .
  • -t:--tag 的缩写,用于指定镜像名称和标签。比如 usercenter:v1.0
  • .:表示当前目录是构建上下文,Docker 会从当前目录读取 Dockerfile,并将该目录中的文件打包到镜像中
  • myapp 是镜像名称。
  • v1.0 是镜像标签(版本),你也可以用 latest 或其他标签。
image-20240827232904491

3、运行 docker 镜像

  • -p 8080:8080:将主机的端口 8080 映射到容器的端口 8080。

  • -t:分配一个伪终端(TTY),通常和交互模式一起使用,但这里是后台运行。

  • -d:让容器以 后台模式(detached)运行。

  • myapp:v1.0:指定要运行的 Docker 镜像名称和版本。

▼
text
复制代码
docker run -p 8080:8080 -t -d myapp:v1.0
image-20240827233047875

4、查看运行是否成功

▼
text
复制代码
docker ps
image-20240827233159530

5、查看 log

▼
text
复制代码
docker logs -f CONTAINER ID 比如 docker logs -f 493820321e

CONTAINER ID 具体看 docker ps 里显示的 CONTAINER ID

RabbitMQ

Docker 安装就相对简单很多了!

1、下载 rabbitmq

▼
text
复制代码
docker pull rabbitmq:3.12.13-management

2、运行 rabbitmq

▼
text
复制代码
docker run -d --name=rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:3.12.13-management
image-20241009213651818

3、登录 web 管理界面

地址: http://服务器IP:15672

账号、密码默认 guest

image-20241009214146062

4、看上面关于 创建用户&禁用默认用户远程访问 章节

Nacos

如果速度比较慢的话可以设置一下 register 教程

1、下载镜像

▼
dockerfile
复制代码
docker pull nacos/nacos-server:v2.2.0
image-20241105000313361

2、查看 image

▼
dockerfile
复制代码
docker images

3、初始化数据库

可以找到本地 nacos/conf/mysql-schema.sql

先创建数据,在使用数据库进行创建 sql

▼
text
复制代码
CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
image-20241105004509708

4、启动 Nacos

▼
dockerfile
复制代码
docker run \ --name nacos \ -d \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9849 \ --restart=always \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=密码 \ -e MYSQL_SERVICE_HOST=127.0.0.1 \ -e MYSQL_SERVICE_DB_NAME=nacos_config \ -e MODE=standalone \ nacos/nacos-server:v2.2.0

启动成功!

image-20241105010150373

Elasticsearch

1、拉取 Docker 镜像

任意目录执行

▼
text
复制代码
docker pull elasticsearch:{version}

比如:

▼
text
复制代码
docker pull elasticsearch:7.17.9
image-20241113224600007

2、创建一个 network 方便后期 Elasticsearch 和 Kibana 通信

▼
text
复制代码
docker network create elastic
image-20241113225558492

3、运行

▼
text
复制代码
docker run \ --name elasticsearch \ --net elastic \ -p 9200:9200 \ -e discovery.type=single-node \ -e ES_JAVA_OPTS="-Xms1g -Xmx1g"\ -e xpack.security.enabled=true \ -it \ -d \ elasticsearch:{version}

比如

▼
dock
复制代码
docker run \ --name elasticsearch \ --net elastic \ -p 9200:9200 \ -e discovery.type=single-node \ -e ES_JAVA_OPTS="-Xms1g -Xmx1g"\ -e xpack.security.enabled=true \ -it \ -d \ elasticsearch:7.17.9

4、修改账号密码

首先找到 elasticsearch 运行的 container id

▼
text
复制代码
docker ps
image-20241114000841762

进入到容器之中

▼
text
复制代码
docker exec -it CONTAINER ID /bin/bash

这个 CONTAINER ID 就看 docker ps 的 CONTAIONER ID

比如

▼
text
复制代码
docker exec -it 7c6be20a14e5 /bin/bash

如果需要退出的话,直接输入 exit

▼
text
复制代码
exit
Snipaste_2024-11-13_23-42-18

默认进入就是这个目录

image-20241113234752668

执行下面的命令

▼
text
复制代码
bin/elasticsearch-setup-passwords interactive
image-20241113235048970

4、安装分词器

进入到容器之中

▼
text
复制代码
docker exec -it CONTAINER ID /bin/bash

这个 CONTAINER ID 就看 docker ps 的 CONTAIONER ID

比如:

▼
text
复制代码
docker exec -it 7c6be20a14e5 /bin/bash

下载地址:https://release.infinilabs.com/analysis-ik/stable

▼
text
复制代码
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/{version}/{version}.zip

这个 version 具体看自己安装的版本

比如:

▼
text
复制代码
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.9/elasticsearch-analysis-ik-7.17.9.zip

如果速度非常慢可以先本地下载下来然后使用 docker cp

▼
text
复制代码
docker cp 文件 container_id:/usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.17.9.zip

找到对应目录,进入对应目录 /usr/share/elasticsearch/plugins

▼
text
复制代码
rm -rf /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.17.9.zip
▼
text
复制代码
unzip elasticsearch-analysis-ik-7.17.9.zip -d ik

最后别忘了删除 /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.17.9.zip

▼
text
复制代码
cd /usr/share/elasticsearch/plugins

查看是否安装成功

▼
text
复制代码
bin/elasticsearch-plugin list

5、最后重启使得配置生效

▼
text
复制代码
docker restart elasticsearch

Liunx 服务器直接安装

RabbitMQ

安装 DNF

1、

▼
text
复制代码
yum install epel-release
image-20241009203545454

2、

▼
text
复制代码
yum install dnf
image-20241009203632789

安装成功

image-20241009203651254

安装 RabbitMQ

1、指定仓库

▼
text
复制代码
sudo dnf install -y https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm

2、安装 rabbitmq 默认会安装 erlang

▼
text
复制代码
sudo dnf install -y rabbitmq-server-3.3.5-34.el7
image-20241009211123061

3、开启 web 管理页面

▼
text
复制代码
sudo rabbitmq-plugins enable rabbitmq_management

4、启动 RabbitMQ

▼
text
复制代码
sudo systemctl start rabbitmq-server

5、查看运行状态

▼
text
复制代码
systemctl status rabbitmq-server
image-20241009212252468

6、设置开机自启动

▼
text
复制代码
sudo systemctl enable rabbitmq-server

登录 web 管理界面

http://服务器IP:15672

image-20241009214139890

默认账号、密码都是 guest

要是报错就自己再仔细看看是不是输入错误了

创建用户&禁用默认用户远程访问

  • 创建用户
  • 允许远程连接
image-20241009200510767 image-20241009200822956 image-20241009200851259

重要

关闭允许 guest 用户远程访问,为了安全

image-20241009201040420 image-20241009201140735

Nacos

安装依赖环境

Ubuntu

设置Ubuntu阿里镜像

1)更新系统软件包

▼
text
复制代码
sudo apt-get update

2)安装对应的依赖 wget unzip Java

▼
text
复制代码
sudo apt-get install wget unzip openjdk-8-jdk

CentOS

设置CentOS阿里镜像

1)更新系统软件包

▼
text
复制代码
sudo yum update -y

2)安装对应的依赖 wget unzip Java

▼
text
复制代码
sudo yum install -y wget unzip java-1.8.0-openjdk

下载 Nacos

1、下载文件

1)进入工作目录

▼
text
复制代码
cd ~

2)创建目录

▼
text
复制代码
mkdir nacos

3)进入目录,并且下载 zip 文件

▼
text
复制代码
wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.zip

这个速度可能会比较慢,可以本地下载好的上传到服务器上

2、解压文件

▼
text
复制代码
unzip nacos-server-2.2.0.zip
image-20241103170938289

3、设置数据库

先创建一个数据库

▼
mysql
复制代码
CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

然后在对应数据库下执行 nacos/conf/mysql-schema.sql 建表语句

然后修改 nacos/conf/application.properties 的内容

下面是源文件内容

image-20241103225328866

修改成

▼
properties
复制代码
### If use MySQL as datasource: # spring.datasource.platform=mysql ### Count of DB: # db.num=1 ### Connect URL of DB: db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=nacos # mysql 用户名 db.password.0=nacos # mysql 密码

4、进入 bin 目录启动

▼
text
复制代码
cd nacos/bin
image-20241103171138299
▼
text
复制代码
sudo bash startup.sh -m standalone
image-20241103171102914

这里如果是 Ubuntu 的话一定要用 bash startup.sh -m standalone 如果是 sh 会报错 Caused by: java.net.UnknownHostException: jmenv.tbsite.net at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)

5、访问 web 管理页面

首先要把服务器的 8848 打开,如果有宝塔 8848

http://服务器IP:8848/nacos/index.html

6、关闭 Nacos

▼
text
复制代码
sudo bash shutdown.sh
image-20241103214451131

安装 Elasticsearch

1、更新安装包和下载依赖

Ubuntu

设置Ubuntu阿里镜像

1)更新系统软件包

▼
text
复制代码
sudo apt-get update

2)安装对应的依赖 wget unzip

▼
text
复制代码
sudo apt-get install wget tar unzip rpm openjdk-8-jdk

CentOS

设置CentOS阿里镜像

1)更新系统软件包

▼
text
复制代码
sudo yum update -y

2)安装对应的依赖 wget unzip

▼
text
复制代码
sudo yum install -y wget tar unzip rpm openjdk-8-jdk

2、下载 elasticsearch 7.x 版本

▼
text
复制代码
wget https://artifacts.elastic.co/downloads/elasticsearch/{version}-amd64.deb

比如:

▼
text
复制代码
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.9-amd64.deb

3、下载完成后,继续安装包

▼
yml
复制代码
sudo dpkg -i elasticsearch-{version}-amd64.deb

比如:

▼
text
复制代码
sudo dpkg -i elasticsearch-7.17.9-amd64.deb
image-20241113002329216

4、enable elasticsearch service 和 启动 elasticsearch service

▼
text
复制代码
sudo systemctl enable elasticsearch.service sudo systemctl start elasticsearch.service
image-20241113002517242

5、修改 Ubuntu 配置文件

1)修改 network 把 127.0.0.1 改成 0.0.0.0

2)修改,如果没有的话就添加 discovery.type 写成 single-node

▼
text
复制代码
vi /etc/elasticsearch/elasticsearch.yml
image-20241113003300120 image-20241113104450525

6、重启配置

▼
text
复制代码
sudo systemctl restart elasticsearch.service

7、测试是否运行成功

▼
text
复制代码
curl -X GET "localhost:9200/?pretty"
image-20241113004728562

8、添加安装分词器

▼
text
复制代码
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/{version}/{version}.zip

比如:

▼
text
复制代码
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.9/elasticsearch-analysis-ik-7.17.9.zip

速度很慢的话,就本地下载好,上传到 /usr/share/elasticsearch

▼
text
复制代码
cd /usr/share/elasticsearch/plugins

上传到对应目录之后,进行解压

▼
text
复制代码
unzip elasticsearch-analysis-ik-7.17.9.zip -d ik

解压完成之后需要删除 elasticsearch-analysis-ik-7.17.9.zip

▼
text
复制代码
rm -f elasticsearch-analysis-ik-7.17.9.zip

查看是否安装成功

▼
text
复制代码
./elasticsearch-plugin list

启用需要重新启动

▼
text
复制代码
sudo systemctl restart elasticsearch.service

添加用户

  1. 官方文档
  2. 扩展 REST 添加用户链接
  3. 确保 elasticsearch 是运行状态

1、修改 /etc/elasticsearch/elasticsearch.yml 文件

在里面添加 xpack.security.enabled: true

▼
text
复制代码
vi /etc/elasticsearch/elasticsearch.yml
image-20241113200522639

2、设置用户名密码

进入 /usr/share/elasticsearch/bin

▼
text
复制代码
cd /usr/share/elasticsearch/bin
▼
text
复制代码
./elasticsearch-setup-passwords interactive

设置 elastic, kibana, logstash_system,beats_system 这几个用户的密码

image-20241113203336673

如果想要修改这个 elastic 密码

▼
text
复制代码
curl -H "Content-Type:application/json" -XPOST -u elastic 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "修改后的密码" }'
image-20241113203923421

2、在服务器本执行

▼
text
复制代码
curl -X POST "http://localhost:9200/_security/user/leikooo" -H "Content-Type: application/json" -u "elastic:leikooo" -d ' { "password" : "123456", "roles" : [ "admin"], "full_name" : "leikooo", "enabled": true }'
image-20241113204225770
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
leikooo
作者分享
IP 数据库体积缩小 31%,关键竟然是合并重复子树
2
提到用 Rust 重写项目,很多人的第一反应往往是性能提升。以 Bun 为例,它最初主要采用 Zig 开发,后来在 2026 年发布的 v1.4 版本中将核心代码迁移到了 Rust。用 Rust 重写,性能、安全性往往是大家想要的,但是有没有想过用 Rust 重写还能发现 bug 呢? pgrust 这个项就是,他用 Rust 重新实现 PostgreSQL,保持通信协议和 SQL 方言兼容。为了确认新系统的行为和原版一致,开发者需要对着 PostgreSQL 的实际返回逐个比对。结果查着查着,有些异常不是新代码的锅,PostgreSQL 自己就是这样的。pgrust 开发者 Michael Malis 把其中几个报告给了 PostgreSQL 社区。 大概的问题: 1)SP-GiST 空间索引里有个函数判断点的方位,代码认为上、下、同一水平线三种情况已经穷尽了,末尾放了句「impossible case」兜底。结果在特定浮点边界附近,三种判断同时不成立,程序真走进了这个「不可能」的分支 2)日期格式缓存复用时,一个解析模式的标记没重置,导致同一条 JSONPath 查询在同一个会话里,换个执行顺序结果就不一样。 3)pgcrypto 的 crypt() 在某些输入下截断了多字节字符,返回的文本编码不合法。能存进去,但 pg_dump 导出时就炸了。 一个用 Rust 重写的新项目,测着测着,把运行了几十年的 PostgreSQL 里埋着的东西翻了出来。Rust 重写的价值,不一定只在跑得更快、更安全这一件事上。为了做到真正的兼容,开发者得把前人没怎么碰过的边界全走一遍,这个过程本身就在帮原版排雷。
4
ARTS 1025: 唯一字符与同构字符串、省词可能增加阅读负担与重新估算软件的实现成本
5
🎉 1024 程序员节快乐! 祝编程导航里的每一位程序员:offer 多多,薪资翻倍,面试顺利,早日拿下心仪 offer!💻
17
AST:从 Java 代码理解抽象语法树
5
下载 APP