先配置好epel源

  1. [root@node3 ~]#yum install epel-release -y

关闭防火墙和selinux

  1. [root@node3 ~]#iptables -F
  2. [root@node3 ~]#getenforce
  3. Disabled

安装相应的包

  1. [root@node3 ~]#yum install cobbler http tftp dhcp -y

启动httpd  cobblerd tftp

  1. [root@node3 ~]#systemctl start httpd cobblerd tftp

使用cobbler  check 检测是否有错,根据提示一一修改

  1. [root@node3 ~]#cobbler check
  2. The following are potential configuration items that you may want to fix:
  3.  
  4. 1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
  5. 2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
  6. 3 : change 'disable' to 'no' in /etc/xinetd.d/tftp
  7. 4 : Some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
  8. 5 : enable and start rsyncd.service with systemctl
  9. 6 : debmirror package is not installed, it will be required to manage debian deployments and repositories
  10. 7 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
  11. 8 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
  12.  
  13. Restart cobblerd and then run 'cobbler sync' to apply changes.

修改/etc/cobbler/settings中的server值,改成cobbler服务器的IP地址

  1. [root@node3 ~]#vim /etc/cobbler/settings
  2. server: 192.168.37.33 #:注意冒号后面有空格!

修改/etc/cobbler/settings中'next_server'的值,改成为提供PXE服务器的IP地址

  1. [root@node3 ~]#vim /etc/cobbler/settings
  2. next_server: 192.168.37.33

第3项在centos7中可以不用理会

执行cobbler get-loaders这个命令

  1. [root@node3 ~]#cobbler get-loaders

第5项在centos7中可忽略

第6项可忽略

生成密码来取代默认密码

  1. [root@node3 ~]#openssl passwd -1 -salt 'cobbler' '12345'
  2. $1$cobbler$yheL/tcotyNfj2/ieNTcF.
  3.  
  4. [root@node3 ~]#vim /etc/cobbler/settings
  5. default_password_crypted: "$1$cobbler$yheL/tcotyNfj2/ieNTcF."

另外,附加一项,将/etc/cobbler/settings中manage_dhcp这个值设置为1

  1. [root@node3 ~]#vim /etc/cobbler/settings
    manage_dhcp: 1

重启cobbler

  1. [root@node3 ~]#systemctl restart cobblerd

修改cobbler的dhcp模板

  1. [root@node3 ~]#vim /etc/cobbler/dhcp.template
  2. subnet 192.168.37.0 netmask 255.255.255.0 {
  3. option routers 192.168.37.2;
  4. option domain-name-servers 192.168.37.2;
  5. option subnet-mask 255.255.255.0;
  6. range dynamic-bootp 192.168.37.100 192.168.37.254;
  7. default-lease-time 21600;
  8. max-lease-time 43200;
  9. next-server $next_server;

同步

  1. [root@node3 ~]#cobbler sync

重启dhcp服务

  1. [root@node3 ~]#systemctl restart dhcpd

挂载光盘,并导入镜像

  1. [root@node3 cd]#mount /dev/sr0 /misc/cd
  2. [root@node3 cd]#cobbler import --path=/misc/cd --name=CentOS7.6-x86_64 --arch=x86_64
  3.  
  4. #: --path 镜像路径
  5. --name 为安装源起一个名字
  6. --arch 指定安装源是32 还是64

查看镜像列表

  1. [root@node3 cd]#cobbler distro list
  2. CentOS7.6-x86_64

制作kickstart文件(建议用system-config-kickstarts生成)

将制作好的kickstart文件拷贝到/var/lib/cobbler/kickstarts/目录下

  1. [root@node3 ~]#cp /root/ks.cfg /var/lib/cobbler/kickstarts/

添加到profile里面,关联kickstart文件

  1. [root@node3 ~]#cobbler profile edit --name CentOS7.6-x86_64 --distro=CentOS7.6-x86_64 --kickstart=/var/lib/cobbler/kickstart/ks.cfg

修改ks.cfg文件

  1. [root@node3 ~]#vim /var/lib/cobbler/kickstarts/ks.cfg

然后同步(注意每次修改此文件都必须同步一下)

  1. [root@node3 ~]#cobbler sync

到此,就可以安装系统了。

接下来我们开始二进制安装mariadb

解包

  1. [root@master-mariadb ~]# tar xf mariadb-10.2.25-linux-x86_64.tar.gz -C /usr/local/

创建软连接

  1. [root@master-mariadb local]# ln -sv mariadb-10.2.25-linux-x86_64/ mysql

创建mysql用户

  1. [root@master-mariadb local]# useradd -r -s /sbin/nologin mysql

进到/usr/local/mysql目录,设置目录权限

  1. [root@master-mariadb mysql]# chown -R mysql.mysql .

初始化安装

  1. [root@master-mariadb mysql]# scripts/mysql_install_db --datadir=/data/mysql --user=mysql

遇到问题

解决

  1. [root@master-mariadb mysql]# yum install libaio -y

再次初始化

  1. [root@master-mariadb mysql]# scripts/mysql_install_db --datadir=/data/mysql --user=mysql

添加环境变量

  1. [root@master-mariadb mysql]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
  2. [root@master-mariadb mysql]# . /etc/profile.d/mysql.sh

将配置文件拷贝到/etc/目录,并准备启动文件

  1. [root@master-mariadb mysql]# cp support-files/my-huge.cnf /etc/my.cnf -b
  2. cp: overwrite ‘/etc/my.cnf’? y
  3. [root@master-mariadb mysql]# cp support-files/mysql.server /etc/init.d/mysqld
    [root@master-mariadb etc]# chkconfig --add mysqld

修改配置文件

  1. [root@master-mariadb mysql]# vim /etc/my.cnf
  2.  
  3. [mysqld]
  4. port = 3306
  5. socket = /tmp/mysql.sock
  6. datadir=/data/mysql
  7. innodb_file_per_table=ON
  8. skip_name_resolve=ON
  9. log-bin=master-bin

启动服务

  1. [root@master-mariadb etc]# service mysqld start

接下来编译httpd和PHP

准备依赖的包

  1. [root@lam ~]# yum install gcc prce-devel openssl-devel expat-devel -y

解压httpd以及apr

  1. [root@lam ~]# for i in *.bz2;do tar xf $i;done

出错

解决

  1. [root@lam ~]# yum install bzip2 -y

继续解压

  1. [root@lam ~]# for i in *.bz2;do tar xf $i;done

将apr和apr-uril移动到srclib目录,一起编译

  1. [root@lam ~]# mv apr-1.7.0 httpd-2.4.39/srclib/apr
  2. [root@lam ~]# mv apr-util-1.6.1 httpd-2.4.39/srclib/apr-util

进到httpd目录编译安装

  1. [root@lam ~]# cd httpd-2.4.39
  2. [root@lam httpd-2.4.39]# ./configure --prefix=/app/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
  3. [root@lam httpd-2.4.39]# make -j 4 && make install

创建Apache用户,修改环境变量

  1. [root@lam httpd-2.4.39]# useradd -r -s /sbin/nologin apache
  2. [root@lam httpd24]# echo 'PATH=/app/httpd24/bin:$PATH' > /etc/profile.d/httpd.sh
  3. [root@lam httpd24]# . /etc/profile.d/httpd.sh

修改配置文件


  1. #
  2. User apache
  3. Group apache

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #:取消注释,使其支持fcgi协议

    <IfModule dir_module>
        DirectoryIndex  index.php index.html
    </IfModule>      #:添加index.php使其优先打开PHP页面

    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps #: 在尾部添加这两行,使其可以解析PHP页面

    ProxyPassMatch "^/(.*\.php)$" "fcgi://127.0.0.1:9000/app/httpd24/htdocs/" #:如有虚拟主机,可将这句话添加到虚拟主机配置段

启动服务

  1. [root@lam httpd24]# apachectl start

编译安装php

安装所依赖的包

  1. [root@lam yum.repos.d]# yum install libxml2-devel bzip2-devel libmcrypt-devel -y

解压PHP包,并进入PHP编译安装

  1. [root@lam ~]# tar xf php-7.3.7.tar.xz
    [root@lam ~]# cd php-7.3.7
    [root@lam php-7.3.7]# ./configure --prefix=/app/php --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo
    [root@lam php-7.3.7]# make -j 4 && make install

在解压的目录下拷贝配置文件和启动脚本

  1. [root@lam php-7.3.7]# cp php.ini-production /etc/php.ini
  2. [root@lam php-7.3.7]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  3. [root@lam php-7.3.7]# chmod +x /etc/init.d/php-fpm

将PHP编译的配置文件改名

  1. [root@lam etc]# cd /app/php/etc/
  2. [root@lam etc]# mv php-fpm.conf.default php-fpm.conf
  3. [root@lam etc]# cd /app/php/etc/php-fpm.d/
  4. [root@lam php-fpm.d]# mv www.conf.default www.conf

修改www.conf配置文件

  1. [root@lam php-fpm.d]# vim www.conf
  2. user = apache
  3. group = apache

启动

  1. [root@lam php-fpm.d]# service php-fpm start

现在LAMP已经搭建好了  ,我们可以写一个测试页,测试一下是否连接正常

  1. [root@lam php-fpm.d]# vim /app/httpd24/htdocs/index.php
  2.  
  3. <?php
  4. $mysqli=new mysqli("192.168.37.21","maxuebin","12345");
  5. if(mysqli_connect_errno()){
  6. echo "连接数据库失败!";
  7. $mysqli=null;
  8. exit;
  9. }
  10. echo "连接数据库成功!";
  11. $mysqli->close();
  12. ?>

配置NFS服务器

安装所需要的包

  1. [root@nfs ~]# yum install rpcbind nfs-utils -y

在/etc/exports.d下新建一个文件,编辑文件(注意要以。exports结尾)

  1. [root@nfs ~]# vim /etc/exports.d/httpd.exports
  2. /data/http 192.168.37.22(rw,async,all_squash,anonuid=997,anongid=995)

    #: rw 可读可写
      async 异步同步
      all_squash  将所有在此文件夹建文件的人,全部映射为Apache
      anonuid  设置映射人的UID,此文是映射的Apache
      anongid  设置映射人的GID,此文是映射的Apache

    [root@nfs ~]# id apache
    uid=997(apache) gid=995(apache) groups=995(apache)

启动服务

  1. [root@nfs ~]# systemctl start nfs

    [root@nfs ~]# showmount --exports localhost #:查看本机可挂载的目录
    Export list for localhost:
    /data/http 192.168.37.22
    [root@nfs ~]# exportfs -v #: 查看挂载的属性
    /data/http     192.168.37.22(async,wdelay,hide,no_subtree_check,anonuid=997,anongid=995,sec=sys,rw,secure,root_squash,all_squash)

创建文件,并设置权限

  1. [root@nfs ~]# mkdir /data/http
    [root@nfs ~]# setfacl -Rm u:apache:rwx /data/http/

在lam服务器挂载

  1. [root@lam ~]# mkdir /data/wordpress
  2.  
  3. [root@lam ~]# showmount --exports 192.168.37.23
  4. Export list for 192.168.37.23:
  5. /data/http 192.168.37.22
  6.  
  7. [root@lam ~]# mount 192.168.37.23:/data/http /data/wordpress

编辑lam服务器的主配置文件,创建虚拟主机

  1. [root@lam wordpress]# vim /app/httpd24/conf/httpd.conf
  2. Include conf/extra/httpd-vhosts.conf #:将这一行注释取消,我们把虚拟机单独放一个位置
    ProxypassMatch "^/(.*\.php)$" "fcgi://127.0.0.1:9000/app/httpd24/htdocs/" #:删除这一行,我们添加到虚拟主机里面
    [root@lam wordpress]# vim /app/httpd24/conf/extra/httpd-vhosts.conf
    <VirtualHost *:80>
    DocumentRoot /data/wordpress
    ServerName blog.magedu.com
    <Directory /data/wordpress>
    require all granted
    <Directory>
    ProxypassMatch "^/(.*\.php)$" "fcgi://127.0.0.1:9000/data/wordpress/"
    </VirtualHost>

重启apache 服务,并将测试文件放到/data/http下,然后测试

  1. [root@lam wordpress]# apachectl restart
  2.  
  3. [root@nfs http]# vim /data/http/index.php
  4.  
  5. <?php
  6. $mysqli=new mysqli("192.168.37.21","maxuebin","12345");
  7. if(mysqli_connect_errno()){
  8. echo "连接数据库失败!";
  9. $mysqli=null;
  10. exit;
  11. }
  12. echo "连接数据库成功!";
  13. $mysqli->close();
  14. ?>

在lam服务器上安装基于MySQL的虚拟用户的FTP

下载pam_mysql,并安装依赖包,在lam服务器上编译安装

  1. [root@lam ~]# yum install gcc gcc-c++ pam-devel mariadb-devel
    [root@lam ~]# tar xf pam_mysql-0.7RC1.tar.gz
    [root@lam ~]# cd pam_mysql-0.7RC1
    [root@lam pam_mysql-0.7RC1]# ./configure  --with-pam-mods-dir=/lib64/security/或者./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr
    #: 我们用的第一条,因为mysql和我没在同一台机器
    [root@lam pam_mysql-0.7RC1]# make && make install

在数据库服务器创建虚拟库表和虚拟账号

  1. [root@master-mariadb ~]# mysql
  2. MariaDB [(none)]> create database vsftpd; #:创建库
  3. MariaDB [(none)]> use vsftpd; #使用库
  4. MariaDB [vsftpd]> create table users(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name VARCHAR(50) BINARY NOT NULL,password VARCHAR(48) BINARY NOT NULL); #:创建表
  5. MariaDB [vsftpd]> INSERT INTO USERS(name,password) values ("ftpuser1",password('centos')"); #:添加用户
  6. MariaDB [vsftpd]> INSERT INTO users(name,password) values ("ftpuser2",password('centos')"); #:添加用户
    MariaDB [vsftpd]> grant all on vsftpd.* to 'vsftp'@'192.168.37.%' identified by 'centos'; #:授权一个用户可以管理vsftpd库

在lam服务器上安装tftpd

  1. [root@lam pam_mysql-0.7RC1]# yum install vsftpd -y

在lam服务器上配置vsftpd服务

  1. [root@lam pam_mysql-0.7RC1]# vim /etc/pam.d/vsftpd.mysql
  2. auth required pam_mysql.so user=vsftp passwd=centos host=192.168.37.21 db=vsftpd table=users usercolumn=ftpuser1 passwdcolumn=centos crypt=2
  3. account required pam_mysql.so user=vsftp passwd=centos host=192.168.37.21 db=vsftpd table=users usercolumn=ftpuser2 passwdcolumn=centos crypt=2
  4.  
  5. crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函数加密,3表示md5加密,4表示sha1加密
  6.  
  7. auth 表示认证
  8. account 验证账号密码正常使用
  9. required 表示认证要通过
  10. pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝对路径;后面为给此模块传递的参数
  11. user=vsftpd为登录mysql的用户
  12. passwd=magedu 登录mysql的的密码
  13. host=mysqlserver mysql服务器的主机名或ip地址
  14. db=vsftpd 指定连接msyql的数据库名称
  15. table=users 指定连接数据库中的表名
  16. usercolumn=name 当做用户名的字段
  17. passwdcolumn=password 当做用户名字段的密码
  18. crypt=2 密码的加密方式为mysql password()函数加密

建立虚拟用户映射的系统用户及对应的目录

  1. [root@lam pam_mysql-0.7RC1]# useradd -s /sbin/nologin -d /var/ftproot vuser
  2. [root@lam pam_mysql-0.7RC1]# chmod 555 /var/ftproot #:根目录不可以有写权限,去除根目录的写权限,
  3. [root@lam pam_mysql-0.7RC1]# mkdir /var/ftproot/upload
  4. [root@lam pam_mysql-0.7RC1]# setfacl -m u:vuser:rwx /var/ftproot/upload/

修改vsftpd的配置文件

  1. [root@lam pam_mysql-0.7RC1]# vim /etc/vsftpd/vsftpd.conf
  2. anonymous_enable=YES
  3. pam_service_name=vsftpd.mysql #修改此项,原系统用户无法登陆
  4. guest_enable=YES
  5. guest_username=vuser #:添加这两项

在ftp服务器上配置虚拟用户具备不同的访问权限(基于nfs存储)

配置vsftpd为虚拟用户使用配置文件目录

  1. [root@lam pam_mysql-0.7RC1]# vim /etc/vsftpd/vsftpd.conf
  2. user_config_dir=/etc/vsftpd/vusers_config

创建所需的目录,并为虚拟用户提供配置文件

  1. [root@lam pam_mysql-0.7RC1]# mkdir /etc/vsftpd/vusers_config
  2. [root@lam pam_mysql-0.7RC1]# cd /etc/vsftpd/vusers_config
  3. [root@lam vusers_config]# touch ftpuser1 ftpuser2

配置虚拟用户访问权限

  1. [root@lam vusers_config]# vim /etc/vsftpd/vusers_config/ftpuser1
  2. anon_upload_enable=YES # 匿名上传,注意文件权限
  3. anon_mkdir_write_enable=YES #:匿名建目录
  4. anon_other_write_enable=YES #:可修改和删除上传的文件
    anon_world_readable_only=NO  #: (默认为yes)只能下载全部读的文件
    local_root=/data/ftpuser1 #:指定目录
    虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。如要让用户wang具有上传文件的权限,可修改/etc/vsftpd/vusers_config/wang文件,在里面添加如下选项并设置为YES即可,只读则设为NO

在NFS服务器先创建 跟lam服务器vuser相同的UID和GID

  1. [root@nfs vsftpd]# groupadd -g 1001 vuser
  2. [root@nfs vsftpd]# useradd -r -u 1001 -g 1001 vuser

在NFS服务器将数据目录共享出去并修改数据目录的权限

  1. [root@nfs vsftpd]# vim /etc/exports.d/vsftpd.exports
  2. /data/vsftp 192.168.37.22(rw,async,all_squash,anonuid=1001,anongid=1001)
    [root@nfs vsftpd]# chown vuser.vuser /data/vsftp/
    [root@nfs vsftpd]# chmod 555 /data/vsftp/ #因为vsftp的根不允许有写权限 ,必须修改权限
    [root@nfs vsftpd]# mkdir /data/vsftp/source #然后在创建一个目录,方便用户上传下载,
    [root@nfs vsftpd]# chown vuser.vuser /data/vsftp/source/ # 把这个目录的属主属组也要改成这个
    [root@nfs vsftpd]# setfacl -m u:vuser:rwx /data/vsftp/source/ #设置成rwx权限,才可以上传和下载

然后重启

  1. [root@nfs vsftpd]# systemctl restart nfs

在lam服务器去挂载共享的这个目录

  1. [root@lam vsftp]# mount 192.168.37.23:/data/vsftp /data/vsftp

然后修改用户的配置文件

  1. [root@lam vsftp]# vim /etc/vsftpd/vusers_config/ftpuser2
  2. download_enable=YES
  3. anon_upload_enable=YES
  4. anon_mkdir_write_enable=YES
  5. anon_other_write_enable=YES
  6. anon_world_readable_only=NO
  7. local_root=/data/vsftp

如果想让匿名用户也访问这个文件,可以改变ftp用户的家目录为/data/vsftp,并编辑主配置文件添加一项

  1. [root@lam vsftp]# usermod -d /data/vsftp/ -U ftp
    [root@lam source]# vim /etc/vsftpd/vsftpd.conf
    anon_root=/data/vsftp

这样就可以了

配置mariadb的半同步复制

源码编译,跟前面一样

编辑master主服务器的配置文件并重启服务(如果是编译安装的记得查看配置文件中有没有server-id 和log-bin)

  1. [root@master-mariadb ~]# vim /etc/my.cnf
  2.  
  3. [mysqld]
  4. port = 3306
  5. socket = /tmp/mysql.sock
  6. datadir=/data/mysql #指定数据库目录
  7. innodb_file_per_table=ON #存储为单张表
  8. skip_name_resolve=ON  # 跳过域名解析
  9. log-bin=master-bin #开启二进制日志
  10. server_id=1 #设置一个全局唯一的serverID
    [root@master-mariadb ~]# service mysqld restart

在master主服务器上安装插件

  1. MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_master #:安装插件 SONAME 'semisync_master.so';
  2. Query OK, 0 rows affected (0.02 sec)
  3.  
  4. MariaDB [(none)]> set global rpl_semi_sync_master_enabled=on; #开启插件
  5. Query OK, 0 rows affected (0.00 sec)
  6.  
  7. MariaDB [(none)]> show master status; #查看二进制日志的位置
    MariaDB [(none)]> grant replication slave on *.* to "mysql"@'192.168.37.%' identified by 'centos'; #:创建一个有复制权限的账号
    MariaDB [(none)]> flush privileges; #刷新权限

做一个完全备份,将文件传给slave-master服务器

  1. [root@master-mariadb ~]# mysqldump --all-databases -F --single-transaction --master-data=1 >all.sql
  2.  
  3. [root@master-mariadb ~]# scp all.sql 192.168.37.24:/root/

编辑修改slave-mariadb的配置文件并启动服务(如果是编译安装的记得查看配置文件中有没有server-id 和log-bin)

  1. [root@slave-master mysql]# vim /etc/my.cnf
  2. [mysqld]
  3. port = 3306
  4. socket = /tmp/mysql.sock
  5. datadir=/data/mysql
  6. relay_log=relay-bin  #开启中继日志
  7. server_id=2
  8. innodb_file_per_table=ON
  9. skip_name_resolve=ON

    [root@slave-master mysql]# service mysqld restart

在slave-master上修改备份的文件并将完全备份导入

  1. [root@slave-master ~]# vim all.sql
  2. CHANGE MASTER TO master_host='192.168.37.21',master_user='repluser',master_password='centos',MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=385;
    [root@slave-master ~]# mysql < all.sql  #将完全备份导入到slave服务器

进去到slave-master的mysql服务

  1. [root@slave-master ~]# mysql
  2. MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
  3. Query OK, 0 rows affected (0.00 sec)
  4.  
  5. MariaDB [(none)]> SET GLOBAL rpl_semi_sync_slave_enabled=1;
  6. Query OK, 0 rows affected (0.00 sec)

    MariaDB [(none)]> start slave;

到这里主从就做完了

在次搭建一个LAM的服务器

编译安装,跟上面一样,可参考上面编译安装

然后挂载nfs共享出来的/data/httpd

实现inotify+rsync同步

在inotify服务器安装rsync

  1. [root@inotify ~]# yum install rsync

在inotify服务器修改rsync的配置文件

  1. [root@inotify ~]# vim /etc/rsyncd.conf
  2. uid = root
  3. gid = root
  4. use chroot = no
  5. max connections = 0
  6. ignore errors
  7. exclude = lost+found/
  8. log file = /var/log/rsyncd.log
  9. pid file = /var/run/rsyncd.pid
  10. lock file = /var/run/rsyncd.lock
  11. reverse lookup = no
  12. hosts allow = 192.168.37.0/24
  13. [backup]
  14. path = /backup/
  15. comment = backup
  16. read only = no
  17. auth users = rsyncuser
  18. secrets file = /etc/rsync.pass

    # 具体的参数意思详见本文 inotify+rsync实时同步

服务器端生成验证文件,并修改权限,启动服务

  1. [root@inotify ~]# echo "rsyncuser:centos" > /etc/rsync.pass
  2. [root@inotify ~]# chmod 600 /etc/rsync.pass
    [root@inotify ~]# systemctl start rsyncd

在nfs服务器安装inotify-tools包和rsync包

  1. [root@nfs data]# yum install inotify-tools -y
  2. [root@nfs data]# yum install rsync -y
  3. #基于epel源

在nfs服务器配置密码文件并修改权限

  1. [root@nfs data]# echo "centos" > /etc/rsync.pass
  2. [root@nfs data]# chmod 600 /etc/rsync.pass

在nfs服务器配置脚本

  1. [root@nfs data]# vim /etc/inotify_rsync.sh
  2.  
  3. #!/bin/bash
  4. SRC='/data/'
  5. DEST='rsyncuser@192.168.37.26::backup'
  6. inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
  7. FILEPATH=${DIR}${FILE}
  8. rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
  9. done

在nfs服务器安装screen文件

  1. [root@nfs data]# yum install screen -y

用screen去运行脚本

  1. [root@nfs ~]# screen -S inotify #为screen窗口起个名字
  2. [root@nfs ~]# . /etc/inotify_rsync.sh #在screen窗口执行命令
  3.  
  4. [root@nfs ~]# screen -list
  5. There is a screen on:
  6. 28297.inotify (Detached)
  7. 1 Socket in /var/run/screen/S-root. # 列出screen任务的窗口
  8.  
  9. [root@nfs ~]# screen -r inotify # 回到screen窗口里面

实现web管理的Powerdns

在lam服务器安装包(基于epel源)

  1. [root@lam ~]# yum install -y pdns pdns-backend-mysql

在master-mariadb服务器上创建数据库,表和用户

  1. MariaDB [(none)]> create database powerdns;
  2. MariaDB [(none)]> grant all on powerdns.* to 'powerdns'@'192.168.37.22' identified by 'centos';
  3. MariaDB [powerdns]> use powerdns;
  4.  
  5. #创建表参照
  6. https://doc.powerdns.com/md/authoritative/backend-generic-mysql/

在lam服务器修改powerdns的配置文件

  1. launch=gmysql
  2. gmysql-host=192.168.37.21
  3. gmysql-port=3306
  4. gmysql-dbname=powerdns
  5. gmysql-user=powerdns
  6. gmysql-password=centos

在lam服务器启动服务

  1. [root@lam ~]# systemctl start pdns
  2. [root@lam ~]# systemctl enable pdns

项目cobbler+lamp+vsftp+nfs+数据实时同步(inotify+rsync)的更多相关文章

  1. 实时同步inotify+rsync

    目的,要求 nfs储存服务器与backup备份服务器,数据同步,万一nfs储存服务器挂了,数据还在 实时同步备份软件服务 1)inotify 实时同步软件 2)sersync 实时同步软件 实时同步原 ...

  2. centos文件实时同步inotify+rsync

    我的应用场景是重要文件备份 端口:873,备份端打开即可 下载地址:https://rsync.samba.org/ftp/rsync/src/ 服务端和客户端要保持版本一致 网盘链接:https:/ ...

  3. CentOS 6.5 rsync+inotify实现数据实时同步备份

    CentOS 6.5 rsync+inotify实现数据实时同步备份 rsync    remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘 ...

  4. inotify和rsync实现数据实时同步

    数据的实时同步 实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 实现实时同步的方法 ino ...

  5. 项目实战:rsync+sersync实现数据实时同步

    一.组网介绍 本次实验使用两台主机: qll251 角色:Rsync server + Sersync server qll252 角色: Rsync client 本次实验采用CentOS7.7系统 ...

  6. MySQL 到 ES 数据实时同步技术架构

    MySQL 到 ES 数据实时同步技术架构 我们已经讨论了数据去规范化的几种实现方式.MySQL 到 ES 数据同步本质上是数据去规范化多种实现方式中的一种,即通过"数据迁移同步" ...

  7. Mysql数据实时同步

    企业运维的数据库最常见的是 mysql;但是 mysql 有个缺陷:当数据量达到千万条的时候,mysql 的相关操作会变的非常迟缓; 如果这个时候有需求需要实时展示数据;对于 mysql 来说是一种灾 ...

  8. Rsync+sersync实现数据实时同步

    前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...

  9. CentOS7下Rsync+sersync实现数据实时同步

    近期公司要上线新项目,后台框架选型我选择当前较为流行的laravel,运行环境使用lnmp. 之前我这边项目tp32+apache,开发工具使用phpstorm. 新建/编辑文件通过phpstorm配 ...

随机推荐

  1. 'pybot' 不是内部或外部命令,也不是可运行的程序 或批处理文件

    在dos下运行pybot --version提示不是内部命令 这是pip list 打印信息: 解决方法: 在python/Scripts目录下加一个pybot.bat 文件 内容为: @Echo o ...

  2. xxx.app已损坏无法打开、来自身份不明的开发者解决办法

    在 Mac 上安装非 App Store 软件时,可能会遇到一些这样或那样的问题,这篇文章就 Mac 从 .dmg 安装软件时可能遇到的问题提一些解决方法. 状况一:双击 .dmg 安装软件出现以下情 ...

  3. Java连接redis之Jedis使用

    测试联通 创建Maven工程,引入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId&g ...

  4. Linux mem 2.6 Rmap 内存反向映射机制

    文章目录 1. 简介 2. 匿名内存 Rmap 的建立 2.1 fork() 2.2 do_page_fault() 3. 文件内存 Rmap 的建立 3.1 fork() 3.2 do_page_f ...

  5. SpringBoot 整合 Docker

    最近备忘录新加的东西倒是挺多的,但到了新环境水土不服没动力去整理笔记 1. Demo Project 首先准备一个简单的项目,用来部署到 Docker 主机上,并且能验证该项目是否成功运行 1.1 接 ...

  6. scrapy获取汽车之家数据

    1.创建scrapy项目 >scrapy startproject scrapy_carhome 2.找到对应接口 3.创建爬虫文件 > cd scrapy_carhome\scrapy_ ...

  7. Scrapy入门到放弃05:让Item在Pipeline中飞一会儿

    前言 "又回到最初的起点,呆呆地站在镜子前". 本来这篇是打算写Spider中间件的,但是因为这一块涉及到Item,所以这篇文章先将Item讲完,顺便再讲讲Pipeline,然后再 ...

  8. [hdu6991]Increasing Subsequence

    令$f_{i}$​​表示以$i$​​为结尾的极长上升子序列个数,则有$f_{i}=\sum_{j<i,a_{j}<a_{i},\forall j<k<i,a_{k}\not\i ...

  9. [hdu6974]Destinations

    注意到一个人的三条链一定不会同时选(忽略仅选一个终点的限制),因为其有公共点(起点) 换言之,问题相当于给定$3m$条链,选择$m$条没有公共点的链,并最小化代价和 进一步的,显然也不存在多于$m$条 ...

  10. [hiho1952]运算数

    可以发现如果将根的结果写成多项式,可以发现只需要预处理出f[i][j]表示以i为根的子树j次项有多少个,g[i]表示从n个数中选取i个数相乘的和,就可以通过\sum_{i=1}^{n}f[1][i]\ ...