Linux Server部署

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 评论

留下您的评论.