擴展實驗:LAMP+NFS

 

 

拓撲圖

clip_image001

Http server1 172.20.10

http server2 172.20.1.11

mariadb\NFS 172.20.1.12

效果:客戶機在使用IP分別訪問server1 和 server2,使用相同的賬號、密碼,看到帖子的內容完全一樣,上傳的附件在兩臺server中完全一致。

實施過程:

在http server 1、2中安裝Apache、php,兩臺機的過程一樣,則不重複列出過程

172.20.1.10安裝Apache和php

編譯安裝Apache2.4版本,事先安裝一些開發包組

[root@localhost linux software]# yum groupinstall -y "Development Tools" "Server Platform Development"

安裝順序:apr à apr-util à httpd2.4

apr-1.5.0.tar.bz2

apr-util-1.5.3.tar.bz2

[root@localhost linux software]# tar -xf apr-1.5.0.tar.bz2

[root@localhost linux software]# cd apr-1.5.0

[root@localhost apr-1.5.0]# ./configure --prefix=/usr/local/apr

[root@localhost apr-1.5.0]# make && make install

[root@localhost software]# tar xf apr-util-1.5.3.tar.bz2

[root@localhost software]# cd apr-util-1.5.3

[root@localhost apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

[root@localhost software]# yum install -y pcre-devel zlib-devel openssl-devel

[root@localhost software]# tar xf httpd-2.4.20.tar.bz2

[root@localhost software]# tar xf httpd-2.4.20.tar.bz2

[root@localhost software]# cd httpd-2.4.20

[root@localhost httpd-2.4.20]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-module=most --enable-mpms-shared=all --with-mpm=prefork

[root@localhost httpd-2.4.20]# make && make install

[root@localhost ~]# vim /etc/profile.d/httpd.sh

export PATH=/usr/local/apache/bin:$PATH

[root@localhost ~]# source /etc/profile.d/httpd.sh

[root@localhost ~]# cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24 #如果有的話複製,沒有的話就下載或者從別的地方copy一個即可

[root@localhost ~]# vim /etc/rc.d/init.d/httpd24

主要修改:

apachectl=/usr/local/apache/bin/apachectl

httpd=${HTTPD-/usr/local/apache/bin/httpd}

pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}

另外在/etc/httpd24/httpd.conf中也要修改

User apache

Group apache

DocumentRoot 後面會再次提到,根據NFS共享路徑來修改

安裝PHP

[root@localhost software]# tar -xf php-5.4.26.tar.bz2

[root@localhost software]# cd php-5.4.26

[root@localhost php-5.4.26]# yum install -y libxml2-devel libcrypt-devel bzip2-devel libmcrypt-devel #如果仍有報錯,則根據錯誤安裝依賴的軟件即可

[root@localhost php-5.4.26]# ./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-apxs2=/usr/local/apache/bin/apxs --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-mcrypt --with-bz2 --with-config-file-path=/etc/php/php.ini --with-config-file-scan-dir=/etc/php.d/

[root@localhost php-5.4.26]# make && make install

[root@localhost php-5.4.26]# cp php.ini-production /etc/php/php.ini

[root@localhost php-5.4.26]# vim /etc/httpd24/httpd.conf

AddType application/x-httpd-php .php #增加

AddType application/x-httpd-php-source .phps #增加

DirectoryIndex index.php index.html #增加index.php

MariaDB(172.20.1.12)

[root@localhost ~]# tar xf mariadb-5.5.40-linux-x86_64.tar.gz

[root@localhost ~]# mv mariadb-5.5.40-linux-x86_64 /usr/local/mysql

[root@localhost ~]# id mysql

id: mysql: No such user

[root@localhost ~]# groupadd -r mysql

[root@localhost ~]# useradd -r -g mysql mysql

[root@localhost ~]# chown -R root:mysql /usr/local/mysql/*

[root@localhost ~]# mkdir -pv /data/sqldata

mkdir: created directory `/data'

mkdir: created directory `/data/sqldata'

[root@localhost ~]# chown -R mysql:mysql /data/sqldata/

[root@localhost ~]# mkdir /etc/mysql

[root@localhost ~]# cd /usr/local/mysql/

[root@localhost mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf

[root@localhost mysql]# cp scripts/mysql_install_db . #執行報錯缺少文件,複製到上一目錄

[root@localhost mysql]# ./mysql_install_db --user=mysql --datadir=/data/sqldata/

[root@localhost mysql]# vim /etc/mysql/my.cnf #修改配置文件[mysqld]模塊下

thread_concurrency = 4 #CPU核數*2

datadir = /data/sqldata #增加

innodb_file_per_table = on #增加

[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld

[root@localhost mysql]# chkconfig --add mysqld

[root@localhost mysql]# chkconfig mysqld on

[root@localhost mysql]# service mysqld start

[root@localhost mysql]# vim /etc/profile.d/mysql.sh

export PATH=/usr/local/mysql/bin:$PATH

[root@localhost mysql]# source /etc/profile.d/mysql.sh

啓動並進入mysql,創建一個給discuz使用的庫,並授權一個遠程用戶

MariaDB [(none)]> CREATE DATABASE discuz;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON discuz.* TO 'bbsuser'@'%' IDENTIFIED BY '123456';

Query OK, 0 rows affected (0.00 sec)

NFS(172.20.1.12)

[root@localhost ~]# mkdir /share

[root@localhost ~]# cp Discuz_X3.2_SC_GBK.zip /share/

[root@localhost ~]# id apache

uid=48(apache) gid=48(apache) groups=48(apache) #正好三臺機器上都存在apache用戶,並且其UID GID都是一樣的(UID GID很重要,必須要一致)

[root@localhost ~]# setfacl -R -m u:apache:rwx /share

[root@localhost ~]# setfacl -R -m g:apache:rwx /share

[root@localhost ~]# getfacl /share/

getfacl: Removing leading '/' from absolute path names

# file: share/

# owner: root

# group: root

user::rwx

user:apache:rwx

group::r-x

group:apache:rwx

mask::rwx

other::r-x

[root@localhost ~]# vim /etc/exports

/share 172.20.1.0/24(rw,all_squash,anonuid=48,anongid=48)

[root@localhost ~]# service nfs start

在172.20.1.10上手動掛載測試一下,172.20.1.11上所有操作跟1.10上一樣即可

[root@localhost ~]# mkdir -pv /var/www/webroot

mkdir: created directory `/var/www/webroot'

[root@localhost ~]# mount -t nfs 172.20.1.12:/share /var/www/webroot/

[root@localhost ~]# mount

/dev/sda5 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

/dev/sda2 on /home type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

172.20.1.12:/share on /var/www/webroot type nfs (rw,vers=4,addr=172.20.1.12,clientaddr=172.20.1.10)

解壓出nfs共享裏的discuz安裝包

[root@localhost webroot]# unzip Discuz_X3.2_SC_GBK.zip

[root@localhost webroot]# ll

total 12120

-rw-rwxr-- 1 root root 12395897 Aug 12 2016 Discuz_X3.2_SC_GBK.zip

drwxr-xr-x 2 apache apache 4096 May 31 2016 readme

drwxr-xr-x 12 apache apache 4096 May 31 2016 upload

drwxr-xr-x 4 apache apache 4096 May 31 2016 utility

##雖然使用的root,但是屬主和屬組都是apache的身份

[root@localhost webroot]# mv upload/* .

將upload下的文件放到DocumentRoot設定的路徑下

[root@localhost webroot]# vim /etc/fstab

172.20.1.12:/share /var/www/webroot nfs defaults,_netdev 0 0

#讓nfs共享開機能夠自動掛載

[root@localhost webroot]# vim /etc/httpd24/httpd.conf

DocumentRoot "/var/www/webroot "

<Directory "/var/www/webroot ">

options Indexes FollowSymLinks #根據實際情況修改,試驗情況下無所謂了

AllowOverride None

Require all granted

</Directory>

#註釋或者修改原來的DocumentRoot路徑

網頁打開安裝discuz

http://172.20.1.10/install

clip_image003

clip_image005

clip_image007

clip_image009

clip_image011

到另外一臺機器上驗證

clip_image013

上傳的附件以及圖片完全一致

172.20.1.10與172.20.1.11兩臺機的操作完全一致,重點在與nfs服務器的共享目錄權限,匿名id與啓動Apache服務用戶的id一致,即rw,all_squash,anonuid=48,anongid=48,Nfs共享出來的目錄可以修改其屬主屬組或者setfacl賦予權限(uid/gid 48)。

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