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
在此文件最下面加入数据盘信息
/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 ~/.bashrc
或 source ~/.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
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安装成功。
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、没有权限写入数据到主机里面目录
对主机目录进行赋权
chmod 777 -R /mydata/*
2、Mysql容器启动成功,但进入容器登录报错:Access denied for user ‘root’@‘localhost’(using password: YEs),原因:mysql配置文件没有生效
在配置文件中加入此项:
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;
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;
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
7.3 修改nginx配置文件
编辑单服务的nginx.conf文件放入到site_conf目录下
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
- 启动Nginx服务:
sudo systemctl start nginx
- 停止Nginx服务:
sudo systemctl stop nginx
- 重启Nginx服务:
sudo systemctl restart nginx
- 检查Nginx服务状态:
sudo systemctl status nginx
- 启用Nginx服务在启动时自动启动:
sudo systemctl enable nginx
- 禁用Nginx服务在启动时自动启动:
sudo systemctl disable nginx
- 测试Nginx配置文件是否有语法错误:
sudo nginx -t
- 重新加载Nginx配置文件:
sudo nginx -s reload
- 查看Nginx版本:
nginx -v
这些命令帮助管理Nginx服务器。