Linux Server 部署
服务器设置ssh登录?
一:创建SSH密匙
在SSH密匙控制台创建SSH密匙,SSH密匙创建地址如下:https://console.cloud.tencent.com/lighthouse/sshkey/index
二:下载SSH密钥
创建完SSH密匙后,下载密匙,腾讯云不会保管私钥信息,需要在10分钟内点击"下载"按钮获取私钥,将私钥信息下载到本地,私钥名称是创建SSH密匙时的密匙名称。
三:腾讯云服务器关联SSH密匙
四:使用终端连接工具(Xshell为例)登陆
输入自定义名称,主机填写你的公网ip,然后确定
输入用户名
密码不用输入,选择使用SSH验证,秘钥为第二步我们下载的秘钥
可以看到已经登陆成功了,执行一些命令都是可以的
如何创建快照?
云服务器中的快照,就是某一个时间点上某一个磁盘的数据备份。用于服务器故障时的数据恢复
使用Docker部署Springboot项目
目前Java项目大部分都是使用Spring Boot搭建项目,再使用Docker快速部署,本文简单介绍Docker的安装和Docker部署Spring Boot项目,该文档基于Linux系统为Centos7
Docker安装Springboot项目:https://blog.csdn.net/oqqZhe1234/article/details/127976423
Docker安装Redis:https://blog.csdn.net/weixin_45821811/article/details/116211724?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167818313216800227497564%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167818313216800227497564&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~hot_rank-1-116211724-null-null.142v73pc_new_rank,201v4add_ask,239v2insert_chatgpt&utm_term=docker%E9%83%A8%E7%BD%B2redis&spm=1018.2226.3001.4187
安装Docker
docker 安装社区版本CE
确保 yum 包更新到最新。
yum update
卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker
yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
yum install <自己的版本> # 例如:sudo yum install docker-ce-17.12.0.ce
启动和开机启动
systemctl start docker
systemctl enable docker
验证安装是否成功
docker version
Docker配置Mysql
docker pull mysql:5.7 # 5.7 是指定版本号
# mysql 5.x使用此命令,挂载目录与8.x有所不同
docker run -p 3306:3306 --name mysql --restart=always -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=zcjwoaini -d mysql:5.7
Docker配置Nginx
docker pull nginx # 这里没写版本号,意思是拉取最新的版本
启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf)
之所以要先创建 , 是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件
当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker会将nginx.conf 作为目录创建 , 这并不是我们想要的结果 。
生成容器
docker run --name mynginx -p 80:80 -d nginx
将容器nginx.conf文件复制到宿主机
docker cp mynginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
将容器conf.d文件夹下内容复制到宿主机
docker cp mynginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
将容器中的html文件夹复制到宿主机
docker cp mynginx:/usr/share/nginx/html /home/nginx/
拷贝完文件后,我们需要删除这个Nginx容器,然后用-v挂载数据卷的形式,即可将容器内文件挂载到我们宿主机上
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
# 删除正在运行的nginx容器
docker rm -f nginx
启动容器命令
docker run \
-p 80:80 \
--restart=always \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx
参数说明:
-p 映射端口,格式为“宿主机端口:容器端口”
-v 挂载文件-e TZ=Asia/Shanghai 设置时区
–privileged=true 让容器中的root用户拥有真正的root权限
–name 容器名字,以后可以使用这个名字启动或者停止容器
–restart=always docker启动时自动启动容器
-d 指定要启动的镜像名
容器中的nginx.conf文件和conf.d文件夹复制到宿主机
启动容器报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aZNmrI0E-1678431479283)(G:/typora/assets/image-20230308124219132.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tU8f6TIZ-1678431479284)(G:/typora/assets/image-20230308124203008.png)]
出现的原因是 /home/nginx.conf 是一个目录,而不是文件
解决方法就是删除nginx.conf 目录,然后新建一个nginx.conf 文件
就可以了。如下图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UzbUWZi5-1678431479284)(G:/typora/assets/image-20230308124310819.png)]
再次运行容器启动命令,还是发现报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VWuKtkuY-1678431479284)(G:/typora/assets/image-20230308124354590.png)]
这里是因为刚启动容器的名字已经被使用了,我们执行docker ps -a(列出未运行的容器,将这个容器删除后,再执行运行容器命令即可)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NgtHkCnr-1678431479284)(G:/typora/assets/image-20230308124545535.png)]
可以看到已经成功执行了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UGVpUxR9-1678431479285)(G:/typora/assets/image-20230308124650600.png)]
Docker配置Jenkins
待完成
Docker配置Redis
docker pull redis:5.0 # 5.0 是指定版本号
接下来就是要将redis 的配置文件进行挂载,以配置文件方式启动redis 容器。(挂载:即将宿主的文件和容器内部目录相关联,相互绑定,在宿主机内修改文件的话也随之修改容器内部文件)
1)、挂载 redis 的配置文件
2)、挂载 redis 的持久化文件(为了数据的持久化)。
本人的配置文件是放在
liunx 下redis.conf文件位置: /home/redis/myredis/redis.conf
liunx 下redis的data文件位置 : /home/redis/myredis/data
运行Redis容器
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 000415
--restart=always 总是开机启动
--log是日志方面的
-p 6379:6379 将6379端口挂载出去
--name 给这个容器取一个名字
-v 数据卷挂载
- /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
- /home/redis/myredis/data:/data 这个同上
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
–appendonly yes 开启redis 持久化
–requirepass 000415 设置密码 (免得Redis被挖矿攻击了)
成功界面
通过Docker ps指令查看启动状态
docker ps -a #列出所有容器(-a 包含未运行的容器)
容器内连接Redis
docker exec -it myredis redis-cli
auth 密码 #刚设置的Redis密码
查看当前redis有没有设置密码:(得验证通过了才能输入的)
config get requirepass
docker设置redis密码
方法一:创建redis容器并设置密码
docker run -itd --name redis-6379 -p 6379:6379 redis --requirepass 123456
--name (启动容器的名称)
-p 映射端口:redis启动端口 redis
--requirepass 启动密码
方法二:为现有的redis创建密码或修改密码的方法:
#1.进入redis的容器
docker exec -it myredis redis-cli
#2.查看现有的redis密码:
config get requirepass
#5.设置redis密码
config set requirepass 密码
Redis配置文件
myredis.conf
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#bind 127.0.0.1
protected-mode no
port 6379
tcp-backlog 511
requirepass 000415
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
Docker删除Redis
查看所有在运行的容器
docker ps
删除redis 容器
docker rm myredis
查看全部镜像
docker images
删除Redis镜像
docker rmi 99ee9af2b6b1 # 这是我镜像redis id
Docker安装Zfile
Zfile Docker Hub:https://hub.docker.com/r/stilleshan/zfile
下方高亮部分,可自定义端口和数据目录:
- 端口号:第 2 行冒号左侧的
808
表示对外暴露的端口号,如其他程序占用,则请修改为其他端口号。- 数据目录:第 5 行的
-v /root/zfile/file:/data/file \
为映射宿主机文件夹/root/zfile/file
到容器内的/data/file
文件夹,这样需要在 ZFile 添加本地存储时,填写容器内目录/data/file
就等同于访问宿主机的/root/zfile/file
目录了。 这一行按照自己的需求修改,如果不需要映射本地存储,则可以删除这一行。
docker run -d \
--name=zfile \
--restart=always \
-p 8081:8080 \
-v /root/zfile/conf:/root/.zfile-v4 \
-v /root/zfile/data:/root/zfile/data \
stilleshan/zfile
Zfile访问地址
http://IP:8081