lamp+nfs+Samba實現wordpress博客

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)

這三個權限的數字位可以這麼理解,這是我的理解和記憶參考法,僅供大家參考學習

[root@server3 test]# 1 1 1
[root@server3 test]# rws rws rwt
[root@server3 test]#
[root@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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章