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
友情提示:打包的项目中配置文件的中间件地址要换为虚拟机的地址。