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
这个时候,尽量不要把这个目录写成root:mysql,不然实验没法做了(不允许root用户使用nfs)
在客户端创建mysql用户,用户id为27(这是变安装的情况;如果是yum安装,查看mysql的id,之后修改mysql的id为27)
[root@zou data]# /etc/init.d/mysqld stop
Shutting down MySQL. SUCCESS!
[root@zou data]# usermod -u 27 mysql
[root@zou data]# id -u mysql
[root@zou data]# vim /etc/my.cnf
datadir = /mydata/mariadb
user=mysql
group=mysql
[root@zou wordpress]# /etc/init.d/mysqld stop
[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登录的状态下,执行这条命令也是可以的,到时候执行的时候以root:mysql去执行,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一样;权限也给的没有问题,还是会出现这个问题;测试了才发现这个LAMP是php-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(前面的那个方法适合有两个数据库,且泡在各自的服务器上面,现在是只有一个,而且是远程,如果还指向localhost,nfs目录是映射到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上面跑着http和php-fpm(例题3已经上传成功)80和9000端口
在另一个lamp上面是http与php采用模块组合安装的,只有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)和(6)lnmp用这个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‘);
同理在另个服务器上面也是用smb的apache用户用户去挂载登录,之后修改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
原文地址:http://941012521.blog.51cto.com/9253690/1831911