ThinkPad物理机安装Linux系统实战企业级项目之CentOS安装

系统安装

下载CentOS系统制作系统U盘

官网地址:阿里云镜像下载Centos7最小化安装版本
参考教程:老旧笔记本电脑变服务器(笔记本电脑+内网穿透)
下载ULtralSO:ULtralSO
遇到问题:

  • 问题:。。。。参考解决方案:
  • 问题:。。。。参考解决方案:

笔记本电源设置

系统默认屏保时间为5分钟
关闭屏保:setterm -blank 0 // 实际上是指设定屏保时间为0分钟
设置屏保:setterm -blank 10 // 设置屏保时间为10分钟
关闭休眠: vim /etc/systemd/logind.conf 设置 HandleLidSwitch=lock

  • 找到配置文件
    vim /etc/systemd/logind.conf
[Login]
...
#默认值
#HandleLidSwitch=suspend 
#修改后
HandleLidSwitch=lock
...
  • 修改配置文件
    HandleLidSwitch=lock
HandlePowerKey 按下电源键后的行为,默认power off
HandleSleepKey 按下挂起键后的行为,默认suspend
HandleHibernateKey 按下休眠键后的行为,默认hibernate
HandleLidSwitch 合上笔记本盖后的行为,默认suspend

3.使配置文件生效
systemctl restart systemd-logind

网络设置

WiFi类型查看验证设置联网

  • 查看是否需要安装固件:dmesg | grep firmware
  • 查看无线网口:iw dev Interface 后面即为无线网络接口的名称
  • 通过ip命令进行查看: ip addr 注意state 状态是否UP
  • 不是UP需要激活无线网络接口:ip link set 无线网卡名称 up
  • 检验网口是否激活:ip link show 无线网卡名称
  • 查看无线网络连接情况:iw 无线网卡名称 link 如果已连接会显示SSID:WiFi名称
  • 无连接时,扫描可连接的WiFi :iw 无线网卡名称 scan | grep SSID 显示WiFi名称
  • wireless-tools和wpa_supplicant,由于我本机是自带wpa_supplicant的,连接指定的SSID无线路由:wpa_supplicant -B -i wlp2s0 -c <(wpa_passphrase "WiFi名称" "WiFi密码") 注意保留引号
  • 用dhcp获得IP分配 :dhclient 无线网卡名称
  • 查看IP,验证WiFi连接:ip addr show 无线网卡名称
  • 再次查看无线网络连接情况:iw 无线网卡名称 link 显示connected to 说明已经连接成功
wpa_supplicant介绍:WPA是WiFi Protected Access的缩写,中文含义为“WiFi网络安全存取”。wpa_supplicant是一个开源项目,已经被移植到Linux,Windows以及很多嵌入式系统上。它是WPA的应用层认证客户端,负责完成认证相关的登录、加密等工作
 -B指的是使用守护进程在后台执行这个是必须的选项。
-c(小写)指定是使用配置文件:/etc/wpa_supplicant/wpa_supplicant.conf,如果不带配置文件就用这条命令 <(wpa_passphrase "$SSID" "$password") ,把文件作为命令输入。
-i 指的是接口名称,也就是wlp3s0无线网卡了。
  • 在上面的操作中已经成功连接WiFi了,但是wpa_supplicant还没有重启、断线自动连接能力,自动连接就需要使用NetworkManager工具,机器本身带有可使用nmcli命令
NetworkManager是RedHat(红帽组织,传送门:https://www.redhat.com/en)开发的一个项目,由一个管理系统网络连接、并且将其状态通过D-BUS(是一个提供简单的应用程序 互相通讯的途径的自由软件项目,它是作为freedesktoporg项目的一部分来开发的。)进行报告的后台服务,以及一个允许用户管理网络连接的客户端程序。优点是:带有GUI工具界面,能大大简化网络连接
  • 使用NetworkManager管理WiFi,扫描WiFi:nmcli dev wifi 发现没有设备,这里就有个问题,前面我们是通过wpa_supplicant连接的,这里再用NetworkManager连接就会产生冲突,所以这里我们先重启下network,以便让wap_supplicant的连接失效,然后再操作NetworkManager连接WiFi
  • 重启网络:service network restart
  • 重新连接WiFi:nmcli dev wifi connect $SSID password $password SSID:WiFi名称,password:WiFi密码
  • 查看网络连接:nmcli conn
[root@localhost network-scripts]# nmcli conn
NAME            UUID                                  TYPE      DEVICE 
enp0s25         91ebba6a-608d-4eab-a4d6-1cd078f2d147  ethernet  --     
TP-LINK         a12245a9-fea6-426c-aa55-19ad83d75da5  wifi      --     
  • 根据UUID来管理WiFi
nmcli c down UUID //停用WiFi
nmcli c up UUID //启用WiFi
nmcli c delete UUID //删除WiFi
  • 设置开机自动连接:nmcli con mod WiFi名称 connection.autoconnect yes

设置固定IP

  • 按刚才nmcli命令显示的网络名字找到配置文件:ls /etc/sysconfig/network-scripts/
  • 里面ifcfg开头的ifcfg-en的是以太网网卡, ifcfg-wl的是无线网网卡,或者是连接过后的以 ifcfg-WiFi名称的是无线网卡的配置文件
  • 编辑对应的以网卡名称的配置文件,例如:vim /etc/sysconfig/network-scripts/ifcfg-enp0s25是编辑我的以太网配置文件,因为我用无线,所以我要把以太网关闭
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
#要把是否默认网卡设置为no
DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s25
UUID=91ebba6a-608d-4eab-a4d6-1cd078f2d147
DEVICE=enp0s25
ONBOOT=no
  • 修改无线网卡配置文件:vim /etc/sysconfig/network-scripts/ifcfg-TP-LINK_GUIBIN
HWADDR=3C:79:1A:FE:93:F4
ESSID=TP-LINK
MODE=Managed
KEY_MGMT=WPA-PSK
MAC_ADDRESS_RANDOMIZATION=default
#网络类型
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
##设置为none禁止DHCP,设置为static启用静态IP地址,设置为dhcp开启DHCP服务
BOOTPROTO=static
#默认网卡
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=TP-LINK
UUID=b11785a9-fas6-426c-aa77-jhh
#设置为yes,开机自动启用网络连接
ONBOOT=yes
IPV6_PRIVACY=no
#以下是增加的参数
IPADDR=192.168.0.103 #固定IP
PREFIX=24 #子网掩码
GATEWAY=192.168.0.1 #网关地址

主要修改如下参数

BOOTPROTO="none"  # 设为none或static,表示静态
DEFROUTE="yes"    # 默认路由
ONBOOT="yes" #开机启动
IPADDR="192.168.59.27"  #ip地址
PREFIX="24"   # 子网掩码
GATEWAY="192.168.59.2" #网关
#DNS1="114.114.114.114"  #dns
  • 如果ping www.baidu.com不能访问,需要配置DNS服务器地址,常用dns地址为114.114.114.114,也可使用其他如 8.8.8.8 或 其他dns服务器地址,直接将 nameserver 114.114.114.114 添加到/etc/resolv.conf

安装MySQL数据库

卸载系统自带的Mariadb

  • 查看是否有该软件:rpm -qa | grep mariadb
  • 存在执行卸载:
rpm -e postfix-2.10.1-7.el7.x86_64
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64
#或者
yum remove 'mariadb'

下载安装设置MySQL

  • 下载MySQL8.0:wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
  • 安装MySQL8.0 RPM:yum -y install mysql80-community-release-el7-7.noarch.rpm
  • 安装MySQL8.0 服务:yum -y install mysql-community-server
  • 后续操作按照【不为码农的码农】的博客链接: https://blog.csdn.net/weixin_45351743/article/details/114288181

安装Docker

安装前环境检查

  • 检查是否已经安装有旧版本:rpm -qa | grep docker
  • 查看有没有yum 仓库管理 yum-config-manager 工具包:rpm -qa | grep yum-utils
yum-config-manager 是 yum 仓库管理命令
yum-config-manager 命令的本质是对 /etc/yum.repos.d/(库数据的储存位置)
文件夹下文件的增删查改,推荐使用 yum-config-manager 命令进行改动
# yum repolist all # 显示所有资源库
# yum repolist enabled # 显示所有已启动的资源库
# yum repolist disabled # 显示所有被禁用的资源库
# yum repolist all | grep xxx # 可搭配grep使用
# yum-config-manager --add-repo repository_url  # 添加 repository
# 切换库中资源----禁用+启用
# yum-config-manager --disable itemName 
# yum-config-manager --enable itemName
# 等同于直接编辑 /etc/yum.repos.d/ 下的对应资源库文件
enabled=0 # 禁用
enabled=1 # 启用
  • 如果没有安装执行:yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
  • 设置docker资源库repository:
中央仓库
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
阿里仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

执行安装Docker

  • 查看可用版本:yum list docker-ce --showduplicates | sort -r
  • 选择版本并安装:yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • 启动Docker:systemctl start docker
    设置开机自启 systemctl enable docker
Docker主要的路径:
/var/lib/docker   默认数据目录
/etc/docker/daemon.json 默认配置文件
/usr/lib/systemd/system/docker.service
Docker主要命令
Docker环境信息    info、version
镜像仓库命令       login、logout、pull、push、search
镜像管理           build、images、import、load、rmi、save、tag、commit
容器生命周期管理    create、exec、kill、pause、restart、rm、run、start、stop、unpause
容器运维操作       attach、export、inspect、port、ps、rename、stats、top、wait、cp、diff、update
容器资源管理      volume、network
系统信息日志      events、history、logs
1.events打印容器的实时系统事件
2.history 打印出指定镜像的历史版本信息
3.logs打印容器中进程的运行日志
docker --help       #查看docker命令
docker info         #docker 详细信息,镜像和容器
docker version      #查看docker版本
帮助文档地址:https://docs.docker.com/reference/
镜像相关命令
docker images -a            #列出本地所有的镜像
docker images -q            #只显示镜像ID
docker images --digests     #显示镜像的摘要信息
docker images --no-trunc    #显示完整的镜像信息
---
docker search tomcat    # 从Docker Hub上查找tomcat镜像
docker search --filter=stars=300 tomcat     #从Docker Hub上查找关注度大于300的tomcat镜像
---
docker pull tomcat      #从Docker Hub上下载tomcat镜像,默认是最新版本。等价于:docker pull tomcat:latest
docker pull tomcat:8  # 选择指定版本下载
---
#单个镜像删除,相当于:docker rmi java:latest
docker rmi java
#强制删除(删除正在运行的镜像,注:以后台方式运行的不能被强制删除)
docker rmi -f java
#多个镜像删除,不同镜像间以空格间隔
docker rmi -f java tomcat nginx
#删除本地全部镜像
docker rmi -f $(docker images -q)
容器相关命令
# 查看正在运行的容器
docker ps
# 查看所有容 包括停止的容器
docker ps -a
# -q参数,只显示container id
docker ps -q
# 查看容器详细信息
docker inspect entry_nginx
---
#新建并启动容器,参数:-i  以交互模式运行容器;-t  为容器重新分配一个伪输入终端;--name  为容器指定一个名称
docker run -i -t --name entry_nginx 镜像名称/镜像ID
#后台启动容器,参数:-d  已守护方式启动容器
docker run -d entry_nginx
#启动止容器
docker start 容器id
# 重启容器
docker restart 容器id
# 关闭容器
docker kill 容器id
docker stop 容器id
# 删除容器
docker rm  容器id
---
-u 指定用户
-d 创建一个后台运行容器
-t 参数让Docker分配一个伪终端并绑定到容器的标准输入上
-i 参数则让容器的标准输入保持打开。
-c 参数用于给运行的容器分配cpu的shares值
-m 参数用于限制为容器的内存信息,以 B、K、M、G 为单位
-v 参数用于挂载一个volume,可以用多个-v参数同时挂载多个volume
-p 参数用于将容器的端口暴露给宿主机端口 格式:host_port:container_port 或者 host_ip:host_port:container_port
--name 容器名称
--net 容器使用的网络
--privileged=true 与-u root配合使用,开启root权限,默认false,指定用户后需要设置true
---
#使用run方式在创建时进入
docker run -itd -u root \
--privileged=true \
--restart=always \ 
--name 容器名称 \
--net=自定义网络 \
-p 物理机目录:容器目录 \
-v /etc/localtime:/etc/localtime \
-v /var/run/docker.sock:/var/run/docker.sock \
镜像名称:镜像版本 \
init
----
#关闭容器并退出
exit
#仅退出容器,不关闭
快捷键:Ctrl + P + Q
快捷键:Ctrl + Shift + P + Q
---
#top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]
#列出redis容器中运行进程
docker top tomcat
#查看所有运行容器的进程信息
for i in  `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
---
# 查看redis容器日志,默认参数
docker logs tomcat
# 查看redis容器日志,参数:-f  跟踪日志输出;-t   显示时间戳;--tail  仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis
# 查看容器redis从2021年08月10日后的最新10条日志。
docker logs --since="2021-08-10" --tail=10 redis
---
# 容器内拷贝文件到主机
docker cp 容器id:容器内路径  目的主机路径

Docker 安装 Nginx

  • 拉取最新镜像:docker pull nginx
[root@localhost ~]# docker pull  nginx
Using default tag: latest
latest: Pulling from library/nginx
3f4ca61aafcd: Pull complete 
50c68654b16f: Pull complete 
3ed295c083ec: Pull complete 
40b838968eea: Pull complete 
88d3ab68332d: Pull complete 
5f63362a3fa3: Pull complete 
Digest: sha256:0047b729188a15da49380d9506d65959cce6d40291ccfb4e039f5dc7efd33286
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
  • 查看镜像:docker images
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    1403e55ab369   2 weeks ago   142MB
  • 以此镜像创建启动一个容器:docker run --name entry_nginx -p 8080:80 -d nginx
[root@localhost ~]# docker run --name entry_nginx -p 8080:80 -d nginx
094e0d773d7f47c2f5b8c696f9a8ce3c839135f371b10d64dc35a5d19227e248
#参数解释:
--name entry_nginx  创建一个名字为entry_nginx容器
-p 8080:80 把主机8080端口映射到容器内部80端口
-d 后台运行容器,并返回容器ID,不加这个参数,当退出容器时,容器也停止
nginx 镜像名称
另外的方式创建启动进入组合:docker run -itd --name entry_nginx -p 8080:80 --privileged=true  nginx init
-i:以交互模式运行容器,通常与 -t 同时使用。
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
–privileged:默认是false,设置true,该参数让容器中的root拥有真正的root权限,否则容器的root用户只是宿主机的一个普通用户权限,有些命令如:systemctl、service是使用不了的。
init :赋值给容器真正的root权限生效,使用/bin/bash是不会生效的
  • 查看刚运行启动的容器 :docker ps
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                   NAMES
094e0d773d7f   nginx     "/docker-entrypoint.…"   15 minutes ago   Up 15 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   entry_nginx
  • 进入容器内部:docker exec -it 094e0d773d7f /bin/bash
[root@localhost ~]# docker exec -it 094e0d773d7f   /bin/bash
root@094e0d773d7f:/# cd /var/log
root@094e0d773d7f:/var/log# ls
apt  btmp  dpkg.log  faillog  lastlog  nginx  wtmp
root@094e0d773d7f:/var/log# exit 退出容器
exit 
[root@localhost ~]#
  • 验证测试容器:http://192.168.0.103:8080/ 本人是在台式机局域网通过xshell连接的centos上边有教程,所有操作都是连续的,所以打开台式机Chrome浏览器访问结果如下就正常了,而且我改了容器中/usr/share/nginx/html/index.html文件,所以最后会显示Thank you for using nginx AIguibin. 没有的不是问题。
    图片
  • 然后才是核心内容进行主机容器挂载
使用mkdir命令创建如下对应的目录或文件
/usr/share/nginx/html     静态文件路径
/etc/nginx/nginx.conf     配置文件路径
/var/log/nginx            日志文件路径
/etc/nginx/conf.d         配置文件路径
比如我的:
mkdir  -p /usr/etc/docker/entrynginx          配置文件目录
mkdir  -p /usr/share/docker/entrynginx        静态文件目录
mkdir  -p /var/log/docker/entrynginx           日志文件目录
touch /usr/etc/docker/entrynginx/nginx.conf   主配置文件
  • 然后使用命令把容器的文件Copy一份出来放到指定位置
#将容器nginx.conf文件复制到宿主机
docker cp entry_nginx:/etc/nginx/nginx.conf /usr/etc/docker/entrynginx/nginx.conf
#将容器conf.d文件夹下内容复制到宿主机
docker cp entry_nginx:/etc/nginx/conf.d /usr/etc/docker/entrynginx
#将容器中的html文件夹复制到宿主机
docker cp entry_nginx:/usr/share/nginx/html /usr/share/docker/entrynginx
#将容器中日志文件夹复制到宿主机
docker cp entry_nginx:/var/log/nginx /var/log/docker/entrynginx
  • 停止运行的容器:docker stop 094e0d773d7f
  • 删除已停止的旧容器 :docker rm -f 094e0d773d7f
[root@localhost ~]# docker stop 094e0d773d7f
094e0d773d7f
[root@localhost ~]# docker rm -f 094e0d773d7f
094e0d773d7f
[root@localhost ~]#
  • 重新创建一个新的容器并启动:docker run -p 8080:80 --name entry_nginx -v /usr/etc/docker/entrynginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/etc/docker/entrynginx/conf.d:/etc/nginx/conf.d -v /var/log/docker/entrynginx/nginx:/var/log/nginx -v /usr/share/docker/entrynginx/html:/usr/share/nginx/html -d nginx
docker run -p 8080:80 --name entry_nginx \
-v /usr/etc/docker/entrynginx/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/etc/docker/entrynginx/conf.d:/etc/nginx/conf.d \
-v /var/log/docker/entrynginx/nginx:/var/log/nginx \
-v /usr/share/docker/entrynginx/html:/usr/share/nginx/html \
-d nginx
###其他参数已解释###
-v 宿主机目录 : 容器内部目录 
###这里说下 -v ###
这样创建启动的容器文件就是通的,在容器内或宿主机上改动的文件都可以被访问到。

Docker 安装 MavenNexus

  • 查找选择镜像:docker search nexus
[root@localhost ~]# docker search nexus
NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
sonatype/nexus3                      Sonatype Nexus Repository Manager 3             1192                 
sonatype/nexus                       Sonatype Nexus                                  451                  [OK]
sonatype/nexus-iq-server             Sonatype Nexus IQ Server                        23                   
nexusnetsoft/shopware-app                                                            1                    
nexusjpl/collection-manager                                                          1                    
nexusstats/nexus-stats                                                               1                    
openebs/mayastor-agent-ha-cluster    Mayastor control plane agent - Nexus HA cont…   0                    
nexusjpl/cassandra                                                                   0                    
nexusera/influx                                                                      0                    
  • 拉取镜像:docker pull sonatype/nexus3
[root@localhost ~]# docker pull sonatype/nexus3
Using default tag: latest
latest: Pulling from sonatype/nexus3
1d6f30850896: Pull complete 
aab8c43e0113: Pull complete 
96aad52479aa: Pull complete 
358891db5285: Pull complete 
9bab53693647: Pull complete 
2eecf5e36ccf: Pull complete 
ff235d7bb08a: Pull complete 
Digest: sha256:0fa03fff509aa018d9c981434f8bce5014f1253ecdcad637e1cb9ac9cdacc760
Status: Downloaded newer image for sonatype/nexus3:latest
docker.io/sonatype/nexus3:latest
  • 创建启动运行容器:docker run -d -p 18081:8081 --name aiguibin_nexus -v /usr/local/docker/nexus/data:/var/nexus-data --restart=always sonatype/nexus3
###换行方式###
docker run -d -p 18081:8081 --name aiguibin_nexus \
-v /usr/local/docker/nexus/data:/var/nexus-data \
--restart=always sonatype/nexus3
  • 进入容器查看初始密码:docker exec -it 7a3fcd26c5b8 /bin/bash
[root@localhost /]# docker exec -it 7a3fcd26c5b8 /bin/bash
bash-4.4$ cat /nexus-data/admin.password
531c2209-f55c-444b-b300-574afda80584
bash-4.4$
  • 登陆Maven Nexus:http://192.168.0.103:18081/ 输入初始密码登录后,按照提示修改密码
    图片
    使用默认的仓库就可以使用了,如在pom文件中使用
    http://192.168.0.103:18081/repository/maven-public/
    具体配置使用待后续补充

Docker 安装 Jenkins

安装前准备

安装JDK
  • 推荐自行下载安装,因为yum源安装的是openJDK,下载地址: jdk-8u351-linux-x64.tar.gz
    创建文件夹:mkdir -p /usr/local/java
    通过windows下载xftp上传 /usr/local/java下,或使用wget命令下载
    目录可自定义,解压:tar -zxvf jdk-8u351-linux-x64.tar.gz
    配置环境变量:vim /etc/profile
JAVA_HOME=/usr/local/java/jdk1.8.0_351
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH

使环境变量配置立即生效:source /etc/profile
检验是否安装成功:java -verison

安装Maven
  • 下载地址:apache-maven-3.8.7-bin.tar.gz
    创建文件夹:mkdir -p /usr/local/maven
    通过windows下载xftp上传 /usr/local/maven下,或使用wget命令下载
    目录可自定义,解压:tar -zxvf apache-maven-3.8.7-bin.tar.gz
    配置环境变量:vim /etc/profile
#set Java Environment
JAVA_HOME=/usr/local/java/jdk1.8.0_351
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH

#set Maven Environment
MAVEN_HOME=/usr/local/maven/apache-maven-3.8.7
PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_HOME PATH

使环境变量配置立即生效:source /etc/profile
检验是否安装成功:mvn -v
如windows一样使用,修改setting文件:vim apache-maven-3.8.7/conf/setting.xml

#设置私服地址
<mirror>
      <id>maven</id>
      <name>maven</name>
       <url>http://192.168.0.103:18081/repository/maven-public/</url>
      <mirrorOf>central</mirrorOf>
</mirror>
安装Git

一般的平台通常都能通过自身的一个包管理工具去安装 git 的各个版本(包括当前官方最新版本),但是红帽系列通过 yum 安装却无法安装最新版本,而且都是很旧的版本,这种版本对许多新的命令以及特性都不支持,例如 switch 命令是 2.23 版本才发布的,在此之前的版本都没有,所以官方推荐像 CentOS 通过下载 git 源码包的方式去安装

安装前检查

检查是否已经安装版本号:git version
查看yum软件源里包的版本并排序:yum list git --showduplicates | sort -r

使用yum安装

上步检查已经可以看到CentOS7使用yum安装,一般都是1.8.3.1版本

正常安装老版本
  • 查看git版本rpm包:yum list git
  • 执行安装:yum install -y git
  • 默认位置:cd /usr/libexec/git-core
  • 卸载命令:yum remove git
升级安装新版本
  • 安装GIT源rpm包:yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
  • 执行安装:yum install -y git
  • 默认位置:cd /usr/libexec/git-core
  • 卸载命令:yum remove git
  • 不推荐指定位置安装:yum --installroot=/usr/local/git --releasever=/ install git

【注意】个人并不推荐使用yum安装软件时将软件安装到自定义目录,因为实际操作过程中发现如果安装到自定义目录,会额外安装很多依赖的软件包,即使这些依赖包已经安装过,也会在你自定义的目录中重新安装!会在你指定的目录下生成根目录,类似一个用户级目录,所以谨慎使用
–installroot=/usr/local/git 表示指定自定义的安装目录
–releasever=/ 表示为安装该软件的根目录

源码编译安装
  • 卸载老版本并安装依赖:yum remove git
    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
    yum install gcc perl-ExtUtils-MakeMaker

  • 下载地址:git-2.39.0.tar.gz
    通过windows下载xftp上传 /usr/local/下,或使用wget命令下载
    目录可自定义,解压:tar -zxvf git-2.39.0.tar.gz >/dev/null
    进入目录并安装:cd git-2.39.0 && ./configure --prefix=/usr/local/git && make && make install
    设置软连接:ln -s /usr/local/git/bin/git /usr/bin/git

    设置环境变量: vim /etc/profile

    export PATH=$PATH:/usr/local/git/bin
    
  • 第一步
    ./configure: 该步骤主要用来检测系统的配置、环境以及相关依赖,如果缺少相关依赖,该脚本会中止执行,软件安装失败
    如:它会检测是否安装了gcc (用于编译各种源代码的软件),如果未安装,该脚本会中止执行
    当该脚本执行完成之后,它会根据之前检查的结果,生产一个 Makefile 文件,该文件规定了用什么编译器、编译参数等信息 ,描述了文件编译的相互依赖关系

  • 第二步
    make:该步骤主要用来编译源代码,make指令会从 Makefile 文件中读取相关指令,然后进行编译,编译完成之后会生成可执行文件

  • 第三步
    make install: 该步骤主要用来安装软件,make install命令会从 Makefile 文件中读取相关指令,然后将软件安装到指定位置
    安装位置是设置的: /usr/local/git

验证安装成功
  • 查看版本号:git version
安装NodeJs

Nodejs下载安装配置

安装Jenkins

  • 拉取jenkins官方推荐包含插件blueocean的镜像:docker pull jenkinsci/blueocean
  • 创建启动运行容器:
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED       STATUS        PORTS                                                                                      NAMES
f666d4138ecb   nginx                 "/docker-entrypoint.…"   2 weeks ago   Up 2 weeks    80/tcp                                                                                     protal_nginx
92cdb6419fa8   jenkinsci/blueocean   "/sbin/tini -- /usr/…"   5 weeks ago   Up 14 hours   0.0.0.0:50000->50000/tcp, :::50000->50000/tcp, 0.0.0.0:9999->8080/tcp, :::9999->8080/tcp   aiguibin_jenkins
7a3fcd26c5b8   sonatype/nexus3       "/opt/sonatype/nexus…"   5 weeks ago   Up 5 weeks    0.0.0.0:18081->8081/tcp, :::18081->8081/tcp                                                aiguibin_nexus
7a47fefa41fe   nginx                 "/docker-entrypoint.…"   5 weeks ago   Up 8 days     0.0.0.0:8080->80/tcp, :::8080->80/tcp                                                      entry_nginx
[root@localhost ~]# docker stop 92cdb6419fa8
92cdb6419fa8
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED       STATUS       PORTS                                         NAMES
f666d4138ecb   nginx             "/docker-entrypoint.…"   2 weeks ago   Up 2 weeks   80/tcp                                        protal_nginx
7a3fcd26c5b8   sonatype/nexus3   "/opt/sonatype/nexus…"   5 weeks ago   Up 5 weeks   0.0.0.0:18081->8081/tcp, :::18081->8081/tcp   aiguibin_nexus
7a47fefa41fe   nginx             "/docker-entrypoint.…"   5 weeks ago   Up 8 days    0.0.0.0:8080->80/tcp, :::8080->80/tcp         entry_nginx
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED       STATUS                        PORTS                                         NAMES
f666d4138ecb   nginx                 "/docker-entrypoint.…"   2 weeks ago   Up 2 weeks                    80/tcp                                        protal_nginx
92cdb6419fa8   jenkinsci/blueocean   "/sbin/tini -- /usr/…"   5 weeks ago   Exited (143) 38 seconds ago                                                 aiguibin_jenkins
7a3fcd26c5b8   sonatype/nexus3       "/opt/sonatype/nexus…"   5 weeks ago   Up 5 weeks                    0.0.0.0:18081->8081/tcp, :::18081->8081/tcp   aiguibin_nexus
7a47fefa41fe   nginx                 "/docker-entrypoint.…"   5 weeks ago   Up 8 days                     0.0.0.0:8080->80/tcp, :::8080->80/tcp         entry_nginx
[root@localhost ~]# docker rm 92cdb6419fa8
92cdb6419fa8
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND                  CREATED       STATUS       PORTS                                         NAMES
f666d4138ecb   nginx             "/docker-entrypoint.…"   2 weeks ago   Up 2 weeks   80/tcp                                        protal_nginx
7a3fcd26c5b8   sonatype/nexus3   "/opt/sonatype/nexus…"   5 weeks ago   Up 5 weeks   0.0.0.0:18081->8081/tcp, :::18081->8081/tcp   aiguibin_nexus
7a47fefa41fe   nginx             "/docker-entrypoint.…"   5 weeks ago   Up 8 days    0.0.0.0:8080->80/tcp, :::8080->80/tcp         entry_nginx
[root@localhost ~]# docker run -d -u root -p 28082:8080 -p 50000:50000 -v /usr/local/git:/usr/local/git -v /usr/local/java:/usr/local/java -v /usr/local/maven:/usr/local/maven -v /usr/local/nodejs:/usr/local/nodejs -v /usr/local/gradle:/usr/local/gradle -v /usr/local/python:/usr/local/python -v /usr/local/docker/jenkins/data:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /var/run/docker.sock:/var/run/docker.sock --restart=always --privileged=true  --name aiguibin_jenkins jenkinsci/blueocean

换行格式

docker run -d -u root \
-p 28082:8080 -p 50000:50000 \
-v /usr/local/git:/usr/local/git \
-v /usr/local/java:/usr/local/java \
-v /usr/local/maven:/usr/local/maven \
-v /usr/local/nodejs:/usr/local/nodejs \
-v /usr/local/gradle:/usr/local/gradle \
-v /usr/local/python:/usr/local/python \
-v /usr/local/docker/jenkins/data:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
--privileged=true  \
--name aiguibin_jenkins \
jenkinsci/blueocean
###可能出现的错误:
[root@localhost ~]# docker logs ec2278301d45
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
原因:
jenkins默认以jenkins:jenkins用户来运行,
该用户对于宿主/usr/local/docker/jenkins/data目录没有写权限,
所以无法写入容器中的/var/jenkins_home目录
###特别参数说明
-u root  因为宿主机是root用户,容器中jenkins user的uid为1000
解决方案以下任选一种:
1.以root用户启动jenkins容器,在docker run 命令中指定用户"-u root",并开启--privileged=true
2.修改/usr/local/docker/jenkins/data权限,chown -R 1000:1000 /usr/local/docker/jenkins/data

使用Jenkins

  • 浏览器登陆:http://192.168.0.103:9999
  • 进入容器内部:docker exec -it aiguibin_jenkins /bin/bash
  • 查看初始密码:cat /var/jenkins_home/secrets/initialAdminPassword
  • 修改插件下载地址:vi /var/jenkins_home/hudson.model.UpdateCenter.xml
    修改前默认地址
    修改后新的地址
其他Jenkins具体的使用
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值