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
下一篇 2016-10-24

相关推荐

  • DNS原理详解02

    9、子域授权     1、在父域的区域配置文件中增加以下记录,即为增加了子域授权            opt.patrickli.com.         IN      NS     &…

    Linux干货 2016-08-29
  • bash脚本编程class 1

    命令集构成的shell与变量赋予其的灵活性     一.shell脚本的基本构成和调用方式   shell脚本由基本文件构成,调用shell文件有两种方式:bash+file.sh或source+file.sh的绝对路径,其中后一种需要对文件添加用户执行权限。这两种调用方式都能执行shell文件,但是所执行的位置不同,…

    Linux干货 2016-08-15
  • 踩踩Linux命令中的那些坑

    有时候面对命令的执行和条件的判断,可能会遇到莫名奇妙的原因,可能是人为错误导致,也可能是命令本身的问题。

    Linux干货 2017-11-23
  • 几个常用命令、inode及第二周作业

    一、cd命令 1、功能 用来进行不同目录间的切换,属于内部命令。 2、语法 cd  [-L|-P]  [dir] -L : 如果要切换到的目录是一个符号链接,就直接切换到符号链接名表示的目录(默认)。 -P : 如果要切换到的目录是一个符号链接,直接接切换到符号链接指向的目标目录。 3、用法说明 cd 或 cd ~ :进入当前用户的主目录…

    Linux干货 2016-08-02
  • 04用户和组的相关配置文件总结

    1、用户 个人理解的是,给使用者一个在系统中使用的身份,即用户。 用户分两种:管理员和普通用户。 而每一个用户都有一些属性,每一个属性都是用冒号分割开来。配置文件存储在【/etc/passwd】中。 例如,sarash:x:507:508::/home/sarash:/bin/nologin 他们分别是,用户名,密码,ID号,主组ID号,注释,家目录,默认登…

    Linux干货 2016-10-24
  • 【26期】Linux第九周学习小总结

    本周带来的是慢慢的技术分享,有关于计划任务的分享,涉及的知识点主要是at和cron,crontab的详解,计划任务可以将任何脚本、程序或文档安排在某个最方便的时间运行,有利于我们的自动化运维,当某项任务多次重复,或者某个指定的时间点多次执行时,就可以使用计划任务方便我们的工作。

    2017-09-09