分类:工具

工欲善其事,必先利其器。

双网卡 NAT 配置

配置静态 IP

vim /etc/network/interfaces

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eno1
iface eno1 inet static
        address 192.168.151.111
        netmask 255.255.255.0
        network 192.168.151.0
        broadcast 192.168.151.255
        gateway 192.168.151.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 202.99.192.66 202.99.192.68
        dns-search shanxiunicom

auto eno2
iface eno2 inet static
        address 192.168.199.1
        netmask 255.255.255.0

eno1 连接外网,eno2 连接外网

重启网卡

/etc/init.d/networking restart

配置路由

  • 配置路由转发

    vim /etc/sysctl.conf
    net.ipv4.ip_forward=1
    
    sysctl -p
  • 配置转发表

    vim /etc/rc.local
    iptables -F
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -t nat -A POSTROUTING -s 192.168.199.0/24 -o eno1 -j MASQUERADE
    

ubuntu 格式化并挂载硬盘

查看末格式化硬盘

fdisk -l
  • 格式化硬盘
    • 格式化小于 2T 硬盘

      fdisk /dev/vdb
      
    • 格式化大于 2T 硬盘使用 parted 工具

      parted /dev/sdb #进入 parted
      mklabel gpt #硬盘设置为 gpt 格式
      mkpart logical 0 -1 #磁盘所有容量设置为 gpt
      print #显示设置
      
  • 分区格式化为 ext4 格式,有两个方法
    1. mkfs -t ext4 /dev/vdb
    2. mkfs.ext4 -F /dev/sdb

配置分区配置文件

vim /etc/fstab
/dev/sdb /var/data/SpiderCloud/log ext4 defaults 0 0

重新加载分区

mount -a

32 位 win7 下用 docker 搭建 gitlab 服务器

安装 vmware

  • 32 位 windows 没有 docker 安装版本,只能先安装 vmware,然后在 vmware 里安装 ubuntu 和 docker。
  • 安装 vmware 10.0.4 32 位版本
  • 新建虚拟机,安装 ubuntu-server-16.04,注意不要选择立即安装,否则会进入自动安装模式,最后卡死在 vmware-tools 安装界面。
  • 设置 vmware 网络为桥接模式,

安装 ubuntu 虚拟机

  • 修改 ubuntu 源为 http://mirrors.163.com/
  • 修改 root 密码

    sh
    passwd
    
  • 设置 vmware 网络为桥接模式
  • 设置静态 IP
    • ifconfig 查看网卡名称
    • 新建网卡配置 /etc/network/interfaces.d/ens33

      auto ens33
      iface ens33 inet static
      address 192.168.1.108
      netmask 255.255.255.0
      gateway 192.168.1.1
      dns-nameservers 192.168.1.1
      
    • 重启网卡 /etc/init.d/network restar
  • 安装 open-sshd ,修改 /etc/ssh/sshd_config

    Port 2222
    PermitRootLogin yes
    
  • 安装 docker,新建 /etc/docker/deamon.json

    {
      "registry-mirrors": [
        "https://changeme.mirror.aliyuncs.com"
      ],
      "insecure-registries": [],
      "debug": false
    }   
    

docker 配置

  • 新建目录 /home/share/gitlab/volume/ config log data
  • 新建文件 /home/share/gitlab/docker-compose.yml

    version: '2'
    services:
        gitlab:
          # image: 'twang2218/gitlab-ce-zh:10.0'
          image: 'gitlab/gitlab-ce:latest'
          restart: unless-stopped
          hostname: 'gitlab'
          environment:
            TZ: 'Asia/Shanghai'
            GITLAB_OMNIBUS_CONFIG: |
              external_url 'http://192.168.1.108'
              gitlab_rails['time_zone'] = 'Asia/Shanghai'
              gitlab_rails['smtp_enable'] = true
              gitlab_rails['smtp_address'] = "smtp.163.com"
              gitlab_rails['smtp_port'] = 25
              gitlab_rails['smtp_user_name'] = "MyEmail@163.com"
              gitlab_rails['smtp_password'] = "MyPassword"
              gitlab_rails['smtp_domain'] = "163.com"
              gitlab_rails['smtp_authentication'] = "login"
              gitlab_rails['smtp_enable_starttls_auto'] = true
              gitlab_rails['gitlab_email_from'] = 'MyEmail@163.com'
              user["git_user_email"] = "MyEmail@163.com"
          ports:
            - '80:80'
            - '443:443'
            - '22:22'
          volumes:
            - /home/share/gitlab/volume/config:/etc/gitlab
            - /home/share/gitlab/volume/log:/var/log/gitlab
            - /home/share/gitlab/volume/data:/var/opt/gitlab
          privileged: true
    

    注意上面的 smtp 密码为 163 授权码,不是登陆密码

  • docker 命令

    docker-compose up -d #创建
    docker-compose down #删除
    docker-compose pull #升级
    
    docker-compose start
    docker-compose stop
    

软件备份

gitlab 备份

  • 新建文件 /home/share/gitlab/backup.sh

    #!/bin/sh
    docker exec -t gitlab_gitlab_1 gitlab-rake gitlab:backup:create
    mv /home/share/gitlab/volume/data/backups/* /home/share/gitlab/backup
    chmod -R 777 /home/share/gitlab/backup/*
    
  • crontab -e

    0 3 * * * /home/share/gitlab/backup.sh
    

将备份复制到 windows

  • 在 windows 下新建网络映射目录 V: -> /home/share/
  • 新建批处理文件 gitlab-backup.bat注意网络路径不能写成盘符

    move \\192.168.1.108\share\gitlab\backup\* E:\gitlab-repo-bak\
    
  • 新建 windows 定时任务,4 点钟执行 gitlab-backup.bat

docker compose 实例

配置文件

  • ./docker-compose.yml

    version: '3.1'
    
    services:
    
      mysql:
        #image: mysql:5.7.20
        build: ./builds/mysql-5.7.20
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: myPassword
        ports:
          - 3306:3306
        volumes:
          - //c/Users/fj/spidercloud/mysqlcfg:/etc/mysql/conf.d/source
          - //c/Users/fj/spidercloud/mysql:/var/lib/mysql
    
      redis:
        image: redis:4.0.6
        restart: always
        ports:
          - 6379:6379
        volumes:
          - //c/Users/fj/spidercloud/redis:/data
    
      mongo:
        image: mongo:3.6.0
        restart: always
        ports:
          - 27017:27017
        volumes:
          - //c/Users/fj/spidercloud/mongo/configdb:/data/configdb
          - mongodata:/data/db
    
    volumes:
      mongodata:
        external: true
    
  • ./builds/mysql-5.7.20/Dockerfile

    # Base image
    FROM mysql:5.7.20
    
    # Copy starting scripts file
    COPY start.sh /root/start.sh
    
    # Run necessary services
    CMD ["/bin/bash", "/root/start.sh"]
    
  • ./builds/mysql-5.7.20/start.sh

    #!/bin/sh
    
    cp /etc/mysql/conf.d/source/* /etc/mysql/conf.d/
    
    /entrypoint.sh mysqld
    

配置说明

  • volume 映射路径

    win7 dockertools 创建的虚拟机,默认共享了 C:/Users 目录。所有映射目录都必须在此目录下。

  • - //c/Users/fj/spidercloud/mysqlcfg:/etc/mysql/conf.d/source

    直接启动 mysql 官方镜像,不会映射配置目录,需要手工添加。该目录下配置会覆盖默认配置

  • build: ./builds/mysql-5.7.20

    如果直接将配置文件映射到 mysql 配置目录下,因为文件权限是所有人都可访问, mysql 认为不安全,会忽略此配置文件。所以在官方 mysql 镜像基础上定制,先复制配置到 source 目录下,启动时,再将配置文件复制到 mysql 配置目录下。

  • - mongodata:/data/db

    mongodb 的数据目录需要权限设置,而 windows 目录不支持此操作,所以直接映射 volume 的方法在 windows 下无法启动。需要先创建一个 volume。

    docker volume create mongodata

    然后将此 volume 映射到 mongo 容器中。该 volume 是在 linux 虚拟机中创建的,所以有权限设置。