1.操作系统磁盘挂载

1.1 识别操作系统磁盘

sudo fdisk -l

1.2 格式化数据磁盘

sudo mkfs.ext4 /dev/sdb

1.3 创建数据盘挂载点

sudo mkdir /mydata

1.4 将数据盘链接到挂载点

sudo mount /dev/sdb /mydata

1.5 编辑操作系统开启自启挂载数据盘

sudo vi /etc/fstab 

在此文件最下面加入数据盘信息
enter image description here

/dev/sdb                /mydata                 ext4    defaults        0 0

2.安装java-jdk环境

运行环境支持如下平台
后端服务平台运行环境:JDK8
在 Linux 系统上离线安装 JDK(Java Development Kit)需要通过在有互联网连接的机器上下载 JDK 的安装包,然后将安装包复制到目标机器上进行安装的方法来完成。

2.1 在有互联网连接的机器上下载 JDK 安装包:

访问 JDK 提供商的官方网站,比如 Oracle(http://www.oracle.com/technetwork/java/javase/downloads/index.html)或者 OpenJDK(http://jdk.java.net/),选择适合你的 Linux 发行版的 JDK 版本并下载。这通常是一个 .tar.gz(压缩包)或 .rpm / .deb(针对 Red Hat/Fedora 系列或 Debian/Ubuntu 系列的软件包管理器格式)。
下载此安装包:jdk-8u152-linux-x64.tar.gz

2.2. 将下载的安装包复制到离线的 Linux 机器上。

2.3. 复制到数据盘目录并解压缩 JDK 的压缩包。

sudo cp /home/admin/jdk-8u152-linux-x64.tar.gz /mydata

进入数据盘

cd /mydata

对jdk安装包进行授权

sudo chmod 777 jdk-8u152-linux-x64.tar.gz

对jdk安装包解压

sudo  tar  -zxvf jdk-8u152-linux-x64.tar.gz

2.4. 将解压后的 JDK 目录移动到合适的位置,如 /usr/local/

sudo mv jdk1.8.0_152 /usr/local/

2.5. 更新环境变量

设置 JAVA_HOME 并且将 JDK 的 bin 目录添加到你的 PATH 环境变量中。你可以将以下命令添加到 ~/.bashrc~/.profile 文件中,然后执行 source ~/.bashrcsource ~/.profile 以使设置生效。

vi  ~/.bashrc

在最下面加入以下路径:

export JAVA_HOME=/usr/local/jdk1.8.0_152
export PATH=$JAVA_HOME/bin:$PATH

2.6. 保存后重载配置

source ~/.bashrc

2.7. 验证安装

 java -version

image.png

3.安装docker

3.1 下载docker的安装文件

[https://download.docker.com/linux/static/stable/x86_64/](https://download.docker.com/linux/static/stable/x86_64/)

3.2 将docker-18.06.3-ce.tgz文件上传到centos7-linux系统上,用ftp工具上传即可

3.3 解压

tar -zxvf docker-18.06.3-ce.tgz

3.4 将解压出来的docker文件复制到 /usr/bin/ 目录下(ps:把docker子目录全部复制到bin目录)

sudo cp -R /mydata/docker/* /usr/bin/

3.5 进入/etc/systemd/system/目录,并创建docker.service文件

cd /etc/systemd/system/
sudo touch docker.service

3.6 打开docker.service文件,将以下内容复制

注意: --insecure-registry=192.168.200.128 此处改为你自己服务器ip

sudo vi docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=10.121.29.25
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

3.7 给docker.service文件添加执行权限

sudo chmod 777 /etc/systemd/system/docker.service

3.8 重新加载配置文件(每次有修改docker.service文件时都要重新加载下)

sudo systemctl daemon-reload

3.9 启动

sudo systemctl start docker

3.10 设置开机启动

sudo systemctl enable docker.service

3.11 查看docker状态

sudo systemctl enable docker.service

出现下面这个界面就代表docker安装成功。
image.png

4.docker安装mysql

4.1 下载 MySQL 镜像

docker pull mysql:8.3

4.2 上传镜像到服务器

4.3 加载镜像到 Docker

docker load < /path/to/mysql.tar

4.4 持久化运行MySQL容器

因为机器重启会导致数据丢失,需要把数据、配置文件外挂到宿主机上。

docker run --name my-mysql -v /path/to/my-custom.cnf:/etc/mysql/conf.d/config-file.cnf -e MYSQL_ROOT_PASSWORD=my-secret-pw -v mysql-data:/var/lib/mysql -p 3306:3306 mysql:8.3
docker cp /path/to/my-custom.cnf 容器名:/etc/mysql/conf.d/config-file.cnf 
docker run -d --restart=always --name zrmysql -p 3306:3306  \
-v /mydata/mysql8.3/data:/var/lib/mysql \
-v /mydata/mysql8.3/config:/etc/mysql/conf.d \
-v /mydata/mysql8.3/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=adminzr1 \
-e MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password \
-d mysql:8.3.0-oraclelinux8 

docker run --restart=always --name mysql8.3.0 -p 3306:3306  \
-v /mydata/mysql8.3.0/data:/var/lib/mysql \
-v /mydata/mysql8.3.0/config:/etc/mysql/conf.d \
-v /mydata/mysql8.3.0/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=Zrkj#20240528* \
-d mysql:8.3.0 \
--initialize --lower_case_table_names=1

设置在宿主机重启时自动启动:
docker update --restart=always my-mysql

4.5 Mysql配置文件

[mysqld]
port=3308
pid-file  = /var/run/mysqld/mysqld.pid
socket    = /var/run/mysqld/mysqld.sock
datadir   = /var/lib/mysql
bind-address=0.0.0.0
 #不区分大小写
lower_case_table_names=1  sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
[mysql]
socket=/var/run/mysqld/mysqld.sock
[client]
socket=/var/run/mysqld/mysqld.sock

4.6 验证MySQL容器

**docker ps **
重启容器:docker restart my-mysql
停止容器:docker stop my-mysql
启动已停止的容器:docker start my-mysql
使用 docker rm 命令删除已停止的容器:docker rm <container_name_or_id>

**4.7 **启动问题:

1、没有权限写入数据到主机里面目录
image.png
对主机目录进行赋权
chmod 777 -R /mydata/*
2、Mysql容器启动成功,但进入容器登录报错:Access denied for user ‘root’@‘localhost’(using password: YEs),原因:mysql配置文件没有生效
image.png
在配置文件中加入此项:
skip-grant-tables #取消密码认证
重启MySQL容器,进入容器内,输入mysql -uroot -p 直接回车,重置root密码
select host,user from user;
update set host=’%’ where user=‘root’ and host=‘localhost’;
ALTER USER ‘root’@’%‘IDENTIFIED BY ‘Zrkj#20240528*’;
FLUSH PRIVILEGES;
ALTER USER ‘root’e’%’ IDENTIFIED WITH mysql_native_password By’zrkj#20240528*’;
FLUSH PRIVILEGES;
image.png
3.MySQL容器在主机重启后一直处于重启状态
因为第一次的时候用了数据初始化的命令,把初始化的命令去掉,即可启动成功
docker run --restart=always --name mysql8.3.0 -p 3306:3306
-v /mydata/mysql8.3.0/data:/var/lib/mysql
-v /mydata/mysql8.3.0/config:/etc/mysql/conf.d
-v /mydata/mysql8.3.0/log:/var/log/mysql
-e MYSQL_ROOT_PASSWORD=Zrkj#20240528*
-d mysql:8.3.0
–initialize --lower_case_table_names=1

**4.8 **进入MySQL容器的bash环境进行管理:

docker exec -it my-mysql bash
在容器内操作MySQL:
mysql -uroot -p

**4.9 **将数据库文件导入容器

从宿主机将SQL文件复制到正在运行的MySQL Docker容器中:
docker cp /path/to/yourfile.sql 容器名或ID:/yourfile.sql
导入SQL文件到MySQL数据库:
docker exec -i 容器名或ID mysql -u用户名 -p密码 数据库名 < /path/to/yourfile.sql
使用 CREATE DATABASE 命令创建一个新数据库:
CREATE DATABASE business_system;
USE mydb;

5 docker-redis安装部署

5.1 加载镜像到 Docker

docker load < /path/to/Redis7.2.1.tar

5.2 持久化运行redis容器

因为机器重启会导致数据丢失,需要把数据、配置文件外挂到宿主机上。
docker run --name my-redis-container -v /your/local/path/redis.conf:/usr/local/etc/redis/redis.conf -v /your/local/path/data:/data redis redis-server /usr/local/etc/redis/redis.conf redis:6.2

sudo docker run --name redis7.2.1 -p 6379:6379
-v **/mydata/redis7.2/config/**redis.conf:/usr/local/etc/redis/redis.conf
-v **/mydata/redis7.2/**log:/var/log/redis
–privileged redis:7.2.1 redis-server /usr/local/etc/redis/redis.conf
设置在宿主机重启时自动启动:
docker update --restart=always redis

5.4 Redis启动后,无法连接

需要把–privileged 去掉

5.5 验证Redis容器

**docker ps **
重启容器:docker restart my-redis
停止容器:docker stop my-redis
启动已停止的容器:docker start my-redis
使用 docker rm 命令删除已停止的容器:docker rm <container_name_or_id>

**5.6 **进入Redis容器的bash环境进行管理:

docker exec -it redis bash

6 docker-nginx安装部署

6.1 加载镜像到 Docker

docker load < /path/to/nginx——laster.tar

6.2 持久化运行nginx容器

因为机器重启会导致数据丢失,需要把数据、配置文件外挂到宿主机上。
*sudo docker run -d --restart=always --name nginx -p 8181:8181 *
*-v /mydata/nginx/nginx.conf:/etc/nginx/nginx.conf *
*-v /mydata/zr/dist:/usr/share/nginx/html *
nginx:latest

6.3 nginx容器化配置文件

nginx配置文件常用调试网址:https://nginxconfig.org/

#user  www www;
worker_processes auto;
#error_log  /mydata/nginx/logs/nginx_error.log  crit;
#pid        /mydata/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

stream {
    log_format tcp_format '$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_received|$session_time|$upstream_addr|$upstream_bytes_sent|$upstream_bytes_received|$upstream_connect_time';
  
#    access_log /mydata/nginx/logs/tcp-access.log tcp_format;
#    error_log /mydata/nginx/logs/tcp-error.log;
#    include /mydata/nginx/conf.d/*.conf;
}

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http
    {
        include       mime.types;
        #include luawaf.conf;

        include proxy.conf;

        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;
        
        proxy_set_header X-Forwarded-For $remote_addr;

        
        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
        fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        limit_conn_zone $binary_remote_addr zone=perip:10m;
        limit_conn_zone $server_name zone=perserver:10m;

        server_tokens off;
        access_log off;
        
server {
    listen 8181;

    root /usr/share/nginx/html;  # 修改为容器内的前端文件路径
    index index.html;

    location / {
        index index.html;
        try_files $uri $uri/ /index.html;
    }
    
    location /prod-api/ {
        proxy_pass http://localhost:8180/;#localhost:8180需要改为后端服务所在的机器IP+端口
    }
    
    location /profile/upload/ {
        proxy_pass http://localhost:8180/profile/upload/;#localhost:8180需要改为后端服务所在的机器IP+端口
    }
}

include /etc/nginx/conf.d/*.conf; 
}

6.4 问题解决

容器化启动后,单点登录跳转显示页面访问不存在
要在location 下加入重查找路径
Nginx会首先尝试找到与请求的URI相匹配的文件或者目录,如果找不到,那么会尝试寻找与URI相同的目录,如果还是找不到,那么会返回index.html文件,如果前面的步骤都失败了,那么最后的结果是返回404错误。
try_files $uri $uri/ /index.html 404;
image.png

6.5 验证nginx容器

**docker ps **
重启容器:docker restart nginx
停止容器:docker stop nginx
启动已停止的容器:docker start nginx
使用 docker rm 命令删除已停止的容器:docker rm <container_name_or_id>

**6.6 **进入nginx容器的bash环境进行管理:

docker exec -it nginx bash

7.nginx主机安装部署

7.1 采用已编译好的nginx文件包

/Users/zjiming/Desktop/部署服务器环境包/nginx.tar

7.2 将前端文件放入对应目录

将前端文件文件放入解压后的nginx/site 目录下
例如:/mnt/nginx/site/dist
image.png

7.3 修改nginx配置文件

编辑单服务的nginx.conf文件放入到site_conf目录下
image.png
nginx配置文件常用调试网址:https://nginxconfig.org/

server {
	listen 8181;
    server_name 127.0.0.1;
	
	
	location / {
        try_files $uri $uri/ /index.html 404;
        root site/dist;
        index  index.html;
    }
	
	location /prod-api/ {
        proxy_pass http://localhost:8180/;
    }
    
    location /profile/upload/ {
        proxy_pass http://localhost:8180/profile/upload/;
    }
}

**7.4 **设置Nginx开机自启并为系统服务:

离线安装已编好的Nginx以及设置其开机自启并作为系统服务,这需要遵循以下几个步骤:

1. 创建Nginx系统服务文件
首先创建一个Nginx的系统服务文件,通常放在 **/etc/systemd/system/** 目录。
例如创建一个新的服务文件 **/etc/systemd/system/nginx.service**

sudo vi /etc/systemd/system/nginx.service

复制并粘贴以下内容到 **nginx.service** 文件中:

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf 
#要使用的配置文件路径是 /etc/nginx/nginx.conf
#/usr/sbin/nginx:这是Nginx可执行文件的路径,确定其实际路径是相当重要的,可以用 which nginx 命令来确认。
ExecReload=/usr/sbin/nginx -s reload
#这是向Nginx主进程发送 reload 信号,指示其重新加载配置文件而不中断当前连接。
ExecStop=/usr/sbin/nginx -s stop
#这是向Nginx主进程发送 stop 信号,指示其正常关闭并终止所有工作进程。
PIDFile=/run/nginx.pid
#存储Nginx服务进程ID (PID) 的文件路径
Restart=on-failure

[Install]
WantedBy=multi-user.target

2. 重新加载Systemd配置文件

sudo systemctl daemon-reload

3. 设置Nginx开机自启

sudo systemctl enable nginx

4. 启动Nginx服务

sudo systemctl start nginx

5. 检查Nginx服务状态

sudo systemctl status nginx

7.5 验证nginx

ps -ef|grep Nginx

  1. 启动Nginx服务
sudo systemctl start nginx
  1. 停止Nginx服务
sudo systemctl stop nginx
  1. 重启Nginx服务
sudo systemctl restart nginx
  1. 检查Nginx服务状态
sudo systemctl status nginx
  1. 启用Nginx服务在启动时自动启动
sudo systemctl enable nginx
  1. 禁用Nginx服务在启动时自动启动
sudo systemctl disable nginx
  1. 测试Nginx配置文件是否有语法错误
sudo nginx -t
  1. 重新加载Nginx配置文件
sudo nginx -s reload
  1. 查看Nginx版本
nginx -v

这些命令帮助管理Nginx服务器。