设为首页 收藏本站
查看: 1557|回复: 0

lamp+nfs+Samba实现wordpress博客

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-27 10:50:31 | 显示全部楼层 |阅读模式
1、实验需求:
    1)CentOS 7, nfs+samba, ap, mariadb,
        a) dns ,A记录www.yang.com 分别指向后端的2台web服务器ip地址
        b) nfs+samba, nfs负责为mariadb提供datadir,samba负责为www1和www2提供wordpress
        c) www1,安装httpd2.4, php-mysql, php-fpm, 发布wordpress是共享samba的wordpress目录
        d) www2,安装httpd2.4, php-mysql, php-fpm, 发布wordpress是共享samba的wordpress目录
        e) mariadb,安装mariadb-5.5.46 通用二进制包,datadir是使用nfs共享的mysql_data
            
2、实验环境:
    1)服务器环境
        Linux服务器操作系统版本:CentOS release 6.7 (Final)
         dns)    IP:    172.16.66.50
        lamp)    IP: 172.16.66.60
        lamp)   IP:172.16.66.70
         nfs)   IP:172.16.66.80
     mariadb)    IP: 172.16.66.90
   
    2)测试环境
        WIN7系统客户机):IP:172.16.66.100

3、实验前提:
    1)关闭防火墙和SELinux   
        # service iptables stop
        # sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
        # systemctl stop firewalld.service
        
4、实验过程:


第一部分:
部署主机IP: 172.16.66.50
1. 安装DNS服务器
   
    1.1 安装DNS服务端
# yum install bind -y

    1.2 编辑主配置文件/etc/named.conf
options {
        listen-on port 53 { 172.16.66.50; }; //监听地址和端口   
//      allow-query     { localhost; };
        dnssec-enable no;
        dnssec-validation no;
        recursion yes;                //是否允许递归
   
    1.3 编辑/etc/named.rfc1912.zones   
# sed -n '43,46p' /etc/named.rfc1912.zones  //定义正向区域
zone "yang.com" IN {
    type master;
    file "yang.com.zone";
};

    1.4 建立对应的区域解析库文件(主要记录为A或AAAA记录) 正向
# cat /var/named/yang.com.zone
$TTL 3600                        //域名解析记录在DNS服务器上缓存时间
@     IN     SOA     ns1.yang.com. dnsadmin.yang.com. (
            20160721         //版本号
            1D               //刷新时间,同步时使用
            10M              //重试时间
            3H             //过期时间,定义解析缓存时间
            2D )        //否定答案统一回应时间   
    IN    NS    ns1                //定义ns记录,名称服务器
ns1    IN    A    172.16.66.50       //名称服务器的A记录
www     IN    A    172.16.66.60     //同一主机名指定不同的A记录  
www1    IN    CNAME    www
www     IN    A    172.16.66.70
www2     IN    CNAME    www        //www2的别名设置为www,及客户端访问www1同www
        
    1.5 检查配置文件是否有错误
# named-checkconf

    1.6 检查区域解析库是否有错误
# named-checkzone yang.com /var/named/yang.com.zone

    1.7 修改新建的区域解析库文件属组、属主和权限   
# chgrp named /var/named/yang.com.zone
# chmod o= /var/named/yang.com.zone
   
    1.8 设置named开机启动并启动服务
# chkconfig named on
# service named start
# ss -ntl
   
2 测试dns

    2.1 在主域机器上测试A记录:
# dig -t A www.yang.com @172.16.66.50


第二部分:nfs+samba服务器
部署主机IP: 172.16.66.80

介绍;
nfs-->网络文件系统
    centos支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客服端应用可以透明地读写位于远程NFS服务器上的文件,就想访问本地文件一样。
samba-->Server Messages Block 信息服务块
    SMB协议是客户端/服务器型协议,客服机通过该协议可以访问服务器上的共享文件系统,打印机系统及其它资源。

准备2块磁盘,/dev/sdb/给NFS使用,/dev/sdc/给samba使用

1.准备工作,添加2块新硬盘
   
    1.1 显示当前磁盘分区:
# fdisk -l
   
    1.2 虚拟机开机状态新加硬盘

    1.3    确定主机总线号
# ls /sys/class/scsi_host/host/
host0    host1    host2
   
    1.4    重新扫描SCSI总线来添加设备   
# echo "- - -" > /sys/class/scsi_host/host2/scan

    1.5 验正是否添加成功
# ls /dev/sd*

2.安装lvm2包
   
    2.1 yum安装lvm包
# yum install lvm2 -y

3.nfs设置--使用lvm,以方便mysql的数据目录扩展
   
    3.1 创建分区
# fdisk /dev/sdb

    3.2 让内核重读
# partx  -a /dev/sdb

    3.3 创建物理卷
# pvcreate /dev/sdb1

    3.4 创建卷组,并命名为vg_mysql
# vgcreate vg_mysql /dev/sdb1
   
    3.5 查看卷组
# vgs
vg_mysql   1   0   0 wz--n- 20.00g 20.00g

    3.6 创建逻辑卷,并命名为lv_mysql
# lvcreate -L 10G -n lv_mysql vg_mysql

    3.7 查看逻辑卷
# lvs
lv_mysql vg_mysql -wi-a----- 10.00g
   
    3.8 格式化lv_mysql
# mkfs -t ext4 /dev/vg_mysql/lv_mysql

    3.9 查看lv_mysql的UUID
# blkid /dev/vg_mysql/lv_mysql
/dev/vg_mysql/lv_mysql: UUID="c31d279c-282c-4933-ac42-fd2b7ffbadb4" TYPE="ext4"

    4.10 创建nfs使用的目录
# mkdir /mysql_data
   
    4.11 挂载文件/etc/fstab
# UUID=c31d279c-282c-4933-ac42-fd2b7ffbadb4 /mysql_data     ext4         defaults     0 0
   
    4.12 增加一条记录到/etc/fstab
# mount -a

    4.11 安装nfs包
# yum install nfs-utils rpcbind
   
    4.12 设置nfs的共享资源vim /etc/exports
/mysql_data 172.16.0.0/16(rw,sync,no_root_squash)

    4.13 启动nfs服务
# systemctl start rpcbind
# systemctl start nfs
   
    查看nfs服务器的所有共享资源
# showmount -e     
   
4.samba设置--使用lvm,以方便wordpress的数据目录扩展

    4.1 创建分区/dev/sdc
# fdisk /dev/sdc

    4.2 让内核重读
# partx  -a /dev/sdb

    4.3 创建物理卷
# pvcreate /dev/sdc1

    4.4 创建卷组,并命名为vg_mysql
# vgcreate vg_wordpress /dev/sdc1
   
    4.5 查看卷组
# vgs
vg_wordpress   1   0   0 wz--n- 10.00g 10.00g

    4.6 创建逻辑卷,并命名为lv_mysql
# lvcreate -L 8G -n lv_wordpress vg_wordpress

    4.7 查看逻辑卷
# lvs
lv_wordpress vg_wordpress -wi-a-----  8.00g
   
    4.8 格式化lv_mysql
# mkfs -t ext4 /dev/vg_wordpress/lv_wordpress

    4.9 查看lv_mysql的UUID
# blkid /dev/vg_wordpress/lv_wordpress
/dev/vg_wordpress/lv_wordpress: UUID="772d5597-afcb-47fc-8e9f-d16e29f9aa96" TYPE="ext4"

    5.10 创建samba要共享的目录
# mkdir /wordpress
   
    5.11 挂载文件/etc/fstab
UUID=772d5597-afcb-47fc-8e9f-d16e29f9aa96 /wordpress  ext4     defaults    0 0
   
    5.12 增加一条记录到/etc/fstab
# mount -a
   
    5.13 解压缩wordpress包
# unzip wordpress-4.3.1-zh_CN.zip

    5.14 拷贝wordpress 到 samba共享目录中
# cp -r /tools/wordpress /wordpress/

    5.15 安装samba包
# yum install samba -y

    5.16 编辑samba的配置文件vim /etc/samba/smb.conf 修改如下内容
[global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        interfaces = eno16777736 172.16.66.80/16
        hosts allow = 172.16.66.70 172.16.66.60
        
        security = user
        
        passdb backend = tdbsam
[wordpress]
        comment = web wordpress
        path = /wordpress
        guest ok = yes
        public = yes
        browseable = yes
        
    5.17 创建samba系统用户
# useradd -r wordpress

    5.18 创建samba密码
# smbpasswd -a wordpress
   
    5.19 远程ap测试
# smbclient //172.16.66.80/wordpress -U wordpress

    5.17 将samba服务设置开机启动
# systemctl enable smb
# systemctl enable nmb

    5.20 设置用户权限
# setfacl -m u:wordpress:rwx /wordpress/   

    5.21 设置组权限
# setfacl -m g:wordpress:rwx /wordpress/


第三部分:
部署mariadb主机IP: 172.16.66.90  

0.配置nfs客服端

    0.1 安装nfskefd
# yum install rpcbind -y
   
    0.2 加入开机自启动
# systemctl enable rpcbind

    0.3 查看nfs服务端挂载
# showmount -e 172.16.66.80

    0.4 创建mysql数据目录
# mkdir /mydata -p
   
    0.5 测试挂载nfs服务端
# mount -t nfs 172.16.66.80:/mysql_data /mydata/

    0.6 加入开机自动启动脚本中vim /etc/rc.d/rc.local
mount -t nfs 172.16.66.80:/mysql_data /mydata/

1安装和配置 Mariadb 数据库服务
    1.1 创建存放tools工具目录
# mkdir /tools

    1.2 解压mariadb 到指定目录
# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/

    1.3 创建mysql数据目录
# mkdir -pv /mydata

    1.4 创建mysql系统组
# groupadd -r mysql

    1.5 创建mysql系统用户
# useradd -r -g mysql -s /sbin/nologin -M -d /mydata mysql

    1.6 授权属主属组/mydata
# chown -R mysql.mysql /mydata

    1.7 创建软连接
# ln -sv mariadb-5.5.46-linux-x86_64 mysql

    1.8 授权mysql安装包目录
# chown -R root.mysql ./

    1.9 初始化数据库mariadb
# scripts/mysql_install_db --user=mysql --datadir=/mydata

    1.10 创建mysql配置文件目录
# mkdir /etc/mysql
   
    1.11 拷贝配置文件到指定目录
# cp support-files/my-large.cnf /etc/mysql/my.cnf
   
    1.12 修改配置文件/ect/mysql/my.cnf  在server中添加下面三行
datadir = /mydata
innodb_file_per_table = ON
skip_name_resolve = ON

    1.13 添加mysqld服务到开机自启动
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
   
    1.14 为mysqld执行权限
# chmod +x /etc/rc.d/init.d/mysqld

    1.14 添加到服务列表
# chkconfig --add mysqld

    1.14 添加到开机自动启动
# chkconfig on

    1.15 重命名/etc/my.cnf 为 my.cnf.bak
# mv my.cnf my.cnf.bak

    1.16 添加mysql环境变量/etc/profile.d/myslqd.sh 下
export PATH=/usr/local/mysql/bin:/usr/local/mysql/support-files:$PATH

    1.17 使其mysqld环境变量生效
# source /etc/profile.d/mysqld.sh

    1.18 导入mysqld头文件到usr头文件中
# ln -sv /usr/local/mysql/include /usr/include/mysqld

    1.19 启动mysqld服务
# mysql.server start

    1.20 以查看内存占用情况
# top -u mysql

2.使用 MariaDB 内建的安全配置脚本进行配置

    2.1 执行安全配置脚本进行配置
   
# mysql_secure_installation

    2.2 输入密码后回车,下面是输出示例,可以看到命令提示符变为 MariaDB [(none)]>
# mysql -u root -p

    2.3创建一个新数据库给 WordPress 用(这里取名为 wordpress,也可以用别的名字)
MariaDB [(none)]> create database wordpress;

    2.4创建一个新用户,并将该数据库的权限赋给他(这里只是举例,用户名为 admin,密码为 admin)   
MariaDB [(none)]> grant all on wordpress.* to 'admin'@'172.16.%.%' identified by 'admin';   

    2.5更新权限
MariaDB [(none)]> flush privileges;

    2.6退出数据库
MariaDB [(none)]> quit

    2.7 创建配置文件备份目录
# mkdir ~/confbak

    2.7 备份配置文件
#cp /etc/my.cnf ~/confbak/my.cnf.bak


第四部分
部署ap主机IP: 172.16.66.60

0 基本设置
   
    0.1 设置 httpd 主机名 HOSTNAME
echo "HOSTNAME=www1" >> /etc/sysconfig/network

    0.2 添加DNS 配置文件 /etc/resolv.conf
servicename 172.16.66.50

1.yum包安装ap

    1.1 安装软件包
# yum install httpd php-fpm php-mysql  -y
   
    1.2 检查是否成功安装包
# rpm -qa httpd php-fpm php-mysql

    1.3 启动服务
# systemctl start httpd
# systemctl start php-fpm

    1.4 查看服务是否正常启动
# ss -nlt
# ps aux | grep httpd   
# ps aux | grep php-fpm
               
    1.5 设置开机自动启动
   
# systemctl enable httpd
# systemctl enable php-fpm               

    1.6 检查是否设置成开机自启动
# systemctl is-enabled httpd
# systemctl is-enabled php-fpm

2.配置虚拟主机

    2.1 虚拟主机配置文件www1
# vim /etc/httpd/conf.d/www1.conf
<VirtualHost 172.16.66.60:80>
    Servername www1
    #ServerAlias www   
    DocumentRoot /var/www/html
    ProxyRequests Off
    DirectoryIndex index.php
    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
    ErrorLog  logs/www1-error_log
    CustomLog logs/www1-access_log combiend
    <Directory "/var/www/html">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

    2.2 临时挂载远程samba网站目录
# mount -t cifs //172.16.66.80/wordpress /var/www/html -o username=wordpress,password=liyang

    2.3  挂载添加到本机开机启动脚本中/etc/rc.d/rc.local
mount -t cifs //172.16.66.80/wordpress /var/www/html -o username=wordpress,password=liyang


第五部分
部署ap主机IP: 172.16.66.70

0 基本设置
   
    0.1 设置 httpd 主机名 HOSTNAME
echo "HOSTNAME=www2" >> /etc/sysconfig/network

    0.2 添加DNS 配置文件 /etc/resolv.conf
servicename 172.16.66.50

1.yum包安装ap

    1.1 安装软件包   
# yum install httpd php-fpm php-mysql  -y
   
    1.2 检查是否成功安装包
# rpm -qa httpd php-fpm php-mysql

    1.3 启动服务
# systemctl start httpd
# systemctl start php-fpm

    1.4 查看服务是否正常启动
# ss -nlt
# ps aux | grep httpd   
# ps aux | grep php-fpm
               
    1.5 设置开机自动启动
   
# systemctl enable httpd
# systemctl enable php-fpm               

    1.6 检查是否设置成开机自启动
# systemctl is-enabled httpd
# systemctl is-enabled php-fpm

2.配置虚拟主机
   
    2.1 虚拟主机配置文件www1
vim /etc/httpd/conf.d/www2.conf
<VirtualHost 172.16.66.70:80>
    Servername www2
    #ServerAlias www   
    DocumentRoot /var/www/html
    ProxyRequests Off
    DirectoryIndex index.php
    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
    ErrorLog  logs/www2-error_log
    CustomLog logs/www2-access_log combiend
    <Directory "/var/www/htm2">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

    2.2  临时测试挂载远程samba网站目录
# mount -t cifs //172.16.66.80/wordpress /var/www/html -o username=wordpress,password=liyang

    2.3  挂载添加到本机开机启动脚本中/etc/rc.d/rc.local
mount -t cifs //172.16.66.80/wordpress /var/www/html -o username=wordpress,password=liyang


第六部分


1.测试www1和www2是否能够正常解析www.yang.com,有1个服务器出现问题,另一个服务器还可以正常工作!

    1.1 停掉www1服务器(172.16.66.60)的httpd服务
http://www.yang.com 可以正常访问

    1.2 停掉www2服务器(172.16.66.70)的httpd服务

http://www.yang.com 可以正常访问
--------------------------------------------------------------------------------------------




扩展知识:

samba 权限:

首先需要提醒大家注意的是,samba的权限由两方面构成:一是目录本身的权限,二是samba的配置权限。最终权限定义是两者的最小交集。

OK,我们接着来理解这三种权限:
    一个文件都有一个所有者,表示该文件是谁创建的。
    同时,该文件还有一个组编号,表示该文件所属的组,一般为文件所有者所属的组。
    如果是一个可执行文件,那么在执行时,一般该文件只拥有调用该文件的用户具有的权限。

权限标志通过三个“位”来定义,分别是:
    setuid:设置使文件在执行阶段具有文件所有者的权限。比如/usr/bin/passwd,如果一般用户执行该文件,则在执行过程中,该文件可以获得root权限,从而可以更改用户的密码。
    setgid:该权限只对目录有效。目录被设置该位后,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。
    sticky bit:该位可以理解为防删除位。 一个文件是否可以被某用户删除,主要取决于该文件所属的组是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件。 如果希望用户能够添加文件但同时不能删除文件,则可以对文件使用sticky bit位。设置该位后,就算用户对目录具有写权限也不能删除该文件。

三个权限的特点

Sticky(范例:/tmp目录)

①sticky只能应用在目录上,并且是应用在其它人上。

②只有root和文件的拥有人才能删除该文件。

③小写表示能执行,大写表示不能执行

Suid(范例:/usr/bin/passwd目录)

①suid只能应用在二进制文件中

②当一个文件应用了suid,那么任何人在执行该命令的时候他就临时拥有该文件拥有人的权限

③suid只能应用在文件的拥有人上

④小写表示能执行,大写表示不能执行

Sgid(应用环境为用于一组开发人员共用资源,保证安全)

①sgid既可以应用在文件上,也可以应用在目录上

②当sgid应用在目录上时,任何人在该目录中建立健全的文件和目录的拥有者属于目录所属组

③应用在拥有组上

④sgid应用在文件上时,任何人在执行该文件时,临时拥有该文件所属组权限

⑤小写表示可执行,大写反之。
如何操作这些标志

操作这些标志与操作文件权限的命令是一样的, 都是 chmod。有两种方法来操作:

① chmod u+s temp -- 为temp文件加上setuid标志。 (setuid 只对文件有效)

chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 对目录和文件有效)

chmod o+t temp   -- 为temp文件加上sticky标志 (sticky只对文件有效)

② 采用八进制方式。对一般文件通过三组八进制数字来置标志,如 666,777,644等。如果设置这些特殊标志,则在这组数字之外外加一组八进制数字,如4666,2777等。这一组八进制数字三位的意义如下,

abc

a - setuid位。如果该位为1,则表示设置setuid

b - setgid位。如果该位为1,则表示设置setgid

c - sticky位。如果该位为1,则表示设置sticky

我习惯用第一种方法来做,但许多时候文件的权限表示都是用数字为执行;所以,建议两种方法都要掌握熟悉。

设置完这些标志后, 可以用 ls -l 来查看。 如果有这些标志,则会在原来的执行标志位置上显示。 如

rwsrw-r-- 表示有setuid标志

rwxrwsrw- 表示有setgid标志

rwxrw-rwt 表示有sticky标志

那么原来的执行标志x到哪里去了呢?系统是这样规定的,如果本来在该位上有x,则这些特殊标志显示为小写字母 (s, s, t)。否则, 显示为大写字母 (S, S, T)

这三个权限的数字位可以这么理解,这是我的理解和记忆参考法,仅供大家参考学习

[iyunv@server3 test]# 1 1 1
[iyunv@server3 test]# rws rws rwt
[iyunv@server3 test]#
[iyunv@server3 test]# SUID SGID Sticky

所以,可以得出

chmod 4777是设sid

chmod 2777是设置gid

chmod 1777是设sticky

最后,介绍两个常用操作。
常用操作

找出所有危险的目录(设置目录所有人可读写却没有设置sticky位的目录)

find / -perm -0007 -type d

找出所有设置了suid的文件

find / -perm -4000 -type f

找出所有设置了sgid的文件

find / -perm -2000 -type d

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-250187-1-1.html 上篇帖子: LAMP环境搭建(CentOS7+Apache24+Mysql5.7+PHP7.0.9) 下篇帖子: Samba+lamp完成指定任务 wordpress 博客
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表