目录
卸载阿里云盾监控
安装docker
安装docker-compose
有网环境安装redis
docker安装mysql5.7.35
第三步:拷贝容器配置文件
第四步:删除容器,重新启动新容器
防火墙设置
docker安装RabbitMq
注意事项:使用高版本rabbitmq:3.8.14版本及以上,启动了rabbitmq容器,管理端口(默认15672)无法使用,需要开启rabbitmq-plugins
linux
通过war安装Jenkins
第一步:下载Jenkins的war包 下载地址:https://jenkins.io/download/
第二步:启动Jenkins
第三步:访问Jenkins
第四步:安装插件
docker安装nginx
了解docker中默认路径conf
html
安装gitlab
第一步:下载gitlab包
第二步: 安装gitlab
第三步:修改对外暴露的IP及端口
第四步:验证GitLab是否安装成功
查看系统版本
cat /etc/redhat-release
wget http://update.aegis.aliyun.com/download/uninstall.sh
sh uninstall.sh
wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh
sh quartz_uninstall.sh
删除残留
pkill aliyun-service
rm -fr /etc/init.d/agentwatch /usr/sbin/aliyun-service
rm -rf /usr/local/aegis*
安装文件
将以上文件放入data目录下,授权并执行安装脚本,安装包在百度云盘中,链接如下:链接:https://pan.baidu.com/s/19Kop9_E-OZmnkrAW9OjMbA
提取码:dock
chmod +x /data/docker-install.sh
sh /data/docker-install.sh
注意:日志在/data/docker/lib/containers下,阿里云日志在/var/lib/docker/containers下。将daemon.json文件放入/etc/docker下,这里是日志配置 daemon.json文件如下
{
"registry-mirrors": ["https://zfzbet67.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "10"
}
}
安装文件
将以上文件放入data目录下,授权并执行安装脚本
cd /data
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose#
docker-compose -v
下载镜像并建好目录
docker pull redis
mkdir /data/redis
mkdir /data/redis/data
mkdir /data/redis/conf
创建redis.conf文件并放入/data/redis/conf下,这个文件用来映射配置文件的目录。 创建文件并启动镜像
docker run -p 6379:6379 --name redis --restart=always -v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /usr/local/etc/redis/redis.conf --requirepass root --appendonly yes
Redis集群的哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 哨兵模式作用: 1.通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。 2.当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。 除了监控Redis服务之外,哨兵之间也会互相监控。本文采用一主、双从、三哨兵方式
部署方式为:docker compose:
version: '3.4'
services:
master:
image: redis
container_name: redis-master
restart: always
command: redis-server --port 16380 --requirepass 123456 # 16380 是定义的主库端口,默认:6379; --requirepass 123456 是redis密码。
ports:
- 16380:16380 # 将容器的16380端口映射到宿主机的16380端口上,第一个16380为宿主机端口。
slave1:
image: redis
container_name: redis-slave-1
restart: always
command: redis-server --slaveof 127.0.0.1 16380 --port 16381 --requirepass 123456 --masterauth 123456 # 127.0.0.1 16380 为主库ip和端口(此处我们使用宿主机的ip和主库映射出来的端口);16381 是定义的从库端口,默认:6379; --requirepass 123456 是redis密码; --masterauth 123456 是主库的密码。
ports:
- 16381:16381
slave2:
image: redis
container_name: redis-slave-2
restart: always
command: redis-server --slaveof 127.0.0.1 16380 --port 16382 --requirepass 123456 --masterauth 123456 # 127.0.0.1 16380 为主库ip和端口(此处我们使用宿主机的ip和主库映射出来的端口);16382 是定义的从库端口,默认:6379; --requirepass 123456 是redis密码; --masterauth 123456 是主库的密码。
ports:
- 16382:16382
注意:其中的ip改成宿主机的ip ; 第二步:执行启动命令 在当前目录下执行启动命令
docker-compose -f docker-compose.yml up -d
第三步:创建sentinel-docker-compose.yml sentinel1.conf sentinel2.conf sentinel3.conf配置文件 sentinel-docker-compose.yml如下
version: '3.4'
services:
sentinel1:
image: redis
container_name: redis-sentinel-1
command: redis-sentinel /data/dockerfile/redis-sentinel/sentinel1.conf # 自定义路径,可更改,但是需要和volumes中的路径相同。
restart: always
ports:
- 26380:26380
volumes:
- ./sentinel1.conf:/data/dockerfile/redis-sentinel/sentinel1.conf # 自定义路径,可更改,但是需要和command中的路径相同。
sentinel2:
image: redis
container_name: redis-sentinel-2
command: redis-sentinel /data/dockerfile/redis-sentinel/sentinel2.conf
restart: always
ports:
- 26381:26381
volumes:
- ./sentinel2.conf:/data/dockerfile/redis-sentinel/sentinel2.conf
sentinel3:
image: redis
container_name: redis-sentinel-3
command: redis-sentinel /data/dockerfile/redis-sentinel/sentinel3.conf
restart: always
ports:
- 26382:26382
volumes:
- ./sentinel3.conf:/data/dockerfile/redis-sentinel/sentinel3.conf
sentinel1.conf 如下
port 26380
dir /tmp
sentinel monitor mymaster 116.62.218.173 16380 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
sentinel2.conf 如下
port 26381
dir /tmp
sentinel monitor mymaster 116.62.218.173 16380 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
sentinel3.conf 如下
port 26383
dir /tmp
sentinel monitor mymaster 116.62.218.173 16380 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
第四步:执行启动命令 在当前目录下执行启动命令
docker-compose -f sentinel-docker-compose.yml up -d
执行完后如下所示 docker搭建redis哨兵模式完成,如果主从复制不成功,可以关闭防火墙
systemctl stop firewalld
配置文件中连接如下
redis:
password: 123456
timeout: 5000
sentinel:
master: mymaster
nodes: ip:26380,ip:26381,ip:26382
第一步:拉取mysql镜像
docker pull mysql:5.7.35
第二步: 启动mysql容器 查看数据文件存放路径
docker run -d \
-p 3306:3306 \
--name mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7.35
docker exec -it mysql bash
mysql -uroot -p
# Enter password:root
# mysql> show variables like '%datadir%'; /var/lib/mysql/
show variables like '%datadir%';
# 新建文件夹,将数据库的文件放到/data/mysql/data 以免容器挂了以后文件丢失
mkdir -p /data/mysql/data
show global variables like '%lower_case%';
# lower_case_table_names | 1 1是不区分大小写 0区分大小写
mkdir -p /data/mysql5.7/conf
#镜像内的配置文件路径为/etc/mysql/mysql.conf.d
docker cp mysql:/etc/mysql/mysql.conf.d /data/mysql5.7/conf
#镜像内的配置文件路径为/var/log
mkdir -p /data/mysql5.7/logs
docker cp mysql:/var/log /data/mysql5.7/logs
mysql容器的配置文件存在 /etc/mysql 下
docker stop mysql
docker rm mysql
docker run -d \
-p 3306:3306 \
--name mysql \
-v /data/mysql5.7/conf:/etc/mysql/mysql.conf.d \
-v /data/mysql/data:/var/lib/mysql/ \
-e MYSQL_ROOT_PASSWORD=veryan \
--restart always \
mysql:5.7.35 --lower-case-table-names=1
--max-allowed-packet=32505856
防火墙开机启动 systemctl enable firewalld.service
查看防火墙状态(注意:服务器对内端口和对外端口要分别开,不然访问不一样)
firewall-cmd --state 或 systemctl status firewalld
关闭防火墙
systemctl stop firewalld.service
开启防火墙
systemctl start firewalld.service
开放8080,3306,6379端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --zone=public --add-port=6379/tcp --permanent
重启
systemctl restart firewalld.service
重新加载
firewall-cmd --reload
重启防火墙可能会造成docker服务出现如下错误
Error response from daemon: Cannot restart container 9983490cee19: driver failed programming external connectivity on endpoint
重新启动docker服务就可以了
systemctl restart docker
netstat -ntlp //查看当前所有tcp端口 netstat -ntulp | grep 80 //查看所有80端口使用情况 netstat -ntulp | grep 3306 //查看所有3306端口使用情况 firewall-cmd --list-ports //查看当前所有端口使用情况
第一步:拉取镜像
docker pull rabbitmq:3.7.7-management
第二步: 根据下载的镜像创建和启动容器
mkdir -p /data/rabbitMq
docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672 -v /data/rabbitMq:/var/lib/rabbitmq --restart=always --hostname onenext5.1_Rabbit -e RABBITMQ_DEFAULT_VHOST=onenext -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3.7.7-management
#查看rabbitmq服务状态
service rabbitmq-server status
说明:
-d 后台运行容器;
--name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;
--hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)可以使用浏览器打开web管理端:http://Server-IP:15672
第三步:可以使用浏览器打开web管理端:http://Server-IP:15672,输入用户名:admin,密码 :admin
启动容器后,进入容器,命令如下
docker exec -it rabbitmq bash
执行rabbitmq-plugins enable rabbitmq_management
# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@c47a12f3024b:
rabbitmq_management
The following plugins have been configured:
rabbitmq_delayed_message_exchange
rabbitmq_management
rabbitmq_management_agent
rabbitmq_prometheus
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@c47a12f3024b...
The following plugins have been enabled:
rabbitmq_management
started 1 plugins.
这样就可以访问rabbitmq的管理界面(前提是管理端口对外开放)
/usr/local/rabbitmq_server-3.7.0/sbin目录下输入
新增用户
rabbitmqctl add_user zhangsan admin123
新增用户guest guest,并授权
rabbitmqctl stop_app; rabbitmqctl reset; rabbitmqctl start_app; rabbitmqctl add_user guest guest; rabbitmqctl set_permissions -p / guest ".*" ".*" ".*";
设置用户级别
用户级别:
1、administrator 可以登录控制台、查看所有信息、可以对rabbitmq进行管理
2、monitoring 监控者 登录控制台,查看所有信息
3、policymaker 策略制定者 登录控制台,指定策略
4、managment 普通管理员 登录控制台
rabbitmqctl set_user_tags zhangsan administrator
注:1.保存镜像为tar包 docker save 镜像 -o 文件保存位置
docker save rabbitmq:3.7.7-management -o /data/rabbitmqrabbitmq:3.7.7-management.tar
2.载入为tar包镜像
docker load -i rabbitmqrabbitmq:3.7.7-management.tar
3.获取root权限 最后面/是指定文件夹 ,不指定是当前目录下的所有目录
chown root -R ./
4.清空文件
使用cat命令情况,命令如下:
cat /dev/null > file_name
在这里我们通过Java方式来启动Jenkins,只需要一行命令就可以搞定。
测试启动Jenkins:java -jar /data1/jenkins/jenkins.war --httpPort=
19601
其中,/data1/jenkins/jenkins.war
是我存放 war包 的路径,httpsPort=19601
是当前指定访问的端口是 19601
。
也可以通过后台方式启动Jenkins,命令如下:
nohup java -Djava.awt.headless=true -DJENKINS_HOME=/data1/jenkins -jar /data1/jenkins/jenkins.war --httpPort=19601
jenkins的工作空间DJENKINS_HOME=/data1/jenkins,此时在/data1/jenkins里面有个plugins文件夹,将插件解压后放到plugins文件夹内,重启Jenkins即可
访问Jenkins的地址:http://ip地址:19601
(19601
是上一步指定的端口)
根据界面的提示,到路径 /home/appuser/.jenkins/secrets/initialAdminPassword 下找出密码,然后复制填入即可。
[appuser@cnshaappdlv023 jenkins]$ cat /home/appuser/.jenkins/secrets/initialAdminPassword
7a5075230bd64108a58eb375b41600b6
[appuser@cnshaappdlv023 jenkins]$
有网环境可以联网安装插件,无网环境离线安装插件,启动时指定了jenkins的工作空间DJENKINS_HOME=/data1/jenkins,此时在/data1/jenkins里面有个plugins文件夹,将插件解压后放到plugins文件夹内,重启Jenkins即可。
/etc/nginx/nginx.conf
/usr/share/nginx/html
/var/log/nginx
第一步:拉取镜像
docker pull nginx
第二步: 根据下载的镜像创建和启动容器
#镜像id为05f64a802c26
docker run --name tmp-nginx-container -d 05f64a802c26
mkdir -p /data1/jenkins/nginx/
docker cp tmp-nginx-container:/etc/nginx/nginx.conf /data1/jenkins/nginx/nginx.conf
docker cp -a tmp-nginx-container:/usr/share/nginx/html /data1/jenkins/nginx
docker cp -a tmp-nginx-container:/etc/nginx/conf.d /data1/jenkins/nginx/conf.d
docker cp -a tmp-nginx-container:/var/log/nginx /data1/jenkins/nginx
docker rm -f tmp-nginx-container
docker run --name mynignx -e TZ="Asia/Shanghai" -d -p 80:80 -v /data1/jenkins/nginx/html:/usr/share/nginx/html -v /data1/jenkins/nginx/nginx.conf:/etc/nginx/nginx.conf -v /data1/jenkins/nginx/conf.d:/etc/nginx/conf.d -v /data1/jenkins/nginx/logs:/var/log/nginx 05f64a802c26
安装过程参考 了这一篇博文 centos 7离线安装中文版GitLab - 民工黑猫 - 博客园centos 7.6通过离线方式安装中文版GitLab。由于在线安装下载很慢,推荐使用离线安装。离线安装方法: 第1步,下载gitlab安装包 从【清华大学开源软件镜像站 】下载最新中文版ghttps://www.cnblogs.com/yyee/p/13060076.html 但是安装之后网页访问gitlab一直是502,弄了一个下午人都整崩溃了,最后第二天通过如下命令知道gitlab启动问题出在哪,才解决
gitlab-rake gitlab:check SANITIZE=true --trace
第二次出现这个问题使用GitLab的官网去寻找解决办法,README.md · master · GitLab.org / omnibus-gitlab · GitLab
ctrl+f 502 找到官方教程中说502出现的问题
Note that on a single-core server it may take up to a minute to restart Unicorn and Sidekiq. Your GitLab instance will give a 502 error until Unicorn is up again.
It is also possible to start, stop or restart individual components.
sudo gitlab-ctl restart sidekiq
Unicorn supports zero-downtime reloads. These can be triggered as follows:
sudo gitlab-ctl hup unicorn
Note that you cannot use a Unicorn reload to update the Ruby runtime.
正式的安装过程 从【清华大学开源软件镜像站 】下载最新中文版gitlab安装包,安装包里自带了简体中文汉化包。清华大学开源软件镜像站下载地址 :https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/,下载最新的gitlab-ce-14.4.1-ce.0.el7.x86_64.rpm
安装前需要安装 policycoreutils-python依赖
yum install policycoreutils-python
安装gitlab,命令如下:
rpm -ivh gitlab-ce-14.4.1-ce.0.el7.x86_64.rpm
安装成功就会出现如上界面 (这个是同别的地方粘贴的,自己安装的没有截图,其实只是版本不一样,界面是一样的)
gitlab常用命令如下:
sudo gitlab-ctl start # 启动所有 gitlab 组件;
sudo gitlab-ctl stop # 停止所有 gitlab 组件;
sudo gitlab-ctl restart # 重启所有 gitlab 组件;
sudo gitlab-ctl status # 查看服务状态;
sudo gitlab-ctl reconfigure # 启动服务;
sudo vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab,出问题后这个超级推荐;
sudo gitlab-ctl tail # 查看日志;
编辑gitlab配置文件
vi /etc/gitlab/gitlab.rb
修改对外访问的域名或IP:
# 修改 external_url 'example.gitlab.com' 这一句 external_url 'http://localhost:9091' #修改成你自己的IP或域名:端口
ps: 注意这里设置的端口不能被占用,默认是8080端口,如果8080已经使用,请自定义其它端口,并在防火墙设置开放范围内的端口。
重新加载配置
gitlab-ctl reconfigure #重新生成相关配置文件,执行此命令时间比较长
配置gitlab开机自动启动
systemctl enable gitlab-runsvdir.service systemctl start gitlab-runsvdir.service # 关闭gitlab的自动启动命令:systemctl disable gitlab-runsvdir.service
启动GitLab
systemctl stop firewalld #关掉防火墙,要不然9091端口不能对外访问 gitlab-ctl restart #重启gitlab
输出下面信息表示启动成功:
查看 gitlab 版本
#查看版本 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
浏览器地址栏输入 http://192.168.0.101:9091
http://192.168.0.101:9091/
用户名:root,第一次访问gitlab需要强制更改密码。密码在/etc/gitlab/initial_root_password下
登录成功进入的页面:
第5步,设置为简体中文
先登录GitLab,登录成功后,在Gitlab后台的系统设置里配置简体中文。
设置路径:Setting--Preferences--Language ,将字符集修改为简体中文。
经过这一步设置,简体中文版设置完成。
第6步,创建项目,为项目分配用户
(1) 创建项目
进入管理中心 >> 点击左边导航菜单的【项目】 >> 点击【新建项目】按钮 新建一个项目
然后新建一个项目 demo1.MvcOne,创建项目后会生成项目的仓库地址。
创建项目后会自动生成项目的仓库地址,进入项目详细页面可以看到仓库地址为:
(2) 创建群组和用户
创建一个群组,群组名字为: MvcOneGroup
创建一个用户,用户名字为:user1
将user1加入群组MvcOneGroup
(3) 设置用户密码
创建好用户user1后,需要给user1用户设置密码,因为默认密码为空。
从用户管理页面,进入user1用户的编辑页面设置密码:
(4) 将用户加入群组
将user1用户加入群组MvcOneGroup,选择Developer角色级别,这个级别可以对项目进行检出与修改提交操作。
(5) 将demo1.MvcOne项目邀请用户及群组
进入demo1.MvcOne项目管理页面,点击【Manage access】按钮,邀请用户或群组。
邀请用户及群组,邀请user1用户及MvcOneGroup群组加入demo1.MvcOne项目,被邀请的单个用户及群组都有访问项目的权限。
邀请成功后的成员列表:
第7步,用git命令检出项目到本地目录
在本机先安装Git客户端,然后在本地目录右键,选择【Git Bash Here】打开 Git命令行窗口。
输入检出命令,在弹出的授权对话框中输入用名:user1 密码:12345678
git clone http://192.168.0.101:9091/root/demo1.mvcone.git
输出上面提示说明项目库检出成功,可以往demo1.mvcone.git项目库里提交代码了。
镜像导入导出示例
导出镜像
docker export 02c0c5d8767a > /data/onenext5.1_minio.tar
导入镜像
docker import - onenext5.1_minio < /data/onenext5.1_minio.tar
docker import - onenext5.1-frontend:5.1 < /tmp/onenext5.1_frontend.tar
docker import - onenext5.1-redis:5.1 < /tmp/onenext5.1_redis.tar
保存镜像
docker save 02c0c5d8767a > /data/onenext5.1_minio.tar
载入镜像
docker load < /data/onenext5.1_minio.tar
rabbitmq
导出镜像
docker save rabbitmq:3.7.7-management -o /data/rabbitmqrabbitmq:3.7.7-management.tar
上传后其他服务器加载镜像
docker load -i rabbitmqrabbitmq:3.7.7-management.tar
docker镜像批量打包
docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o /tmp/onenext5.1.tar