Linux Server 部署
服务器设置ssh登录?
一:创建SSH密匙
在SSH密匙控制台创建SSH密匙,SSH密匙创建地址如下:登录 - 腾讯云
二:下载SSH密钥
创建完SSH密匙后,下载密匙,腾讯云不会保管私钥信息,需要在10分钟内点击"下载"按钮获取私钥,将私钥信息下载到本地,私钥名称是创建SSH密匙时的密匙名称。
三:腾讯云服务器关联SSH密匙
四:使用终端连接工具(Xshell为例)登陆
如何创建快照?
使用Docker部署Springboot项目
Docker安装Springboot项目:spring boot 项目 docker 部署指南_springboot docker部署_洁身-斯坦姬的博客-CSDN博客
Docker安装Redis:史上最详细Docker安装Redis (含每一步的图解)实战_宁在春的博客-CSDN博客^v73^pc_new_rank,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=docker%E9%83%A8%E7%BD%B2redis&spm=1018.2226.3001.4187
安装Docker
确保 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
systemctl restart docker
卸载Docker
1:执行一下命令
yum remove docker docker-common docker-selinux docker-engine
2:卸载docker相关包,先执行
yum list installed | grep docker
3:再执行
yum remove docker-ce.x86_64 17.12.0.ce-1.el7.centos @docker-ce-stable
4:再执行
# 不出现提示的话,说明卸载成功了 yum list installed | grep docker 和 docker --version
Docker配置Mysql
# 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
启动前需要先创建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对应的容器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
启动容器报错
出现的原因是 /home/nginx.conf 是一个目录,而不是文件
解决方法就是删除nginx.conf 目录,然后新建一个nginx.conf 文件
就可以了。如下图
再次运行容器启动命令,还是发现报错
这里是因为刚启动容器的名字已经被使用了,我们执行docker ps -a(列出未运行的容器,将这个容器删除后,再执行运行容器命令即可)
可以看到已经成功执行了。
Docker配置Jenkins
Jenkins官网 https://www.jenkins.io
Jenkins安装教程 docker安装jenkins并且通过jenkins部署项目(超详细and靠谱)_docker jenkins_Java大憨的博客-CSDN博客^v81^insert_down38,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=Docker%E5%AE%89%E8%A3%85Jenkins&spm=1018.2226.3001.4187
安装Jenkins
在启动时携带--rm
选项表示退出容器时会自动将其删除。
docker pull jenkins/jenkins:2.344 #拉取jenkins镜像docker run -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_mount:/var/jenkins_home -v /usr/local/maven/apache-maven-3.6.3:/usr/local/maven -v/usr/local/git/bin/git:/usr/local/git -v /etc/localtime:/etc/localtime --name myjenkin jenkins/jenkins:2.344 #启动jenkins镜像
提示没有权限,导致docker容器运行失败。
需要我们手动更改权限,把勾全部勾上
解锁 Jenkins
方法一
进入Jenkins容器:docker exec -it {Jenkins容器名} bash
推荐 docker exec -it 容器id /bin/bash
查看密码:cat /var/jenkins_home/secrets/initialAdminPassword
方法二
(1)docker ps (2)docker logs 容器id
红框内即为密码
安装插件
选择第一个:安装推荐的插件
安装jenkins时出现 No such plugin: cloudbees-folder的解决办法
1、打开链接“Index of /packages/jenkins/plugins/cloudbees-folder/latest”,在最下面找到并打开“latest”目录。下载cloudbees-folder.hpi文件
2、将目录中的“cloudbees-folder.hpi”下载下来后放在“jenkins安装目录/var/jenkins_home/war/WEB-INF/detached-plugins”文件夹中。
执行1、2步骤后刷新页面仍然出现“ No such plugin: cloudbees-folder”错误,猜测这个“hpi”文件可能是项目启动时候加载,是需要重启jenkins服务才可以,因此执行:
3、重启Jenkins容器 (1)docker ps (2)docker restart 容器id
安装Jenkins 一直卡在Please wait while Jenkins is getting ready to work ...
(1)需要你进入jenkins的工作目录 (为刚刚我们安装jenkis挂载在宿主机的路径),如下图
(2)编辑hudson.model.UpdateCenter.xml文件
如果没遇到以上两个问题,请继续下一步
创建管理员用户。
点击完成,然后重启Jenkins
登陆Jenkins
如何更新Jenkins版本?
1:安装好jenkins之后,访问Jenkins地址(服务器ip:8080)默认的
2:点击dashboard-->系统管理-->即可看到更新Jenkins版本(因为我是最新版本,所以会提示降级)
系统配置
进入【首页
】–【系统管理
】–【插件管理
】–【可选插件
】
搜索以下需要安装的插件,点击安装即可。
-
安装Maven Integration
-
安装Publish Over SSH(如果不需要远程推送,不用安装)
-
如果使用Gitee 码云,安装插件Gitee(Git自带不用安装)
如何手动下载并安装Jenkins插件?
https://www.cnblogs.com/zhuosanxun/p/15136722.html
Jenkins配置Maven
进入Dashboard-->系统管理-->全局工具配置
当MAVEN_HOME没有出现黄色的字,说明这个MAVEN_HOME路径没问题。
Jenkins配置Git
进入Dashboard-->系统管理-->全局工具配置
Jenkins创建项目
新建item--->创建一个maven项目-->
配置SSH server
由于我用的是SSH的秘钥,需要手动生成一下。
生成SSH秘钥可以参考本笔记最上方(以腾讯云为例)
配置项目设置
Dashboard--->找到自己项目--->Post Steps--->增加构建后操作步骤---->选择构建后操作步骤
因为咱们做了docker的文件映射了,所以jenkins容器上生成的jar包,其实也会映射到咱们本机上,所以咱们就无需将Jar包通过publish over ssh插件再发送了,所以这里我只需要执行代码即可。
#第一步是进入到服务器中生成好的jar包的目录下 cd /var/jenkins_mount/workspace/杰哥不要啊/target #第二步是根据jar包的名字获取运行的pid,并且将该进程杀死 ps -ef | grep collection-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{printf $2}' | xargs kill -9 #最后一步就是将这个jar后台启动了,并且将日志输出到utils.log中。 nohup java -jar collection-0.0.1-SNAPSHOT.jar >utils.log &2>1 &
现在再点击一下构建项目
run.sh
#!/bin/bash project=utils cd /root/springboot/bzovo-utils cp /var/jenkins_mount/workspace/杰哥不要啊/target/*.jar /root/springboot/bzovo-utils docker stop $project docker rm $project docker rmi $project-image docker build -t $project-image . docker run -dit --name $project -p 8090:8090 -v /root/springboot/bzovo-utils/utils.log:/app/utils.log $project-image
#参数说明 project=utils #进入目录 cd /root/springboot/bzovo-utils #拷贝文件 cp /var/jenkins_mount/workspace/杰哥不要啊/target/*.jar /root/springboot/bzovo-utils #首先停止容器 docker stop $project #删除容器 docker rm $project #删除容器对应的镜像 docker rmi $project-image #重新build镜像 docker build -t $project-image . #运行docker容器,且对外暴露的端口为8090 docker run -dit --name $project -p 8090:8090 -v /root/springboot/bzovo-utils/utils.log:/app/utils.log $project-image
Dockerfile
FROM openjdk:11 MAINTAINER xu.ziyun RUN mkdir /app WORKDIR /app RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone ADD collection-0.0.1-SNAPSHOT.jar /app/collection-0.0.1-SNAPSHOT.jar EXPOSE 8090 ENV JAVA_OPTS="-server -Xmn256m -Xmx512m -Xms512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m" ENTRYPOINT java ${JAVA_OPTS} -Dspring.profiles.active=bzovo -jar /app/collection-0.0.1-SNAPSHOT.jar > /app/utils.log
参数解释: FROM openjdk:11 #使用jdk11镜像 MAINTAINER xu.ziyun #创建这个镜像的作者 RUN mkdir /app #容器启动创建命令 WORKDIR /app #进入容器的时候默认进入的目录 #拷贝时区,可以防止docker时间比服务器慢8h RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone #将当前目录的jar包拷贝到容器的/app目录下 ADD collection-0.0.1-SNAPSHOT.jar /app/collection-0.0.1-SNAPSHOT.jar EXPOSE 8090 #对外暴露的端口 #这是java的启动参数 ENV JAVA_OPTS="-server -Xmn256m -Xmx512m -Xms512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m" #spring.profiles.active=bzovo 表示jar包读取为bzovo配置文件 # /app/collection-0.0.1-SNAPSHOT.jar > /app/utils.log 表示容器里的jar包运行时,将日志重定向到容器的utils.log文件 ENTRYPOINT java ${JAVA_OPTS} -Dspring.profiles.active=bzovo -jar /app/collection-0.0.1-SNAPSHOT.jar > /app/utils.log ps:有的小伙伴会问,你这里只是将日志重定向到容器里?我怎么查看日志呢? 可以参考run.sh文件里,有这样一行代码 docker run -dit --name $project -p 8090:8090 -v /root/springboot/bzovo-utils/utils.log:/app/utils.log $project-image 这里-v将容器里的/app/utils.log 挂载到了linux目录/root/springboot/bzovo-utils/utils.log,所以能实现log日志共享了。
如何查看项目日志?
如何使用Jenkins构建?
Docker安装GitLab(用于配合Maven实现自动构建Jar包)
3.1 搜索Gitlab镜像
docker search gitlab
3.2 下载Gitlab社区免费版最新镜像
说明:ce 表示社区免费版 ,ee 表示企业付费版
docker pull gitlab/gitlab-ce:14.6.0-ce.0
3.3 查看镜像是否下载成功
#获取本地镜像列表查看是否有gitlab-ce的镜像
docker images
3.4 运行Gitlab镜像
docker run -d \ --name gitlab \ --restart always \ -p 8082:443 -p 8083:8090 -p 8084:22 \ -v /etc/localtime:/etc/localtime:ro \ -v /home/gitlab_data/gitlab/config:/etc/gitlab \ -v /home/gitlab_data/gitlab/logs:/var/log/gitlab \ -v /home/gitlab_data/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:14.6.0-ce.0 sudo docker run --detach \--publish 8082:443 --publish 8083:8083 --publish 8084:22 \--name gitlab \--restart always \--volume /home/gitlab_data/gitlab/config:/etc/gitlab \--volume /home/gitlab_data/gitlab/logs:/var/log/gitlab \--volume /home/gitlab_data/gitlab/data:/var/opt/gitlab \--shm-size 256m \registry.gitlab.cn/omnibus/gitlab-jh:latest
参数说明
-d 指定后台运行 --hostname 指定主机名 --name 指定容器名 -p 端口映射 443 https端口 80 http端口 22 ssh端口 将容器的TCP443端口映射到宿主机的8082端口 自定义GitLab端口转发规则 22:Docker 容器的 SSH 访问端口, 80:Docker 容器的 Http 访问端口, 443:Docker 容器的 Https 访问端口, --restart always 容器停止后的重启策略: 容器退出时总是重启 -v 指定挂载存储卷首先在宿主主机创建对应的目录
新建Jenkins任务
在安装好Maven后,创建项目的时候会有一个构建一个maven项目。
Jenkins构建时间相差8h,解决方案
1:系统管理--->脚本命令行
输入命令
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai')
Linux配置Swap
linux 增加swap 分区大小_小百菜的博客-CSDN博客^v81^insert_down38,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=linux%E5%A2%9E%E5%8A%A0swap%E5%88%86%E5%8C%BA&spm=1018.2226.3001.4187
一、增加swap交换文件
1、使用dd命令创建一个swap交换文件
这样就建立一个/home/swap的分区文件,大小为4G。
2.格式化swap分区:
sudo mkswap /home/swap
3.设置交换分区:
sudo mkswap -f /home/swap
4.修改权限:
sudo chmod 600 /home/swap
5.激活swap分区:
sudo swapon /home/swap
6.设为开机自动启用:
sudo vi /etc/fstab
在该文件底部添加如下内容:
/home/swap swap swap default 0 0
Docker安装JDK
1.下载openjdk11
docker pull openjdk:11
2:创建容器
# 创建容器 docker run -d -t --name java-11 openjdk:11
3:进入容器,查看Java版本
docker exec -it 容器id /bin/bash
4:查看java版本
java -version
Linux安装安装JDK
Archived OpenJDK GA Releases openjdk下载地址
下载文件,然后上传到服务器上。
一:下载JDK文件,并上传到服务器上。
tar -xvf openjdk-11.0.1_linux-x64_bin.tar.gz
二:配置环境变量
JAVA_HOME=/usr/local/jdk-11.0.1 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
重启配置文件
三:检查是否安装成功
java -version
Linux安装Maven
maven下载地址:Maven – Download Apache Maven
下载后,上传到服务器 /usr/local路径,然后在/usr/local路径解压(推荐下载Binary版本)
tar -zxvf apache-maven-3.6.3-bin.tar.gz
1:cd到/usr/local/apache-maven-3.6.3/conf路径下
2:编辑 vi settings.xml文件(此文件为maven的配置文件)我们需要添加阿里云镜像。
3:将原文件内容全部删除,添加新的配置内容删除命令
:1,.d
4:修改新的配置文件内容
<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd"><localRepository>/m2/repository</localRepository><pluginGroups></pluginGroups><proxies> </proxies><servers></servers><mirrors><mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors><profiles></profiles> </settings>
5:执行完了后,再输入:wq保存退出。
3:添加环境变量
一:编辑profile文件
vi /etc/profile
二:添加环境变量内容
MAVEN_HOME=/usr/local/apache-maven-3.6.3 PATH=$MAVEN_HOME/bin:$PATH export MAVEN_HOME PATH
根据图中你下载的maven版本来设置添加内容
三:重新加载配置文件
source /etc/profile
四:测试maven是否安装成功
Linux安装Git
yum install git -y
检查是否安装成功
git --version
通过git --version查看发现,安装的git版本是 v1.8.3.1,若要安装最新版本的git,请用源码包安装。
git 安装目录
安装更高版本Git
下载
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.30.2.tar.gz
安装
tar -zxf git-2.24.0.tar.gz cd git-2.24.0 make prefix=/usr/local/git all make prefix=/usr/local/git install
添加环境变量
vim /etc/profile export PATH=$PATH:/usr/local/git/bin source /etc/profile
查看版本号
git --version git version 2.24.0
在使用命令 make
重新编译 Git 的某些源文件时,你可能会遇到以下这些错误:
git服务器搭建 - 码农教程
错误 1 - FATAL ERROR: OPENSSL/SSL.H: NO SUCH FILE OR DIRECTORY
这是缺少 openssl-devel 导致的,执行命令 yum install --assumeyes openssl-devel 安装即可。
错误 2 - FATAL ERROR: CURL/CURL.H: NO SUCH FILE OR DIRECTORY
这是缺少 curl-devel 导致的,执行命令 yum install --assumeyes curl-devel 安装即可。
错误 3 - FATAL ERROR: EXPAT.H: NO SUCH FILE OR DIRECTORY
这是缺少 expat-devel 导致的,执行命令 yum install --assumeyes expat-devel 安装即可。
卸载Git
yum remove git
Docker配置Redis
接下来就是要将redis 的配置文件进行挂载,以配置文件方式启动redis 容器。(挂载:即将宿主的文件和容器内部目录相关联,相互绑定,在宿主机内修改文件的话也随之修改容器内部文件) 1)、挂载 redis 的配置文件 2)、挂载 redis 的持久化文件(为了数据的持久化)。 本人的配置文件是放在 liunx 下redis.conf文件位置: /home/redis/myredis/redis.conf liunx 下redis的data文件位置 : /home/redis/myredis/data
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:Docker
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访问地址
存储源设置
测试上传图片
上传成功
Linux重定向输出日志
#表示截取catalina.out文件后200行,并输出到20230323.txt, 如果文件不存在则会创建 tail -n 200 catalina.out > 20230323.txt
服务器重启Docker
systemctl restart docker
本文链接:https://my.lmcjl.com/post/12870.html
4 评论