Linux系统安装docker

docker的趋势是浩浩荡荡啊,下面是各个系统安装docker的脚本

#!/bin/bash
updateKernel(){
    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
    yum --enablerepo=elrepo-kernel install kernel-lt -y
    sed -i "s/default=1/default=0/g" /etc/grub.conf
    sed -i "s/default=1/default=0/g" /boot/grub/grub.conf
}

centos6InstallDocker(){
    kernalVersion=`uname -r | cut -d "." -f 1`
    if [ $kernalVersion  -lt 3 ];then
        updateKernel
    fi
    yum -y install epel-release
    yum -y install docker-io
    service docker start
    chkconfig docker on
    docker version
}

centos7InstallDocker(){
    yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-config-manager  --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    yum install docker-ce -y
    systemctl start docker
    systemctl enable docker
    docker version
}

ubuntuInstallDocker(){
    sudo apt-get remove docker docker-engine docker.io containerd runc
    sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update
    sudo apt-get install docker-ce -y
    ## test docker
    sudo docker container run hello-world
}

centosVersion=`cat /etc/redhat-release | sed -r 's/.* ([0-9]+)\..*/\1/'`
if [ $centosVersion -eq 6 ];then
    centos6InstallDocker
elif [ $centosVersion -eq 7 ];then
    centos7InstallDocker
else
    echo "Your version is wrong , Plese check !!!"
    exit
fi

mongodb的使用

最近用到了mongodb,正好重新整理一下mongodb的相关知识

  • 基本使用
## 设置管理员
use admin
db.createUser(
  {
    user: "username", 
    pwd: "passwd", 
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 
  }
)

mongo --host hostname --port portNumber -u username -p password --authenticationDatabase "admin"  ## 进入mongo数据库

db.version(); ## 当前db版本
db.stats(); ## 显示当前db状态
show users:## 显示用户
show dbs;   ## 查询所有数据库
use databasename ; ## 切换数据库,如果该数据库不存在,就创建该数据库
db.getName(); ## 查看当前使用的数据库
show collections:## 显示当前数据库中的集合(类似关系数据库中的表)
db.collectionName.drop() ## 删除collectionName这个集合
db.dropDatabase(); ## 删除当前使用数据库
  • 备份与恢复
mongodump  --host hostname --port portNumber -u username -p password --authenticationDatabase=admin -d databasename -o /opt/backup/backupname ## 备份一个数据库

mongorestore --host hostname --port portNumber -u username -p password --authenticationDatabase=admin -d databasename /opt/backup/backupname ## 还原一个数据库

PS: mongodump导出的是bson格式,是二进制形式,不过可以使用mongo自带的bsondump命令查看里面的数据,而mongoexport导出的则是文本,可以是csv、json格式。JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,具体要看版本之间的兼容性。当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是一个可选项。跨版本的mongodump/mongorestore个人并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)。JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意

参考文章:
https://www.cnblogs.com/xiaotengyi/p/6393972.html
https://www.cnblogs.com/wpjzh/p/5999363.html

CentOS7安装FreeRadius+Daloradius web

  • 最近闲来无事,将家里面wifi认证改成”WPA Enterprise”,听起来是要牛逼一些,其实就是使用freeradius这个软件来实现的,开始之前你需要有一个你无线设备能随时访问到的机器,比如刷了LEDE系统的路由器来做,不过LEDE系统安装freeradius3是个软件包始终缺少依赖,就先放弃了,正好我还有一台阿里云的服务器可以来使用,下面是安装步骤:
  1. 安装MYSQL:参照 CentOS7通过yum方式安装mysql8
  2. 安装Nginx: 参照 Nginx源码安装脚本
  3. 安装PHP:参照 CENTOS7通过YUM方式安装PHP7
  4. 安装 Daloradius 和 freeradius
cd /yourWebSiteDir
git clone https://github.com/lirantal/daloradius.git
yum install -y freeradius-utils freeradius-mysql
pear install DB  ## 这个是为了解决Daloradius web依赖的
  1. 编辑”/etc/raddb/mods-available/sql”文件,需要修改以下几个参数
server = "localhost"  ##如果你的数据库不在本地也需要修改这个参数
driver = "rlm_sql_mysql"
dialect = "mysql"
login = "yourDbUsername"
password = "yourPassword"
radius_db = "yourRadiusDb"
  1. 将”/etc/raddb/mods-available/sql”这个文件在”/etc/raddb/mods-enabled”目录下做个软链接
    ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/sql
  2. 修改”/etc/raddb/sites-enabled/default”这个文件分别将authorize {}、accounting{}下的sql去掉注释,并且将file注释掉。
  3. 修改”/etc/raddb/clients.conf”这个文件如下:
#自定义的客户端
client anthorClientIpName {
    ipaddr        = 113.250.0.0/16  ## 这个表示认证的源ip,可以根据自己的情况来,我家用的ip就电信的这个IP段就限制了下
    secret        = yourpassword  ## 填写radius的profiles需要这个共享密钥
}
  1. 使用mysql客户端进入mysql中,创建用户,授权并且导入初始数据
mysql -uroot -p
mysql> CREATE DATABASE yourRadiusDb;
mysql> GRANT ALL ON yourRadiusDb.* TO 'yourDbUsername'@'localhost' IDENTIFIED BY 'yourPassword';
mysql> USE yourRadiusDb;
mysql> source /etc/raddb/mods-config/sql/main/mysql/schema.sql
mysql> source /yourWebSiteDir/daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
mysql> source /yourWebSiteDir/daloradius/contrib/db/mysql-daloradius.sql
  1. 修改”/opt/web/daloradius/library/daloradius.conf.php”这个文件的数据库链接信息:
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'yourDbUsername';
$configValues['CONFIG_DB_PASS'] = 'yourPassword';
$configValues['CONFIG_DB_NAME'] = 'yourRadiusDb';
  1. 启动服务,并设置开机启动
systemctl restart radiusd.service
systemctl enable radiusd.service
systemctrl restart mysqld.service 
systemctrl enable mysqld.service
systemctrl restart php-fpm 
systemctrl enable php-fpm
  1. 防火墙放行1812和1813端口,由于我这儿使用的阿里云的机器,还需要在阿里云的安全组放行这两个端口
firewall-cmd --zone=public --add-port=1812/udp --permanent 
firewall-cmd --zone=public --add-port=1813/udp --permanent 
firewall-cmd --reload
  1. 配置nginx,让 Daloradius 跑起来,这个就是搭建站点的方式,这儿不细说了。Daloradius的默认用户名是: administrator ;默认密码是: radius 。生产环境需要马上修改这个密码

最后由于权限问题,Daloradius读取不到radius的日志文件,需要改下”/var/logradius”这个目录和目录下面radius.log这个文件的权限

参考文章:
https://blog.csdn.net/zy517863543/article/details/78914150
https://www.cnblogs.com/cowerss/p/3507900.html

nginx配置访问密码增加安全性

为了防止网上这些人暴力破解我的博客后台,为此我给我的后台目录加了一层NGINX验证密码,增加破解的难度,下面是添加方法

  • 密码文件的生成
yum  -y install httpd-tools   # 生成密码可以使用 htpasswd,或者使用 openssl ,这儿我使用的是htpasswd
htpasswd -c /opt/nginx/conf/passwd/blog blog  # 生成一个blog的密码文件,用户名是blog,确定之后输入自己的密码
  • 在blog的conf中添加以下配置文件
location /wp-admin {
        auth_basic "Please input admin password"; 
        auth_basic_user_file /opt/nginx/conf/passwd/blog;
}

keepalived LVS DR模式搭建一个高可用的nginx负载

LVS作为第四层的负载均衡,效率比NGINX HA等方式搭建的负载均衡效率要高些,在企业中使用DR模式又比使用NAT模式的场景更广,下面就是一个简单的实验。

  • 环境准备
vip 172.16.50.65
Real server 1: 172.16.50.66
Real server 2: 172.16.50.67
Director Server: 172.16.50.10(MASTER)
Director Server: 172.16.50.11(BACKUP)
  • Director Server关闭selinux和防火墙功能 安装 keepalived 和 ipvsadm
  • 172.16.50.10上面keepalived.conf的配置文件为:
! Configuration File for keepalived

global_defs {
   notification_email {
    qq@qq.com
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens32
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass yourpassword
    }
    virtual_ipaddress {
        172.16.50.65
    }
}

virtual_server 172.16.50.65 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 172.16.50.66 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 2
        }
    }

    real_server 172.16.50.67 80 {
        weight 2
        TCP_CHECK {
            connect_port 80
            connect_timeout 2
        }
    }
}

  • 172.16.50.11上面keepalived.conf的配置文件为:
! Configuration File for keepalived

global_defs {
   notification_email {
    qq@qq.com
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens32
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass yourpassword
    }
    virtual_ipaddress {
        172.16.50.65
    }
}

virtual_server 172.16.50.65 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 172.16.50.66 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 2
        }
    }

    real_server 172.16.50.67 80 {
        weight 2
        TCP_CHECK {
            connect_port 80
            connect_timeout 2
        }
    }
}

  • 在Real server中配置NGINX VIP和添加路由
ifconfig lo:0 172.16.50.65 netmask 255.255.255.255 broadcast 172.16.50.65
route add -host 172.16.50.65  dev lo:0
  • 在Real server修改内核参数,控制Real server的响应模式
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2