LAMP及nfs、samba的综合练习

blob.png

练习一:

配置第一台主机:服务端共享目录:

[root@localhost /]# yum install nfs-utils
[root@localhost /]# systemctl start rpcbind
[root@localhost /]# systemctl start nfs
[root@localhost /]# ss -tnl
State    Recv-Q Send-Q Local Address:Port          Peer Address:Port              
LISTEN      0      64          *:2049            *:*

[root@localhost ~]# cat /etc/exports
/mysql/data 10.1.252.28/16(rw,sync)
[root@localhost /]# exportfs -ar

然后更改共享目录的权限:此部分为测试,在测试部分。

 

配置第二台主机:

挂载共享:

[root@localhost mnt]# showmount -e 10.1.49.11
Export list for 10.1.49.11:
/mysql/data 10.1.252.28/16
[root@localhost mnt]# mount -t nfs 10.1.49.11:/mysql/data  /mydata

安装mysql

[root@localhost ~]yum install mysql
[root@localhost ~]yum install mysql-devel  mysql-server 
[root@localhost ~]# service mysqld start
[root@localhost ~]# ss -tnl
State   Recv-Q  Send-Q   Local Address:Port      Peer Address:Port 
LISTEN     0     50       *:3306                        *:*    
[root@localhost ~]# mysql_secure_installation
[root@localhost ~]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

更改mysql的数据库数据路径:

[root@localhost ~]# vim /etc/my.cnf

 

配置第三台主机:

挂载共享,同上台主机:

[root@localhost ~]# iptables -F 
[root@localhost ~]# setenforce 0
[root@localhost ~]# mount -t nfs 10.1.49.11:/mysql/data /mydata

测试及结论:

对共享目录设置不同权限:

(1)此处使用777权限先测试

[root@localhost /]# chmod 777 -R /mysql

结果:能在目录下创建文件,能正常启动mysql并使用,但是提示无法修改权限:

[root@localhost testdir]# service mysqld start 
chown: 正在更改"/testdir/data" 的所有者: 不允许的操作
chmod: 更改"/testdir/data" 的权限: 不允许的操作
正在启动 mysqld:                              [确定]

两台主机不能同时启用,设置acl权限的效果也是如此。

(2)测试共享的目录不压缩root权限并且其它人有7的权限,因为挂载之后mysql是以其它人的方式访问:

[root@localhost /]# cat /etc/exports
/mysql/data 10.1.252.28/16(rw,no_root_squash,sync)

结果:单台主机可以正常使用,并且目录及文件的属组属主都重新初始化为了mysql主和mysql组。两台主机不能同时启动。

(3)测试mysql都为同IDrpm安装的mysql默认id都为27

[root@localhost ~]# service mysqld stop
Stopping mysqld:                                           [  OK  ]
[root@localhost ~]# umount /mydata/
[root@localhost /]# cat /etc/exports
/mysql/data 10.1.252.28/16(rw,sync)
[root@localhost /]# chmod 755 /mysql/data/ -R 
[root@localhost /]# chown mysql:mysql /mysql   -R 
[root@localhost /]# ll /mysql/
总用量 4
drwxr-xr-x. 5 mysql mysql 4096 10月 18 19:19 data
[root@localhost /]# exportfs -ar

重启服务:

[root@localhost mydata]# !servi
service mysqld  restart 
Stopping mysqld:                               [  OK  ]
chown: changing ownership of `/mydata': Operation not permitted
chmod: changing permissions of `/mydata': Operation not permitted
Starting mysqld:                           [  OK  ]

会报错提示不允许更改权限,但是能够正常使用。说明需要root权限更改目录属主属组和和权限,因为默认目录就是755的并且属组主都为mysql

最好的方法就是压缩root权限并更改相同IDmysql,因为mysql在使用数据文件时会加锁LAMP及nfs、samba的综合练习,因此不能两个mysql操作同一个目录的数据。如今为了实现冗余性,会利用软件的方式,将两个mysql结合在一个数据库数据路径上,当一台主机故障,立即启用另一台。

注意:遇到的问题:yum安装的mysql是没有my.cnf的配置文件的,系统安装时会自带,若没有配置文件,可以复制默认使用的配置文件my-medium.cnf到/etc/my.cnf来使用。


练习二:

服务端:配置环境

[root@localhost test]# yum install samba
[root@localhost test]# service nmb start 
Starting NMB services:                                     [  OK  ]
[root@localhost test]# service smb start 
Starting SMB services:                                     [  OK  ]
[root@localhost mydata]# useradd centos
[root@localhost mydata]# passwd centos
[root@localhost mydata]# useradd gentoo
[root@localhost mydata]# passwd gentoo

设置文件权限:

[root@localhost ftp]# setfacl -m u:gentoo:rwx pub
[root@localhost ftp]# setfacl -m u:centos:rwx pub

添加用户:

[root@localhost ftp]# smbpasswd -a centos
New SMB password:
Retype new SMB password:
Added user centos.
[root@localhost ftp]# smbpasswd -a gentoo
New SMB password:
Retype new SMB password:
Added user gentoo.

客户端

使用可写的用户centos登录:

[centos@localhost pub]$ smbclient //10.1.252.28/pub -U centos
Enter centos's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
smb: \> put issue
putting file issue as \issue (1.0 kb/s) (average 1.0 kb/s)
smb: \> ls
  .              D        0  Sun Sep 11 21:00:51 2016
  ..              D        0  Sun Sep 11 20:50:16 2016
  issue             A       47  Sun Sep 11 21:00:51 2016
  fstab                    946  Sun Sep 11 20:57:24 2016
40317 blocks of size 524288. 37594 blocks available
smb: \> rm fstab 
smb: \> ls
  .                    D        0  Sun Sep 11 21:01:13 2016
  ..                    D        0  Sun Sep 11 20:50:16 2016
  issue                   A       47  Sun Sep 11 21:00:51 2016
40317 blocks of size 524288. 37594 blocks available

使用其他用户登录:

[centos@localhost pub]$ smbclient //10.1.252.28/pub -U ge
Enter ge's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
smb: \> ls
  .              D        0  Sun Sep 11 21:09:22 2016
  ..              D        0  Sun Sep 11 20:50:16 2016
  fstab            A      946  Sun Sep 11 21:09:16 2016
40317 blocks of size 524288. 37594 blocks available
smb: \> rm fstab
NT_STATUS_ACCESS_DENIED deleting remote file \fstab
NT_STATUS_ACCESS_DENIED listing \fstab

确实不可写。使用用户查看共享目录列表时也不显示pub目录:

[centos@localhost pub]$ smbclient -L //10.1.252.28 -U ge
Enter ge's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
Sharename       Type      Comment
---------       ----      -------
IPC$         IPC       IPC Service (Samba Server Version 3.6.23-33.el6)
ge          Disk      Home Directories

注意:遇到的问题二:samba服务中:直接在操作文件系统的挂载目录而不使用客户端时,用除了root的其它用户都不能写。设置了acl权限时,即使是相同id,也无法在文件系统进行写操作;但是服务端给予的权限的用户和客户端用户相同ID的情况下,更改服务端的文件的属主属组时,如下:

[root@localhost ftp]# chown root:centos pub
[root@localhost ftp]# ll
total 4
drwxrwxr-x+ 2 root centos 4096 Sep 11 21:26 pub

此时在客户端挂载,就可以实现写操作,证明是基于ID映射权限,而且acl的权限并不进行ID映射:

[ge@localhost ~]$ cd /mnt/pub/
[ge@localhost pub]$ ls
fstab
[ge@localhost pub]$ rm fstab


练习3:

共享端:配置环境:

[root@localhost ftp]mkdir -pv /data/app/web
[root@localhost ftp]# mv wordpress/* -f   /data/app/web/

注意:遇到的问题三:更改属主属组,并将其父目录也更改为apache,因为wordpress需要自动新建配置文件(Discuz也需要权限来写入文件,但是不需要父目录的写权限,因为其并不新建文件,只修改文件):

[root@localhost web]# chown apache:apache ./* -R 
[root@localhost app]# chown apache:apache web

将目录共享:

[root@localhost web]# cat /etc/exports
/data/app/web  10.1.49.10/16(rw,sync)
/data/app/web   10.1.49.11/16(rw,sync)
[root@localhost web]# exportfs  -ar 
[root@localhost web]# service rpcbind start
[root@localhost web]# service nfs start 
Starting NFS services:                       [  OK  ]
Starting NFS quotas:                        [  OK  ]
Starting NFS mountd:                        [  OK  ]
Starting NFS daemon:                        [  OK  ]
Starting RPC idmapd:                        [  OK  ]

在三台主机的任一主机上安装数据库:

然后新建数据库并且授权用户,使此用户可以通过任何主机(%通配)访问数据库的任何库和表(不建议全部授权,要授权指定的库)

MariaDB [(none)]> GRANT ALL ON *.* TO 'wordpress'@'%' IDENTIFIED BY 'magedu';

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> FLUSH PRIVILEGES;

测试连接数据库:可以在另一台主机上使用mysql -uwordpress -h10.1.49.11 -pmagedu。使用-h指明要登录的主机ip

 

主机1:

挂载目录:

[root@localhost html]# mount -t nfs 10.1.252.28:/data/app/web /var/www/html

安装网站:在此步骤前,数据库自己先建立好,用户名密码使用授权的用户进行登录数据库的主机填写数据库所在的主机IP

blob.png

因为wordpress速度太慢,改为Discuz,步骤基本相同

安装完成后访问:

blob.png


配置主机2:

[root@localhost Packages]# mount -t nfs 10.1.252.28:/data/app/web  /var/www/html/

挂载后直接访问:

blob.png

测试

使用admin账号发帖:刷新,两个ip都可以正常显示:

blob.png

注意:遇到的问题四:centos6中安装php之后,其模块配置文件在conf.d/目录下的php.conf中;

一定要注意授权的地址及库等正确;

安装时填写数据库要填写IP,在生产中为了存放数据都会单独使用数据库服务器;

配置lamp时注意与php的结合。

 

额外测试:

配置bind添加区域并将同一个域名解析为两个IP,也就是两条A记录;这样能够使登录网页后使用不同的ip进行登录也就实现了一定的负载均衡能力但是在浏览器中一般会有缓存,在真正使用时,可以将ip分别添加至网卡的别名中。当一台服务器故障,另一台服务器上有第一台的ip,也不会影响用户的直接访问。

blob.png

测试:可以使用ping命令或者dig检测:

注意:遇到的问题五:此处更改resolv.conf,使之通过252.28主机进行名称解析:

blob.png

使用ping命令,通过多次执行可以看出,两个IP交替出现,能够实现一定的负载均衡能力:

blob.png

blob.png

原创文章,作者:SilencePavilion,如若转载,请注明出处:http://www.178linux.com/53748

(0)
SilencePavilionSilencePavilion
上一篇 2016-10-24 09:08
下一篇 2016-10-24 09:08

相关推荐

  • Linux的文件系统和目录

    Linux的文件系统和目录 Linux目录和Windows目录有着很大的不同,Linux目录类似一个树,最顶层是其根目录,如下图: 文件系统和目录:   详细用法如下 / bin     存放用户使用的基本命令(可执行程序,二进制文件),它是不能单独分区的 boot    跟内核…

    2017-03-26
  • 第一周作业

    第一周作业 1、描述计算机的组成及其功能     计算机与操作系统:     CPU:运算器、控制器、寄存器、缓存     存储器:内存,RAM(Random Access Memory)     Input:下指令,提供数据  …

    Linux干货 2017-08-09
  • 基于rsync+inotify实现数据实时同步传输

    前言 与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但随着文件数量的增大和实时同步的要求,rsync已不能满足需求,随之rsync+inotify便应运而生。本文将讲解rsync的基础知识和如何基于rsync+inotify实现数据实时同步传输。 rsync相关介…

    Linux干货 2015-04-27
  • systemd

    1、systemd (1)CentOS 7 使用systemd替换了SysV。Systemd目的是要取代一直在使用的init系统,兼容SysV和LSB的启动脚本,负责在系统启动或运行时,激活系统资源、服务器进程和其它进程。 (2)systemd的新特性: 系统引导是实现服务并行启动 按需启动守护进程 自动化管理各服务间的依赖关系 同时采用sockets式与D…

    Linux干货 2016-09-21
  • 第九周加密及DNS

    1、简述常见加密算法及常见加密算法原理,最好使用图例解说
    2、搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟
    3、简述DNS服务器原理,并搭建主-辅服务器
    4、搭建并实现智能DNS

    Linux干货 2018-01-29
  • sed与vim浅析

    sed与vim sed Stream EDitor, 行编辑器,sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。…

    Linux干货 2016-08-10