Linux中Samba与NFS的共享示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中Samba与NFS的共享示例相关的知识,希望对你有一定的参考价值。

在这里面所有的服务器为CentOS 6.9,samba客户端和NFS客户端均为CentOS 7.2
要完成以下操作需要安装的软件包:yum install httpd mariadb-server(CentOS6.9是mysql-server)nfs-utils samba php php-fpm php-mysql nginx
安装完成即可进行操作;
使用samba和NFS分别共享/data目录:
首先使用NFS共享/data目录:
创建共享目录:
~]# mkdir /data
在centos6中编辑文件/etc/exports
~]# vim /etc/exports
在内部添加一行内容:
/data () //第一个是要共享的目录,“”“”表示所能接受共享的主机地址表示所有主机都可以接受
添加完之后保存退出即可;
接下来启动NFS进程:
~]# service nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]
启动成功后完成之后 :
~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 172.16.72.11:8000 :
LISTEN 0 64 :::2049 :::
LISTEN 0 64
:2049 :
.....
可以看到有端口号为2049的进程启动即可;
这时我们可以在我们本地共享的目录中创建一个文件,然后在里面编辑一行内容:
~]# touch /data/test
~]# vim /data/test
测试成功

编辑完成后,保存退出即可;
为了测试是否共享成功,我么可以在另一台主机上进行如下操作:
~]# mkdir /mnt/nfs //首先创建一个可以挂载的目录
~]# showmount -e 172.16.72.11 //查看服务器共享的目录列表
Export list for 172.16.72.11:
/data *
~]# mount -t nfs 172.16.72.11:/data /mnt/nfs //挂载共享目录
~]# df //查看挂载是否成功 172.16.72.11:/data 51475200 12512512 36341248 26% /mnt/nfs有这一行代表成功了
~]# cat /mnt/nfs/test //查看共享是否成功
测试成功 //显示为我们之前所输入的文字,所以共享成功;

接下来我们使用Samba共享/data目录:
之前我们已经创建好了共享目录/data所以不用在此创建了;
我们需要在共享之前修改Samba的主配置文件:
~]# vim /etc/samba/smb.conf
workgroup = MYGROUP 建议将这一行修改为 workgroup =WORKGROUP

passdb backend = tdbsam 修改:passdb backend = tdbsam:/etc/samba/test.db
然后拉到文档最后添加内容:
[data] //共享文件名
comment = shared file //一个说明写不写无所谓
path = /data //共享文件目录的路径必须写
valid users = li //能够访问的用户
writable = yes //规定共享用户拥有写权限
public = no //不允许匿名访问,必须通过身份认证后才能访问
browsable = yes //在浏览页面能够看到
create mask = 0644 //规定了写权限后,规定的上传权限
编辑完之后保存退出即可;
想要查看编辑后的文件是否出现错误可以用下面命令实现:
~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[testfile]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
这样证明没有语法错误;
建出我们在配置文件中所写到的用户:
~]# useradd li
正在创建信箱文件: 文件已存在
~]# pdbedit -a li
new password:
retype new password:
Unix username: li
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1182130408-243049493-2191779520-1000
Primary Group SID: S-1-5-21-1182130408-243049493-2191779520-513
Full Name:
Home Directory: \localhost\li
HomeDir Drive:
Logon Script:
Profile Path: \localhost\li\profile
Domain: LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 三, 06 2月 2036 23:06:39 CST
Kickoff time: 三, 06 2月 2036 23:06:39 CST
Password last set: 日, 06 5月 2018 23:56:13 CST
Password can change: 日, 06 5月 2018 23:56:13 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
因为我们之前的文件为.db格式的所以要用pdbedit创建出来
这是我们在查看/etc/samba文件发现多了一个之前我们在Samba文件中写入的文件
~]# ls /etc/samba
lmhosts smb.conf smbusers test.db
想要查看这个文件中的内容要使用pdbedit -L命令而不是cat不然看到的都是乱码;
这些完成后,我们就可以启动服务了:
~]# service smb restart
关闭 SMB 服务: [失败]
启动 SMB 服务: [确定]
使用命令: ~]# ss -tnl //可以看到445号端口和139号端口开启,这样就可以正常完成smb的通信了
~]# smbclient -L 172.16.72.11 -U li //使用li这个用户查看服务器smb的贡献目录列表,键入的密码为之前设置的li的密码
Enter SAMBA\li‘s password:

Sharename       Type      Comment
---------       ----      -------
testfile        Disk      shared file
IPC$            IPC       IPC Service (Samba Server Version 3.6.23-46el6_9)
li              Disk      Home Directories

Reconnecting with SMB1 for workgroup listing.

Server               Comment
---------            -------

Workgroup            Master
---------            -------

虽然之前我们规定了写权限但是在文件/data可以看到:
~]# ll /data
总用量 4
-rw-r--r--. 1 root root 13 5月 6 22:42 test
-rw-r--r--. 1 root root 0 5月 6 23:36 testfile
我们可以为其赋予一个权限:
~]# chmod 1777 /data
这是我们可以在可会集中创建一个文件:
~]# vim /etc/test1
测试
保存退出
然后:
~]# smbclient -U li //172.16.72.11/testfile
Enter SAMBA\li‘s password:
Try "help" to get a list of possible commands.
smb: \> put /etc/test1 test1
putting file /etc/test1 as \test1 (1.0 kb/s) (average 1.0 kb/s)
smb: \> ls
. D 0 Mon May 7 00:23:21 2018
.. DR 0 Sun May 6 22:13:06 2018
test1 N 7 Mon May 7 00:23:21 2018
test N 13 Sun May 6 22:42:31 2018
testfile N 0 Sun May 6 23:36:46 2018

    51475068 blocks of size 1024. 36338320 blocks available
这样就完成了将本地文件上传到服务器操作;

然后切换到服务器主机:
~]# cat /data/test1
测试
证明上传成功;
也可以通过像NFS一样通过挂载实现共享
~]# mkdir /mnt/cifs
~]# mount -t cifs -o username=li //172.16.72.11/data /mnt/cifs/
Password for [email protected]//172.16.72.11/data: **
**~]# df
df: "/run/user/0/gvfs": 没有那个文件或目录
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda1 40498872 3942252 36556620 10% /
devtmpfs 924900 0 924900 0% /dev
tmpfs 935256 84 935172 1% /dev/shm
tmpfs 935256 25496 909760 3% /run
tmpfs 935256 0 935256 0% /sys/fs/cgroup
tmpfs 187052 4 187048 1% /run/user/0
//172.16.72.11/data 51475068 12515276 36338352 26% /mnt/cifs
~]# cat /mnt/cifs/testfile
测试
共享成功成功

让samba客户端和NFS客户端分别挂载samba服务器上共享的/data/至本地的/mydata目录;本地的mysqld或mariadb服务的数据目录设置为/mydata,要求服务能正常启动,且可正常存储数据:
在刚刚的Samba客户端上创建本地目录/mydata,然后完成挂载:
~]# mkdir /mydata
~]# mount -t cifs -o username=li //172.16.72.11/data /mydata
Password for [email protected]//172.16.72.11/data: **

在刚刚的NFS客户端上创建本地目录/mydata,然后完成挂载:
~]# mkdir /mydata
~]# mount -t nfs 172.16.72.11:data /mydata

修改Samba客户端的MariaDB的主配置文件:
~]# vim /etc/my.cnf

datadir=/var/lib/mysql 修改为datadir=/mydata

修改NFS客户端的MariaDB的主配置文件:
~]# vim /etc/my.cnf

datadir=/var/lib/mysql 修改为datadir=/mydata

完成之后在共享服务器中完成以下操作:
~]# cp -a /var/lib/mysql /data/mysql
~]# chmod -R 1777 /data
~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MariaDB [(none)]> create database mydb character set = utf8;
Query OK, 1 row affected (0.00 sec)
能够成功创建出表,表示成功;

(1) 使用samba和NFS分别共享/data/application/web,部署LAMP,并在上述目录中提供wordpress应用;
(2) 使用samba客户端和NFS客户端分别挂载samba server和NFS server共享的目录至/var/www/html
(3) 分别通过两台服务器验正wordpress是否可被访问、能否正常发文章和上传图片;

首先在服务器中使用samba和NFS共享/data/application/web,个上面操作是一样的只是将文件名进行修改即可;
服务器中的操作:
~]# vim /etc/exports
/data/application/web (rw) //为了能够让NFS客户端上传文章和图片要赋予其写权限

~]# vim /etc/samba/smb.conf
[web]
comment = shared file
path = /data/application/
valid users = li
writable = yes
public = no
browsable = yes
create mode = 0644
directory mode = 0755
~]# chmod 777 /data/application/web //为了能够让Samba客户端上传文章和图片要赋予其相应权限

t ~]# vim /etc/samba/smb.conf
~]# service nfs restart
关闭 NFS 守护进程: [确定]
关闭 NFS mountd: [确定]
关闭 NFS quotas: [确定]
关闭 NFS 服务: [确定]
Shutting down RPC idmapd: [确定]
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]
[[email protected] ~]# service smb restart
关闭 SMB 服务: [确定]
启动 SMB 服务: [确定]

~]# mount -t nfs 172.16.72.11:/data/application/web /var/www/html
~]# mount -t cifs -o username=li //172.16.72.11/data/application /var/www/html
Password for [email protected]//172.16.72.11/data/application: **

将wordpress文件从电脑主机中发送到虚拟机服务器主机/data/application/web下面,这是我们需要用到的工具是xftp工具以及软件包wordpress-4.2-zh_CN.tar.gz解压缩后里面的wordpress文件

完成操作之后,在samba客户端和NFS客户端中进行如下操作:

~]# setenforce 0
~]# systemctl disable firewalld.service
~]# systemctl stop firewalld.service
~]# iptables -F
~]# systemctl start httpd.service
~]# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since 四 2018-05-17 21:59:02 CST; 29min ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 22428 (httpd)
Status: "Total requests: 2; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─22428 /usr/sbin/httpd -DFOREGROUND
├─22430 /usr/sbin/httpd -DFOREGROUND
├─22431 /usr/sbin/httpd -DFOREGROUND
├─22432 /usr/sbin/httpd -DFOREGROUND
├─22433 /usr/sbin/httpd -DFOREGROUND
├─22434 /usr/sbin/httpd -DFOREGROUND
├─22436 /usr/sbin/httpd -DFOREGROUND
└─22451 /usr/sbin/httpd -DFOREGROUND

5月 17 21:59:02 localhost.localdomain systemd[1]: Starting The Apache HTT...
5月 17 21:59:02 localhost.localdomain httpd[22428]: AH00558: httpd: Could...
5月 17 21:59:02 localhost.localdomain systemd[1]: Started The Apache HTTP...
Hint: Some lines were ellipsized, use -l to show in full.

然后在自己电脑主机上分别访问172.16.72.1/wordpress和172.16.72.10/wordpress技术分享图片
出现这个证明服务器能够被访问;

接下来我们就在服务器中建立起数据库:
~]# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 62
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql> create database word charset = utf8; //建立数据库
Query OK, 1 row affected (0.00 sec)

mysql> grant all on word.* to ‘root‘@‘%‘ identified by ‘123456‘; //授权并设置密码
Query OK, 0 rows affected (0.00 sec)

mysql> \q //退出
Bye

在服务器中修改wordpress的配置文件:
~]# cd /data/application/web/wordpress/
wordpress]# vim wp-config-sample.php //修改下面的部分即可
技术分享图片
然后通过NFS客户端主机地址访问172.16.72.1/wordpress,进入界面输入以下内容:
技术分享图片
提交;技术分享图片
出现上面的情况后,我们进入到服务器例进行如下操作:
wordpress]# vim wp-config.php
复制图片中提示内容,保存退出,然后点击网站上的进行安装,出现下面这个界面:
技术分享图片
自己进行配置:技术分享图片
点击安装wordpress出现下面这个页面:技术分享图片
点击登录,下面使用你刚刚建好的用户:技术分享图片
进入下面这个页面:
技术分享图片
点击撰写一篇文章,然后发布,发布成功,证明共享成功。

以上是关于Linux中Samba与NFS的共享示例的主要内容,如果未能解决你的问题,请参考以下文章

linux 简单记录11 --使用 Samba 或 NFS 实现文件共享

Samba或NFS实现文件共享

linux下实现文件共享:搭建iSCSI服务器(与samba,nfs不同,直接共享设备)

配置SMB共享 配置NFS共享

samba服务及配置

samba服务及配置