码迷,mamicode.com
首页 > 其他好文 > 详细

文件服务相关博客作业

时间:2016-07-30 06:59:33      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:nfs   samba   文件服务器   

nfs和sameba博客作业

博客实践作业:

(1) nfs server导出/data/目录;

(2) nfs client挂载/data/至本地的/mydata目录;本地的mysqld或mariadb服务的数据目录设置为/mydata, 要求服务能正常启动,且可正常 存储数据

(3) 客户端(lamp)部署wordpress,并让其正常访问;要确保能正常发文章,上传图片;

(4) 客户端2(lamp),挂载nfs server导出的文件系统至/var/www/html;验正其wordpress是否可被访问; 要确保能正常发文章,上传图片

注:四个问题连贯的,3.4两问的坑在数据库的连接上,最好写执行localhost或者127.0.0.1;但是两个数据库同时指向一个数据文件,会出现其中有一个服务器会启动不了; 这个时候就要把mysql安装在nfs服务器上面,让两个lnmp中的mairiadb都在一个上面就可以了

1)搭建并启动nfs,之后把/data目录导出到共享

  • [root@zou ~]# yum install nfs-utils

  • [root@zou ~]# ss -ntlp | grep 2049

  • [root@zou ~]# mkdir /data

  • [root@zou ~]# vim /etc/exports

  • /data/ 172.16.0.0/16(rw)

  • [root@zou ~]# exportfs -ar

2)连接共享目录,首先要支持nfs格式挂载

  • [root@zou /]# yum install mount.nfs

  • [root@zou /]# mount -t nfs 172.16.1.1:/data /mydata

  • [root@zou vhosts]# mount | grep nfs

  • 172.16.1.1:/data on /mydata type nfs (rw,vers=4,addr=172.16.1.1,clientaddr=172.16.1.2)

在服务端查看mysql用户的id号,如果没有的话,创建mysql用户为系统用户(保证客户端与服务端用户id相同)

  • [root@zou ~]# getent passwd mysql

  • mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

  • [root@zou ~]# chown mysql:mysql /data/mariadb

这个时候,尽量不要把这个目录写成rootmysql,不然实验没法做了(不允许root用户使用nfs

在客户端创建mysql用户,用户id27(这是变安装的情况;如果是yum安装,查看mysqlid,之后修改mysqlid27

  1. [root@zou data]# /etc/init.d/mysqld stop

  2. Shutting down MySQL. SUCCESS!

  3. [root@zou data]# usermod -u 27 mysql

  4. [root@zou data]# id -u mysql

  5. [root@zou data]# vim /etc/my.cnf

  6. datadir = /mydata/mariadb

  7. user=mysql

  8. group=mysql

  9. [root@zou wordpress]# /etc/init.d/mysqld stop

  10. [root@zou wordpress]# usermod -u 27 mysql

切换到mysql用户,查看mysql是否可以初始化(root用户对于挂载的目录而言被映射成其他用户,没有执行这个命令的权限)

  • -bash-4.1$ cd /usr/local/mysql/

  • -bash-4.1$ pwd

  • /usr/local/mysql

  • -bash-4.1$ scripts/mysql_install_db --user=mysql --datadir=/data/mariadb

把执行脚本的属组给mysql,这样mysql就可以调用这个脚本,之后mysql用户守护这个进程,(如果不使用mysql,而是用root用户的话,root用户虽有执行脚本的权限,但是它对于共享的nfs目录却是匿名用户,在里面创建文件和修改文件的权限不够,是的mysql无法启动

[root@zou wordpress]# chown .mysql /etc/init.d/mysqld  (给msyql用户可以执行这个命令的权限

-bash-4.1$  /etc/init.d/mysqld start

[root@zou mariadb] #  /etc/init.d/mysqld start        这个时候在root登录的状态下,执行这条命令也是可以的,到时候执行的时候以rootmysql去执行,root我们知道了对于nfs没有权限直接变成了而匿名用户;之后这个进程就算成了mysql组里面的用户发起的了,因为执行文件给了mysql组,有x权限,所以启动就可以了。注:如果不把这个脚本的所有者改动,只使用root用户是无法启动mysql的,除非你不使用nfs文件系统。

在刚才我们初始化数据库的时候已经把数据写进去了,现在我们在数据库里面通过sql语句增删查改数据测试否能够成功(当然我们也可以通过启动关闭mysql,会看到数据目录里面)

 

3)这里我已经部署好了lamp,现在准备在nfs文件系统上搭建网页(仅为测试,实际生产很少有用)

 

服务端先配置好目录

[root@zou data]# mkdir /data/www

[root@zou data]# chown -R zou:apache /data/www

这个时候暂时给其他位有写权限,一会儿等所有的网页设置完毕,再修改掉这个写权限

[root@zou data]# chmod o+w /data/www

 

客户端(做好LAMP的一端)

使用root用户,完成挂载,(这个时候就要切换成apache用户去挂载目录里面设置网页目录以及文件了,但是apache用户为nologin用户,现在可以修改apache用户为login之后弄完网页再修改回来;也可以按照我一开始设置的ohter权限位有写权限,这个时候客户端的root用户为nfs服务端的other用户

[root@zou /]# mount -t nfs 172.16.1.1:/data /mydata

以下为测试root这个在nfs服务端的匿名用户可以增删查改

[root@zou www]# pwd

/mydata/www

[root@zou www]# touch test

[root@zou www]# rm -rf test

[root@zou www]# pwd

/mydata/www

[root@zou www]# touch test;ls

test

[root@zou www]# rm test;ls

rm:是否删除普通空文件 "test"?y

[root@zou mydata]# cp -r /data/vhosts/www2/wordpress /mydata/www/

[root@zou mydata]# ll /mydata/www/wordpress/

总用量 180

-rw-r--r--.  1 nfsnobody nfsnobody   418 7月  20 2016 index.php

-rw-r--r--.  1 nfsnobody nfsnobody 19930 7月  20 2016 license.txt

-rw-r--r--.  1 nfsnobody nfsnobody  6789 7月  20 2016 readme.html

.....

这个时候最好把这些文件的所有者改为apache用户,当然如果不改动的话也是可以完成网页调用的

修改网页配置

[root@zou www]# vim /etc/httpd24/vhost2.conf 

DirectoryIndex index.php

        <VirtualHost 172.16.1.2:80>

                ServerName www2.zou.com

                DocumentRoot /data/vhosts/www2

                ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/mydata/www/$1

                #ProxyRequests off

                <Directory "/data/vhosts/www2">

                Options None

                AllowOverride None

                Require all granted

                </Directory>

        </VirtualHost>

准备号数据库以及对应的用户和密码

MariaDB [wordpress]> grant all on wordpress.* to ‘wpuser‘@localhost identified by ‘wppasswd‘;

设置网页文件与数据库对接

[root@zou wordpress]# cp wp-config-sample.php wp-config.php

define(‘DB_NAME‘, ‘wordpress‘);

define(‘DB_USER‘, ‘wpuser‘);

define(‘DB_PASSWORD‘, ‘wppasswd‘);

define(‘DB_HOST‘, ‘localhost‘);

重启httpd服务

[root@zou wordpress]# /usr/local/apache24/bin/httpd -t

Syntax OK

[root@zou wordpress]# /usr/local/apache24/bin/apachectl stop

[root@zou wordpress]# /usr/local/apache24/bin/apachectl start

出现如图就是可以创建wordpress网页了

技术分享

测试:在网页上编写并上传一个博文,查看是否可以上传并保存成功(如下图已经上传)

技术分享

下面测试一下上传图片

技术分享

从上上面的图片我们可以看出,上传的时候总是出错,明明两边都是apache用户id一样;权限也给的没有问题,还是会出现这个问题;测试了才发现这个LAMPphp-fpm安装的,需要把php配置文件里面的用户与属组改为apache,不然php程序执行的时候会以别的用户去执行,到时候就没有权限上传文件;

~# vim php-fpm.conf

user=apache

group=apache

~# killall php-fpm

~]# /usr/local/php54/sbin/php-fpm 

之后上传图片就成功了;(注:如果是模块安装php的话,这个问题可以忽略)

技术分享

4)(4) 客户端2(lamp),挂载nfs server导出的文件系统至/var/www/html;验正其wordpress是否可被访问; 要确保能正常发文章,上传图片

这里lamp还是用模块安装的lamp服务器

[root@localhost ~]# id -u apache

48            用户的id与其他两个主机的id一致

[root@localhost ~]# vim /etc/httpd/conf.d/vhost.conf

DirectoryIndex index.php

<VirtualHost 172.16.1.5:80>

        ServerName www.haizei.com

        DocumentRoot /mydata/www

        #ProxyRequests off

        #ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.10.2:9000/mydata/www/$1因为模块转发组合,所以注释

        <Directory "/mydata/data">

        Options None

        AllowOverride None

        Require all granted

        </Directory>

</VirtualHost>

[root@localhost ~]# systemctl reload httpd

[root@localhost ~]# mkdir /mydata

[root@localhost ~]# mount -t nfs 172.16.1.1:/data /mydata

[root@localhost mydata]# ls

准备号连接数据库的用户和密码,并进行授权

MariaDB [wordpress]> grant all on wordpress.* to ‘wpuser‘@localhost identified by ‘wppasswd‘;

MariaDB [(none)]> flush privileges;

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

datadir=/mydata/mariadb

[root@localhost mydata]# systemctl restart mariadb

这个时候会出现问题,两个数据库共用一个目录文件作为数据库存储路径,已经启动一个了,另一个无法启动,此时会发现这一个启动会启动不起来;所以要把服务迁移到nfs服务器上,且两个lnmp的网页都为nfs上面的,网页又被映射到本地,这个时候数据库里面指向lolcalhost是有问题的,所以还要再指向nfs上安装数据库的mariadb

nfs服务上

[root@zou data]# vim /etc/my.cnf

[mysqld]

datadir=/data/mariadb

socket=/var/lib/mysql/mysql.sock

innodb_file_per_table=on

skip_name_resolve=on

[root@zou data]# systemctl start mariadb

这个时候去修改在nfs服务器上面的wordpress下面的数据库指向,把这个数据库指向为nfs上面的mariadb数据库,而不能是localhost(前面的那个方法适合有两个数据库,且泡在各自的服务器上面,现在是只有一个,而且是远程,如果还指向localhostnfs目录是映射到httpd那一端的,也就出现了多个ip,这样让实验会无法继续下去;所以只能修改为执行固定ip的;

[root@zou data]# vim /data/www/wordpress/wp-config.php

define(‘DB_NAME‘, ‘wordpress‘);

define(‘DB_USER‘, ‘wpuser‘);

define(‘DB_PASSWORD‘, ‘wppasswd‘);

define(‘DB_HOST‘, ‘172.16.1.1‘);

MariaDB [(none)]> create database wordpress;

MariaDB [(none)]> grant all on wordpress.* to ‘wpuser‘@‘172.16.1.%‘ identified by ‘wppasswd‘;

MariaDB [(none)]> flush privileges;

 

测试:在172.16.1.2上面跑着httpphp-fpm(例题3已经上传成功)809000端口

 

在另一个lamp上面是httpphp采用模块组合安装的,只有80端口

技术分享


技术分享

1.2上传成功,我们来看一下1.5是否可以上传

技术分享

注:这种两个网站指向同一份数据,在页面跳转的时候可能会发生ip的跳转问题,这是正常的现象,需要后续其他技术解决(暂时没有)

 

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

 

博客实践作业:

(1) samba  server导出/data/目录;

(2) samba  client挂载/data/至本地的/mydata目录;本地的mysqld或mariadb服务的数据目录设置为/mydata, 要求服务能正常启动,且可正常 存储数据;

(3) samba server导出/data/application/web,在目录中提供wordpress;

(4) samba  client挂载samba server导出的文件系统至/var/www/html;

(5) 客户端(lamp)部署wordpress,并让其正常访问;要确保能正常发文章,上传图片;

(6) 客户端2(lamp),挂载samba  server导出的文件系统至/var/www/html;验正其wordpress是否可被访问; 要确保能正常发文章,上传图片;

 

1)安装samba程序

[root@zou ~]# mkdir /data

[root@zou ~]# yum install samba

[root@zou ~]# vim /etc/samba/smb.conf

interfaces = lo eno16777736 172.16.1.1/16 192.168.13.2/24

 hosts allow = 127. 172.16.1.

security = user

 passdb backend = tdbsam

 

[lampuser]

        comment = LAMP‘s data (^-^)

        path = /data

        browseable = no

        writable = yes

       ;guest ok = no         这两项如果基于匿名用户挂载登录使用可以注释,注释就是在前面加上分号;

        ;write list = testuser    这里仅允许使用testuser这个用户在客户端进行挂载,客户端上面没有这个用户

检查配置文档时候ok

[root@zou /]# testparm    显示ok并回车,出现自己定义的

[lampdata]

comment = LAMP‘s data (^-^)

path = /data

write list = testuser,mysql

read only = No

browseable = No

导出/data目录完毕, 但是由于指定了使用用户,还要把testuser用户加入到samba用户队列中

[root@zou /]# useradd testuser      新添一个系统用于,这个用户不用给他密码,把它加进samba用后队列

[root@zou /]# smbpasswd -a testuser      加入samba队列,并为samba控制的用户添加密码

New SMB password:    这里我们看的到这个和passwd命令一样需要输入两次密码

Retype new SMB password:

Added user testuser.    显示添加用户成功

同上,添加mysql用户

开启服务,这里如果没有用到windows服务器,那么nmb.service就不用开启了,只开启smb就可了

[root@zou /]# systemctl start smb.service

[root@zou /]# ss -ntlp | grep smb    查看

[root@zou /]# ss -ntlp | grep smb

LISTEN     0      50           *:139                      *:*                   users:(("smbd",pid=4201,fd=38))

LISTEN     0      50           *:445                      *:*                   users:(("smbd",pid=4201,fd=37))

LISTEN     0      50          :::139                     :::*                   users:(("smbd",pid=4201,fd=36))

LISTEN     0      50          :::445                     :::*                   users:(("smbd",pid=4201,fd=35))

还要让系统用户可以在目录内有可写权限

[root@zou /]# setfacl -m u:testuser:rwx /data  

 

下面我们就要在客户端挂载导出的smb共享目录了(客户端需要下载smb-client客户端)

[root@zou ~]# yum install samba-client

[root@zou ~]# mount -t cifs //172.16.1.1/lampdata -o username=testuser,password=123.comer /mydata

[root@zou mydata]# mkdir data-of-mariadb

[root@zou mydata]# ll -d data-of-mariadb/

drwxr-xr-x. 2 1235 1235 0 7月  23 2016 data-of-mariadb/

 

2)因为mariadb用户启动的时候要求其数据目录为mysql用户,所以我们要通过smb中的mysql用户来进行挂载;

[root@localhost /]# mount -t cifs //172.16.1.1/lampdata -o username=mysql,password=123.comer /mydata

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

datadir=/mydata/data-of-mariadb

 

smb服务器上面,把数据目录给mysql用户

[root@zou data]# chown mysql:mysql /data/data-of-mariadb/

 

在客户端上面:

[root@localhost mydata]# systemctl start mariadb.service

MariaDB [(none)]> create database zoutest;

Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> grant all on zoutest.* to ‘zou‘@‘%‘ identified by ‘123.comer‘;

Query OK, 0 rows affected (0.00 sec)

[root@zou data-of-mariadb]# ls

aria_log.00000001  aria_log_control  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  test  zoutest  zou.zhiyuan.com.err    从这里可以查看到数据库已经建立,可以正常的读写

正式博客的编辑,现在说明一下:由于使用用户认证挂载,在用户上面比较麻烦(不同用户使用的用户进程是不同的,这个时候需要使用不同的用户,并且要使用各自服务进程使用的用户来分别挂载进程,这样才能实现各项服务之间不发生紊乱情况。所以我这里面就后续的lamp把网页放到samba共享目录上面就直接采取了匿名用户

3

[root@zou ~]# vim /etc/samba/smb.conf

interfaces = lo eno16777736 172.16.1.1/16 192.168.13.2/24

 hosts allow = 127. 172.16.1.

security = user

 passdb backend = tdbsam

 

[lampdata]

        comment = LAMP‘s data (^-^)

        path = /data/application/web

        browseable = yes

        writable = yes

        ;guest ok = no

        write list = testuser,mysql,apache

;       valid users = %S

;       valid users = MYDOMAIN\%S

[root@zou /]# mkdir -p /data/application/web

[root@zou data]# systemctl reload smb

准备好wordpress,并做好权限

[root@zou /]# cp -r /data/www/wordpress/ /data/application/web/

[root@zou wordpress]# chown -R apache.apache /data/application/web/wordpress/

 

在客户端

[root@localhost /]# smbclient -L 172.16.1.1 -U testuser

Enter testuser‘s password: =

Sharename       Type      Comment

---------       ----      -------

lampdata        Disk      LAMP‘s data (^-^)

.....

 

4)在客户端

[root@localhost /]# mount -t cifs //172.16.1.1/lampdata -o username=apache,password=123.comer /var/www/html

[root@localhost /]# cd /var/www/html/

[root@localhost html]# ll

drwxr-xr-x. 5 apache apache 0 Jul 23 09:52 wordpress

 

5)和(6lnmp用这个wordpress来做lnmp的网页

samba端服务端端准备好mariadb数据库

[root@zou data]# chown mysql.mysql mariadb

[root@zou data]# systemctl start mariadb

[root@zou wordpress]# vim /etc/my.cnf

datadir=/data/mariadb

MariaDB [(none)]> create database wordpress;

MariaDB [(none)]> grant all on wordpress.* to ‘wpuser‘@‘172.16.1.%‘ identified by ‘wppasswd‘;

 

[root@localhost httpd]# vim conf/httpd.conf

DirectoryIndex index.php index.html

[root@localhost httpd]# systemctl reload httpd

[root@localhost html]# vim /var/www/html/wordpress/wp-config.php

define(‘DB_NAME‘, ‘wordpress‘);

define(‘DB_USER‘, ‘wpuser‘);

define(‘DB_PASSWORD‘, ‘wppasswd‘);

define(‘DB_HOST‘, ‘172.16.1.1‘);

 

技术分享

技术分享

同理在另个服务器上面也是用smbapache用户用户去挂载登录,之后修改httpd配置文件

 DirectoryIndex index.php index.html

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache24/htdocs/$1

[root@zou httpd24]# mount -t cifs //172.16.1.1/lampdata -o username=apache,password=123.comer /usr/local/apache24/htdocs

这个就是总会出现页面跳转了(总是掉转到1.5那台主机上面,本机是1.2

但是上传文件应该是没有问题


本文出自 “北极的linux” 博客,请务必保留此出处http://941012521.blog.51cto.com/9253690/1831911

文件服务相关博客作业

标签:nfs   samba   文件服务器   

原文地址:http://941012521.blog.51cto.com/9253690/1831911

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!