跳到主要内容

Linux部署快搭鸭

前言

本篇文档介绍在 Linux 下使用 Nginx + jar包 部署 快搭鸭。

下述内容所涉及的基础环境和版本为:

  • JDK 1.8
  • 数据库:不限,自行安装。
  • minio
  • nginx:1.20.1
  • redis:6.2.6
  • 部署目录:/server/cet_kuaidaya

安装目录(推荐):

img

  • kuaidaya_minio :文件服务器
  • kuaidaya_monitor:系统监控
  • kuaidaya_server:服务端,后端jar包
  • kuaidaya_web:nginx,用来部署前端

项目部署环境安装包下载 提取码:kdya

环境部署

安装JDK

1.Linux安装jdk

1.1 jdk下载安装

在资源包下获取linux的jdk,使用xftp将jdk源码包,上传到/usr/local(软件一般安装到这个目录),使用解压命令解压

tar -zxvf jdk-8u181-linux-x64.tar.gz
1.2 配置jdk环境变量

/etc/profile文件的改变会涉及到系统的环境,也就是有关Linux环境变量的东西,所以,我们要将jdk配置到/etc/profile,才可以在任何一个目录访问jdk

vim /etc/profile

按i进入编辑,在profile文件尾部添加如下内容

export JAVA_HOME=/usr/local/jdk1.8.0_181  #jdk安装目录

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH

export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin

export PATH=$PATH:${JAVA_PATH}

img.png

保存并退出编辑

通过命令source /etc/profile让profile文件立即生效

source /etc/profile
1.3 测试是否安装成功
java -version

img.png

安装Redis

1.Linux安装Redis

1.1 获取并上传文件

在资源包中获取redis压缩包,连接到我们的Linux服务器,把我们下载好的Redis压缩包,上传到Linux的 /usr/local/ 文件目录下

1.2 安装gcc环境

由于redis是由C语言编写的,它的运行需要C环境,因此我们需要先安装gcc。(如果 Redis6.x 版本 make 过程中报错,可以升级 GCC)

 yum install gcc-c++
1.3 编译与安装

进入到 /usr/local/redis-5.0.0/ 目录下,进行编译与安装

//进入到/usr/local/redis-5.0.0/ 文件目录下
[root@localhost mnt]# cd /usr/local/redis-5.0.0/

[root@localhost redis-5.0.0]# make //对解压后的文件进行编译

[root@localhost redis-5.0.0]# cd ./src //进入到 redis-5.0.0/src 文件目录下

[root@localhost src]# make install //进行redis安装

img.png img.png

1.4 统一管理

为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中 (1)创建bin和etc文件夹

[root@localhost redis-5.0.0]# mkdir bin      //创建bin文件夹

[root@localhost redis-5.0.0]# mkdir etc //创建etc文件夹

img.png

(2) 将redis-5.0.0目录下的 redis.conf 移动到 redis-5.0.0目录下的etc文件夹下,将mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-cli、redis-server 移动到 /usr/local/redis-5.0.0/bin/ 目录下

//将redis-5.0.0目录下的 redis.conf 移动到 redis-5.0.0目录下的src文件夹下
[root@localhost redis-5.0.0]# mv redis.conf ./etc/

[root@localhost redis-5.0.0]# cd ./src/ //进入redis-5.0.0目录下的src文件夹下

//将mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-cli、redis-server 移动到 /usr/local/redis-5.0.0/bin/ 目录下
[root@localhost src]# mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server /usr/local/redis-5.0.0/bin/

img.png

1.5 启动服务

(1)进入到/usr/local/redis-5.0.0/etc/ 目录下,编辑 redis.conf配置文件,设置后台启动redis服务.

//进入到/usr/local/redis-5.0.0/etc/ 目录下
[root@localhost src]# cd /usr/local/redis-5.0.0/etc/

[root@localhost etc]# ls //查看etc目录
redis.conf
[root@localhost etc]# vi redis.conf

(2)编辑 redis.conf配置文件,开启redis远程访问服务,把 redis.conf配置文件中的 bind 127.0.0.1 这一行给注释掉,这里的bind指的是只有指定的网段才能远程访问这个redis,注释掉后,就没有这个限制了 img.png

(3)把 redis.conf配置文件中的 protected-mode 设置成no(默认是设置成yes的, 防止了远程访问,在redis3.2.3版本后) img.png

(4)编辑 redis.conf配置文件,修改Redis默认密码 (默认密码为空),在配置文件中找到这一行 # requirepass foobared,删除前面的注释符号#,并把foobared修改成自己的密码 或者 另起一行 requirepass 自己的密码 img.png

1.6 设置Redis开机启动

编辑rc.local文件

[root@localhost etc]# vi /etc/rc.d/rc.local

添加如下代码到 /etc/rc.d/rc.local 中:

/usr/local/redis-5.0.0/bin/redis-server  /usr/local/redis-5.0.0/etc/redis.conf  

img.png 切换到 /usr/local/redis-5.0.0/bin/ 目录下执行 redis-server 命令,使用 /usr/local/redis-5.0.0/etc/redis.conf配置文件来启动redis服务

//进入到/usr/local/redis-5.0.0/bin/ 目录下
[root@localhost etc]# cd /usr/local/redis-5.0.0/bin/

[root@localhost bin]# ls //查看bin目录
mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server

[root@localhost bin]# ./redis-server /usr/local/redis-5.0.0/etc/redis.conf //启动Redis服务

img.png 打开RedisDesktopManager,测试服务是否开启 以及 是否可以远程访问Redis

img_1.png

安装minio

1. minio文件服务器的介绍

Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。区别于分布式存储系统,minio的特色在于简单、轻量级,对开发者友好。

2.minio的下载与安装

在资源包中下载minio文件,之后将将本地文件上传到linux服务器,创建目录

#进入到minio文件夹
cd /usr/local/minio/
#配置目录
mkdir /usr/local/minio/etc
#数据存放
mkdir /usr/local/minio/data
#查看
ll
drwxr-xr-x 2 root root 4096 Mar 4 14:17 data
drwxr-xr-x 2 root root 4096 Mar 4 14:17 etc
-rw-r--r-- 1 root root 110776320 Mar 4 14:01 minio


img.png

3.minio的启动

赋予minio权限以及启动

#赋予权限命令:
chmod +x minio
#启动命令:(/usr/local/minio/data 为你存放静态文件的目录)
./minio server /usr/local/minio/data
#后台运行命令:
nohup /usr/local/minio server /usr/local/minio/data > /usr/local/minio/data/minio.log 2>&1 &

img.png

4.minio的测试使用

外部访问网址:http://172.31.77.223:9000
服务器本地访问网址:http://127.0.0.1:9000
登录时需要输入:
AccessKey: minioadmin
SecretKey: minioadmin
./minio server --address '172.31.77.223:9000' --console-address '172.31.77.223:9001'  /usr/local/minio/data

安装nginx

1.环境准备

因为Nginx依赖于gcc的编译环境,所以,需要安装编译环境来使Nginx能够编译起来。
命令:yum install gcc-c++

Nginx的http模块需要使用pcre来解析正则表达式,需要安装pcre。
命令:yum install -y pcre pcre-devel

安装依赖的解压包。
命令:yum install -y zlib zlib-devel

ssl 功能需要 openssl 库,安装 openssl。
命令:yum install -y openssl openssl-devel

2.下载与安装

1.从资源包中下载nginx,将Nginx压缩包移动到Linux的待安装目录中。 /usr/local/nginx
命令:
cd /usr/local
mkdir nginx
cd nginx
2.解压安装
使用命令:tar -zxvf nginx-1.16.1.tar.gz 解压Nginx,解压完成后,同目录下会生成Nginx的文件夹
3.依次执行以下命令:
cd /usr/local/nginx
./configure --prefix=/usr/local/nginx
make
make install

img.png

3.配置nginx.conf

输入命令:vim /usr/local/nginx/conf/nginx.conf

nginx 配置:

#user  nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 限制body大小
client_max_body_size 100m;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

# access_log /var/log/nginx/access.log main;

# 服务端
upstream server {
# 配置负载均衡
# ip_hash;
server localhost:8080;
# server localhost:8081;
}
# 监控服务
upstream monitor-admin {
server localhost:9090;
}


server {
listen 80;
server_name localhost;
charset utf-8;

# https配置参考 start
#listen 443 ssl;

# 证书直接存放 /docker/nginx/cert/ 目录下即可 更改证书名称即可 无需更改证书路径
#ssl on;
#ssl_certificate /etc/nginx/cert/xxx.local.crt; # /etc/nginx/cert/ 为docker映射路径 不允许更改
#ssl_certificate_key /etc/nginx/cert/xxx.local.key; # /etc/nginx/cert/ 为docker映射路径 不允许更改
#ssl_session_timeout 5m;
#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_prefer_server_ciphers on;
# https配置参考 end

location / {
root html;
try_files $uri $uri/ /kuaidaya-ui/index.html;
index index.html index.htm;
}

location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://server/kuaidaya/;
}

location /admin/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://monitor-admin/admin/;
}

error_page 500 502 503 504 404 /404.html;
location = /404.html {
root html;
}
}
}

启动Nginx

nginx启动:cdsbin下执行:./nginx。 然后查看Nginx进程是否启动

ps -ef | grep nginx

部署后端

  • 打包工程

    配置好生产环境application-prod.yml数据源、cas等。

    项目目录下执行mvn clean package-Pprod

    1644549828498

    或者使用maven插件打包,先切换到prod,双击clean,双击package

    1644549898919

    打包后jar包位置:kuaidaya-admin/target/kuaidaya-admin.jar

    1644550261084

  • 上传服务器

    上传jar包到服务器/server/cet_kuaidaya/kuaidaya_server目录下

    1644550388953

  • 配置启动脚本

    kuaidaya_server目录下新建文件夹backups(备份)、logs(日志)、temp(临时)

    restart.sh脚本内容:

#!/bin/bash -e
#Author:ggx
#Version:V1.0
#Function:Cloud Toolkit部署Jar脚本

# 更新系统环境
#source /etc/profile
basepath=$(cd `dirname $0`; pwd)
# 根据jar的名称
jarName=kuaidaya-admin.jar
#结束进程
PID=`ps -ef|grep $basepath/$jarName |grep -v grep|awk '{print $2}' `
if [ -n "$PID" ]; then
kill -9 $PID
echo "结束$PID进程"
fi

if [ ! -f "$basepath/temp/$jarName" ]; then
# 重启
echo "文件不存在"
else
# 发版
# 备份上次的包
DATE=$(date +%Y_%m_%d-%H%M%S)
cp $basepath/$jarName $basepath/backups/kuaidaya-admin_$DATE.jar
# 删除上次的包
rm -rf $basepath/$jarName
# 准备部署文件
mv $basepath/temp/$jarName $basepath/$jarName
fi

nohup java -jar $basepath/$jarName &
echo "部署完毕!!!"
  • 发包

    1. 每次发版先将jar包上传到temp目录下。
    2. cd/server/cet_kuaidaya/kuaidaya_server执行./restart.sh ,第一次启动先给脚本授权 当前目录下执行:chmod a+x restart.sh。
    3. 启动成功后,执行tail -f nohup.out观察执行过程。

部署前端

  • 项目打包

    打开前端工程执行npm run build:prod

    打包好的文件位置:KuaiDaYa-ui/dist

  • 上传服务器

    /server/cet_kuaidaya/kuaidaya_web/html目录下新建目录kuaidaya-ui,将dist下的所有文件上传到/server/cet_kuaidaya/kuaidaya_web/html/kuaidaya-ui

    1644552186133

  • 配置settings.js的cas地址

启动成功

  • 配置minio

    进入系统访问系统管理-文件管理-配置管理

    1644558991931

    修改minio地址、账号、密码

    1644559046148