存档2019

Lvs 集群实验

Lvs ipvsadm 命令
     规则 保存 恢复                     \\ 重要 可以直接在保存的文件上修改或删除 在导入
         # rpm -ql ipvsadm                      
         # ipvsadm -S > /etc/sysconfig/ipvsadm        \\ 保存 ipvs配置   定向保存 到 某一文件
         # cat /etc/sysconfig/ipvsadm                  \\ 查看 保存的文件
         # ipvsadm -C                                   \\ 清空规则
             # ipvsadm -ln                               \\ 查看规则  是否被清空
         # ipvsadm -R < /etc/sysconfig/ipvsadm            \\ 恢复 已保存的规则
     规则 修改
         # ipvsadm -E -t 192.168.10.20:80 -s sh               \\ -E 修改   修改了负载均衡调度算法
             # ipvsadm -ln
     规则 删除
         # ipvsadm -d -t 192.168.10.20:80 -r 172.16.20.10:80    \\ -d删除 真实服务器
             # ipvsadm -ln
         # ipvsadm -D -t 192.168.10.20:80                         \\ -D删除 集群服务器
             # ipvsadm -ln                   
     规则 查看
         # ipvsadm -lc                    \\ -c  查看 当前的连接
         # ipvsadm -lc --stats             \\ --stats 查看 统计数据   处理了多少连接  入站包个数 出 入站字节数 出
         # ipvsadm -lc --rate               \\ --rate 查看 速率  入每秒的包个数 出 入每秒的字节数 出
                                             \\ --exact 精确值 不进行单位换算
Lvs-nat 模式 负载均衡 实验
     三台服务器,一台作为 director,两台作为 real server,director 有一个外网网卡(192.168.10.20) 
     和一个内网ip(172.16.20.10),两个 real server 上只有内网 ip (172.16.20.11) 和 (172.16.20.12)
     并且需要把两个 real server 的内网网关设置为 director 的内网 ip(172.16.20.10)
     # yum install ipvsadm
     # cat /proc/sys/net/ipv4/ip_forward               \\ 可以查看ip_forward虚拟路由器 状态
     # vim /etc/sysctl.conf                             \\ 内核的运行参数
         net.ipv4.ip_forward = 1                         \\ 可实现ip转发
     # sysctl -p                                          \\ 重新加载 sysctl.conf 配置文件
     # cat /proc/sys/net/ipv4/ip_forward
     # ipvsadm -A -t 192.168.10.20:80 -s rr                  \\ -A 定义规则 -t tcp的集群服务  本机地址   -s 类型 默认为wlc
     # ipvsadm -ln                                            \\ -l 查看ipvsadm设置的规则 -n 不反解
     # ipvsadm -a -t 192.168.10.20:80 -r 172.16.20.11 -m       \\ -a 添加 真实服务器 本机地址    -r 真实服务器地址  
     # ipvsadm -a -t 192.168.10.20:80 -r 172.16.20.12 -m        \\ -m为nat类型  -i为tun类型    -g为dr类型     默认为 dr
     # ipvsadm -ln
     如果配置https服务 需在real sever 上配置  都要提供一个私钥和同一个证书  实验未做
lvs-dr 模式 负载均衡 实验
     Director        eth33 192.168.10.20 vip eth33:0 192.168.10.30
     Real server1    eth33 192.168.10.11 vip lo:0 192.168.10.30
     Real server2    eth33 192.168.10.12 vip lo:0 192.168.10.30
     # ifconfig ens33:0 192.168.10.30/32 broadcast 192.168.10.30  \\ 指明广播地址 只给自己 想要永久生效 需修改配置文件
     # route add -host 192.168.10.30 dev ens33:0                   \\ 添加路由 -host:目标地址是一个主机 通过 dev ens33:0的接口
         # route del -host 192.168.10.30                            \\ 删除
     # yum install ipvsadm
     # ipvsadm -A -t 192.168.10.30:80 -s rr
     # ipvsadm -a -t 192.168.10.30:80 -r 192.168.10.11 -g
     # ipvsadm -a -t 192.168.10.30:80 -r 192.168.10.12 -g
     # ipvsadm -ln
     real server                                                  \\ 配置内核参数
         # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore         \\ all 所有接口
             # echo 1 > /proc/sys/net/ipv4/conf/eth33/arp_ignore    \\ 确保万无一失 也可以加 配置eth33
         # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
             # echo 2 > /proc/sys/net/ipv4/conf/eth33/arp_announce
         # ifconfig lo:0 192.168.10.30/32 broadcast 192.168.10.30     \\ 配置vip地址
         # route add -host 192.168.10.30 dev lo:0
             # route del -host 192.168.10.30                            \\ 删除

LNMP 编译安装



LNMP 编译安装


nginx 编译安装
    # yum install openssl openssl-devel gcc gcc-c++ pcre pcre-devel
    # groupadd www 
    # useradd -g www www -s /sbin/nologin
    # tar zxf nginx-1.10.0.tar.gz
    # cd nginx-1.10.0
    # ./configure --prefix=/usr/local/nginx --user=www --group=www --pid-path=/run/nginx.pid --with-http_ssl_module --with-http_stub_status_module --with-http_v2_module --with-stream --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-file-aio --with-pcre
    # ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-http_v2_module --with-stream --with-http_gzip_static_module --with-file-aio --with-http_stub_status_module --with-pcre=../pcre-8.38  \\ GS代码
    # make && make install
    # /usr/local/nginx/sbin/nginx              \\ 启动
    # ss -tnl                                   \\ 80端口被监控 注意 防火墙放行 关闭selinux
    # /usr/local/nginx/sbin/nginx -V             \\ 查看nginx 版本 及 编译参数
    # /usr/local/nginx/sbin/nginx -s reload       \\ 重新加载
    # /usr/local/nginx/sbin/nginx -s stop          \\ 停止
    # cp /data/soft/nginx /etc/init.d/nginx         \\ 复制启动脚本
    # chmod +x /etc/init.d/nginx                     \\ 添加执行权限  注意pid路径是否与主配置文件路径相同...添加启动脚本 nginx
    # chkconfig --add /etc/init.d/nginx                \\ 添加到service 管理 
    # chkconfig nginx on                                \\ 添加开启启动
    # service nginx start                                \\ 启动
    # systemctl restart nginx                             \\ 重启
    # ss -tnl                                              \\ 80端口被监听


php 编译安装
    # tar xzf php-7.3.4.tar
    # yum install epel*
    # yum install libjpeg-devel libpng-devel freetype-devel libicu-devel openldap-devel openssl-devel libxml2-devel bzip2-devel libmcrypt-devel libmcrypt php-mcrypt mcrypt curl curl-devel php-ldap gcc gcc-c++
    # ./configure --prefix=/usr/local/php --enable-fpm --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --enable-sockets --enable-opcache --enable-zip --with-zlib --enable-bcmath --with-libxml-dir --with-gd --with-mysqli --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear --with-curl --with-openssl --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-gettext
    # make -j4                    \\ 快速 安装  编译7.3.11的时候会报错 mcrypt 忽略即可
    # make install                 \\ --disable-fileinfo 1G以下内存要使用此命令编译 不然要报错

    php 5.6及以下

        # cp /data/soft/php-5.6.16/php.ini-production /etc/php.ini
        # cp /data/soft/php-5.6.16/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 
        # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
        # vim /usr/local/nginx/conf/nginx.conf     \\ 在nginx 指向 php
            location ~ \.php$ {
                root           /var/www;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi_params;
            }
        # vim /usr/local/nginx/conf/fastcgi_params
            fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;    \\ 主要修改这项
        # /usr/local/nginx/sbin/nginx -s reload
        # vim /data/www/index.php
            <?php  
                phpinfo();  
            ?>
        # chmod +x /etc/init.d/php-fpm
        # chkconfig --add php-fpm
        # service php-fpm start
        # chkconfig php-fpm on
        # ss -tnl                                          \\ 127.0.0.1:9000端口被监听


    php 7.3及以上

        # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
        # cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
        # vim php-fpm.conf 
            pid = /run/php-fpm.pid                \\ 指定pid文件位置
        # vim /usr/local/nginx/conf/nginx.conf     \\ 在nginx 指向 php
            location ~ \.php$ {
                root           /var/www;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi_params;
            }
        # vim /usr/local/nginx/conf/fastcgi_params
            fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;    \\ 主要修改这项
        # /usr/local/nginx/sbin/nginx -s reload                                      \\ 重新加载
        # vim /var/www/index.php
            <?php  
                phpinfo();  
            ?>
        # /usr/local/php/sbin/php-fpm               \\ 启动 如果提示curl.so等不能加载 删除/etc/php.d/*.ini即可
        # kill -INT `cat /run/php-fpm.pid`           \\ 关闭 没有大用处
        # kill -USR2 `cat /run/php-fpm.pid`           \\ 重启 没有大用处
        # cp /data/soft/php-fpm /etc/init.d/php-fpm    \\ 复制启动脚本  ... ... 添加启动脚本 php-fpm
        # chmod +x /etc/init.d/php-fpm
        # chkconfig --add php-fpm
        # service php-fpm start
        # chkconfig php-fpm on
        # ss -tnl                                          \\ 127.0.0.1:9000端口被监听


Mariadb 编译安装                  \\ 已测试 Mysql 5.6.47  Mariadb 5.5     Mariadb 10.4.10 会报错先看注释01解决
    # rpm -qa | grep mariadb
    # rpm -qa | grep mysql
    # yum remove mariadb-libs.x86_64
    # yum install openssl-devel libxml2-devel bzip2-devel libmcrypt-devel libmcrypt php-mcrypt mcrypt
    # yum install libarchive-devel boost boost-devel lsof wget gcc gcc-c++ make cmake perl kernel-headers kernel-devel pcre-devel
    # yum install libaio libaio-devel bison bison-devel zlib-devel openssl openssl-devel ncurses ncurses-devel libcurl-devel
    # tar zxf mysql-5.6.47.tar.gz
    # groupadd mysql
    # useradd -g mysql mysql -s /sbin/nologin
    # mkdir -p /data/mysqldb/{3306,innodb,mysql-bin,logs,run,relay-bin}
    # chown -R mysql:mysql /data/mysqldb
    # cd mysql-5.6.47
    # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/data/mysqldb/run/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysqldb
    # make
    # make install
    # chown -R root:mysql /usr/local/mysql
    # mkdir /etc/mysql
    # rz                                     \\ 复制进去my.cnf
    # vim /etc/profile.d/mysql.sh
        export PATH=/usr/local/mysql/bin:$PATH
    # source /etc/profile
    # /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb/3306
    # cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
    # chkconfig --add mysqld
    # chkconfig mysqld on
    # systemctl restart mysqld
    # ln -s /data/mysqldb/run/mysql.sock /tmp/mysql.sock    \\ 由于配置文件修改了mysql.sock位置 安全初始化 会提示找不路径 方法一
        # vim /usr/local/mysql/bin/mysql_secure_installation \\ 安全初始化 修改了mysql.sock路径 会提示找不到路径 需要修改此文件 方法二
            write_file($config,                               \\ 此为方法二  但是 有的数据库版本 没有此行语句
                ...
                ...
                "connect-expired-password",                  \\ 此项去掉 ")" 改成","
                "socket=/data/mysqldb/run/mysql.sock");       \\ 大概在157行 插入此语句即可
            }
    # mysql                \\ 如果提示找不到mysql.sock 可以用-S指明路径 # mysql -S /data/mysqldb/run/mysql.sock
        mysql> use mysql
        mysql> select user,host,password from user;
    # /usr/local/mysql/bin/mysql_secure_installation \\ 设置密码y 删除匿名用户y 禁止root远程登录n 删除测试数据库y 重载授权表y


 ❷ Mariadb 编译安装  旧安装方法
    # rpm -qa | grep mariadb
    # rpm -qa | grep mysql
    # yum remove mariadb-libs.x86_64
    # yum install libaio libaio-devel bison bison-devel zlib-devel openssl openssl-devel ncurses ncurses-devel libcurl-devel 
    # yum install libarchive-devel boost boost-devel lsof wget gcc gcc-c++ make cmake perl kernel-headers kernel-devel pcre-devel
    # groupadd mysql
    # useradd -g mysql mysql -s /sbin/nologin
    # tar zxf mariadb-5.5.63.tar.gz
    # cd mariadb-5.5.63
    # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DENABLE_DOWNLOADS=1 -DEXTRA_CHARSETS=all -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_DATADIR=/data/mysql/ -DMYSQL_USER=mysql -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DMYSQL_MAINTAINER_MODE=0
        \\ mariadb 5.5 使用上面代码进行编译
    # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
        \\ mariadb 10.4 使用上面代码进行编译
    # make && make install
    # cd /usr/local/mysql
    # chown -R root:mysql ./*  
    # mkdir -p /data/mysql/mysql  \\ 多创建一个mysql目录是 主数据库 如果后创建 属主是root 执行./scripts/mysql_...命令会报权限错误 
    # chown -R mysql:mysql /data/mysql
    # ./scripts/mysql_install_db --user mysql --datadir=/data/mysql   \\ 创建主数据库等文件 一定要在/usr/local/mysql/目录下执行
    # cd /usr/local/mysql/support-files
    # cp my-large.cnf /etc/my.cnf        \\ 10.4版本   # cp wsrep.cnf /etc/my.cnf 主配置文件最好放在/etc目录
    # vim my.cnf
        thread_concurrency = 8             \\ cup核心数乘以2
        datadir = /data/mysql               \\ 加 数据库目录
        innodb_file_per_table = on           \\ 加 独立表空间开启
        skip_name_resolve = on                \\ 加 跳过名称反解
    # ./mysql.server start                     \\ 如果启动不起来 注意 mysql.server 中的数据库位置是否与配置文件位置相同
    # cp mysql.server /etc/rc.d/init.d/mysqld
    # chkconfig --add mysqld
    # chkconfig --list mysqld
    # chkconfig mysqld on
    # service mysqld restart
    # vim /etc/profile.d/mysql.sh                \\ 建立环境变量 指向mysql 才可以用mysql命令进入数据库
        export PATH=/usr/local/mysql/bin:$PATH
    # source /etc/profile                         \\ 重新加载环境变量 使之生效
    # mysql
        use mysql                                    \\ 使用 mysql 数据库
        select user,host,password from user;          \\ 查询 user表中 这些字段 user表中保存 用户名密码
    # /usr/local/mysql/bin/mysql_secure_installation   \\ 安全初始化 需要在mysql运行时 管理员现在密码 
      \\ 要不要设置管理员密码 要不要删除匿名用户 要不要禁止管理员远程登录 要不要删除测试数据库 要不要授权表重载一下


注:
    ❶. 如果提示内存不足 需要创建交换分区
        # dd if=/dev/zero of=/swapfile bs=8M count=256  \\ 创建 swap分区为2G 内存不够用时可用此分区做为内存使用 
                                                         \\ 在编译10.4的时候内存低于1G会报错 要创建swap分区
        # mkswap /swapfile       \\ 格式化交换分区 bs=bytes:同时设置读入/输出的块大小为bytes个字节 
                                  \\ count=blocks:仅拷贝blocks个块,块大小等于ibs/bs指定的字节数
        # swapon /swapfile         \\ 启用/挂载 交换分区 # swapoff /swapfile 关闭 交换分区后可用rm删除
        # swapon -s                 \\ 查看
        # vim /etc/fstab             \\ 开机自动 挂载 可使用 df -h 挂载的盘符
            /swapfile    swap     swap    defaults        0 0
    ❷. 如果安装其他软件后 mysql启动不起来,查看是否安装了 mariadb-libs 此程序会在/etc/下生成my.cnf 耽误正常启动,删除即可.
       可使用 find / -name my.cnf* 或者  lsof -c mysqld|grep sock$ 命令查询,如zabbix等软件.
    ❸. 使用 Zabbix 连接数据库时 最好把mysql.sock目录设置在/var/lib/mysql/mysql.sock 可以在my.cnf中修改.要给此目录777权限
       及mysql的属组权限,否则mysql启动不了.最好使用 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock建立软连接.
       否则安全初始化会提示找不到/tmp/mysql.sock文件,注意权限问题.
        [client]
          socket = /var/lib/mysql/mysql.sock
        [mysqld]
          socket = /var/lib/mysql/mysql.sock
    ❹. php测试用连接数据库                     \\ 需要端口 3306
        <?php
            $servername = "127.0.0.1";
            $username = "root";                 \\ 在Mariadb10.4.10中 不能使用root 需要创建测试账户 LNMP的注解01
            $password = "123456";

            $conn = new mysqli($servername, $username, $password);
            if ($conn->connect_error) {
                die("连接失败: " . $conn->connect_error);
            }

            $sql = "CREATE DATABASE teoDB";
            if ($conn->query($sql) === TRUE) {
                echo "数据库创建成功";
            } else {
                echo "Error creating database: " . $conn->error;
            }

            $conn->close();
        ?>
    ❺. 安装wordpress 5.2.4以上的版本 页面排版错误需修改nginx配置文件location *.css 删除
    ❻. 安装wordpress 5.2.4以上的版本 安装不了主题提示ftp 需要修改WordPress权限为www 及 wp-content目录777权限