首先我們來闡述下觀點:
<a target="_blank" href="http://blog.51cto.com/attachment/201304/225552272.png"></a>
如圖:當使用者通路虛拟機2的時候,可以通路到通過NFS挂載到本地的DISCUZ論壇,其中的資料儲存在虛拟機1中,以此來保證論壇内容改變的時候虛拟機2通路的資料跟随改變,即資料的統一性。這一切都要通過NFS服務來實作。
步驟:
1、先在虛拟機1中搭建完整的LAMP服務并安裝DISCUZ論壇。
2、在虛拟機2中搭建LAP服務
3、将DISCUZ論壇目錄通過NFS挂載到虛拟機2中,使虛拟機2可以實作論壇的通路并為論壇添加資料。是以虛拟機2隻需要搭建LAP服務即可。
PS:其中虛拟機1位址為172.16.111.1,虛拟機2位址為172.16.111.2
<b>前提:</b>
<b>另外需要檢視selinux</b><b>是否開啟。同樣可參照上邊部落格中的方法來實作關閉selinux</b>
[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0
Permissive
//當然。這裡也需要到vim /etc/selinux/config将其中的SELINUX=enforcing替換為SELINUX=permissive
編譯配置主伺服器(虛拟機1)的LAMP:
<b>一、編譯安裝apache</b>
<b> </b>注意:事先把<b>httpd-2.4.3.tar</b><b>,apr-util-1.4.1.tar</b><b>,apr-1.4.6.tar </b>這三個包放到/usr/local/src/目錄中,方法具體不在介紹xshell與window界面拖拽。另外需要注意的是,要将虛拟機裡linux的時間做同步。--hwclock -s
<b>1</b><b>、</b><b>解決依賴關系</b>
(1) 編譯安裝apr
[root@localhost src]# ls
apr-1.4.6.tar.bz2 apr-util-1.4.1.tar.bz2 httpd-2.4.3.tar.bz2
[root@localhost src]# tar xf apr-1.4.6.tar.bz2
[root@localhost src]# cd apr-1.4.6
[root@localhost apr-1.4.6]# ./configure --prefix=/usr/local/apr // prefix指定路徑
[root@localhost apr-1.4.6] # make && make install //這裡稍微簡略了下步驟
//這個時候,apr已經安裝好了 。然後去安裝apr-util
(2) 編譯安裝apr-util
[root@localhost apr-1.4.6]# cd ..
[root@localhost src]# tar xf apr-util-1.4.1.tar.bz2
[root@localhost src]# cd apr-util-1.4.1
[root@localhost apr-util-1.4.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr //-with-apr告訴其apr的路徑
[root@localhost apr-util-1.4.1]# make
[root@localhost apr-util-1.4.1]# make install
(3) httpd-2.4.3編譯過程也要依賴于pcre-devel軟體包,需要事先安裝。此軟體包系統CD光牒自帶,是以,找到并安裝即可。
[root@localhost apr-util-1.4.1]# cd ..
[root@localhost src]# yum install pcre-devel
<b> </b><b>2</b><b>、編譯安裝httpd-2.4.3</b>
[root@localhost src]# tar xf httpd-2.4.3.tar.bz2
[root@localhost src]# cd httpd-2.4.3
[root@localhost httpd-2.4.3]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --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-mpms-shared=all --with-mpm=event //mpm=even預設使用event
[root@localhost httpd-2.4.3]# make
[root@localhost httpd-2.4.3]# make install
3、修改httpd的主配置檔案,設定其Pid檔案的路徑
[root@localhost src]# vim /etc/httpd/httpd.conf
//添加如下内容
PidFile "/var/run/httpd.pid"
4、提供SysV服務腳本/etc/rc.d/init.d/httpd,内容如下:
[root@localhost src]# cd /etc/rc.d/init.d/
[root@localhost init.d]# vim httpd
#!/bin/bash
#
# httpd Startup script for the Apache HTTP Server
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid
# Source function library.
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi
# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}
# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""
# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
start() {
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d 10 $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
reload() {
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
killproc -p ${pidfile} $httpd -HUP
fi
echo
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
status)
status -p ${pidfile} $httpd
restart)
condrestart)
if [ -f ${pidfile} ] ; then
stop
start
fi
reload)
reload
graceful|help|configtest|fullstatus)
$apachectl $@
*)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
exit 1
esac
exit $RETVAL
//而後為此腳本賦予執行權限:
[root@localhost init.d]# chmod +x httpd
[root@localhost init.d]# chkconfig --level 35 httpd on //設定運作級别
[root@localhost init.d]# chkconfig --list httpd
httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
//下面的步驟可忽略,這裡隻是可以設定為bash可以直接執行
[root@localhost init.d]# vim /etv/profile.d/httpd.sh
//添加
#/bin/bash
export PATH=$PATH:/usr/local/apache/bin
[root@localhost init.d]# export PATH=$PATH:/usr/local/apache/bin
這個時候就可以驗證下httpd服務了。
然後打開浏覽器,輸入172.16.111.1就可以檢視工作網頁了。
其網頁檔案在/usr/local/apache/htdocs/中的index.html中,可以修改其中的内容對網頁内容進行修改。
<a target="_blank" href="http://blog.51cto.com/attachment/201304/231708947.png"></a>
<b>二、安裝mysql-5.5.28</b>
前提:這裡使用mysql-5.5.28-linux2.6-tar,提前下載下傳放入linux中
<b><b>1<b>、準備資料存放的檔案系統</b></b></b> <b> </b>
建立一個邏輯卷,這裡假設其邏輯卷的挂載目錄為/mydata,而後需要建立/mydata/data目錄做為mysql資料的存放目錄。
[root@localhost init.d]# fdisk /dev/sda
//其中過程省略。。
[root@localhost init.d]# partprobe /dev/sda
//建立邏輯卷
[root@localhost init.d]# pvcreate /dev/sda5
Writing physical volume data to disk "/dev/sda5"
Physical volume "/dev/sda5" successfully created
[root@localhost init.d]# vgcreate myvg /dev/sda5
Volume group "myvg" successfully created
[root@localhost init.d]# lvcreate -n mydata -L 5G myvg
Logical volume "mydata" created
[root@localhost init.d]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
mydata myvg -wi-a- 5.00G
lvtext vgtext -wi-a- 1.00G
home vol0 -wi-ao 4.88G
root vol0 -wi-ao 29.28G
[root@localhost init.d]# mke2fs -j /dev/myvg/mydata
//設定開機挂載
[root@localhost ~]# mkdir /mydata
[root@localhost ~]# vim /etc/fstab
/dev/myvg/mydata /mydata ext3 defaults 0 0
[root@localhost ~]# mount –a //重新挂載
[root@localhost ~]# mkdir /mydata/data //作為資料的挂載目錄
<b>2</b><b>、建立使用者以安全方式運作程序:</b>
//建立使用者
[root@localhost ~]# groupadd -r mysql
[root@localhost ~]# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
[root@localhost ~]# chown -R mysql:mysql /mydata/data
<b>3</b><b>、</b><b>安裝并初始化mysql-5.5.28</b>
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# tar xf mysql-5.5.28-linux2.6-i686.tar.gz
[root@localhost src]# cd ..
[root@localhost local]# pwd
/usr/local
[root@localhost local]# ln -sv /usr/local/src/mysql-5.5.28-linux2.6-i686 mysql
create symbolic link `mysql' to `/usr/local/src/mysql-5.5.28-linux2.6-i686'
[root@localhost local]# cd mysql
[root@localhost mysql]# chown -R mysql:mysql .
[root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
Installing MySQL system tables...
[root@localhost mysql]#
<b> 4</b><b>、</b><b>為mysql</b><b>提供主配置檔案:</b>
[root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf
[root@localhost mysql]# vim /etc/my.cnf
//并修改此檔案中thread_concurrency的值為你的CPU個數乘以2,比如這裡使用如下行:
thread_concurrency = 2
//另外還需要添加如下行指定mysql資料檔案的存放位置:
datadir = /mydata/data //添加此行指定mysql資料檔案的存放位置
<b>5</b><b>、為mysql</b><b>提供sysv</b><b>服務腳本:</b>
[root@localhost mysql]# pwd
/usr/local/mysql
[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
而後就可以啟動服務測試使用了。
為了使用mysql的安裝符合系統使用規範,并将其開發元件導出給系統使用,這裡還需要進行如下步驟:
<b>6</b><b>、</b><b>輸出mysql</b><b>的man</b><b>手冊至man</b><b>指令的查找路徑:</b>
[root@localhost mysql]# vim /etc/man.config
#####################mysql#############
MANPATH /usr/local/mysql/man
<b>7</b><b>、</b><b>輸出mysql</b><b>的頭檔案至系統頭檔案路徑/usr/include</b><b>:</b>
這可以通過簡單的建立連結實作:
[root@localhost mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql
create symbolic link `/usr/include/mysql' to `/usr/local/mysql/include'
<b>8</b><b>、</b><b>輸出mysql</b><b>的庫檔案給系統庫查找路徑:</b>
[root@localhost ld.so.conf.d]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
<b> </b><b>9</b><b>、修改PATH</b><b>環境變量,讓系統可以直接使用mysql</b><b>的相關指令。</b>
[root@localhost ld.so.conf.d]# vim /etc/profile //需要重讀或重新開機或重新登入
PATH=$PATH:/usr/local/mysql/bin
//另外export PATH=$PATH:/usr/local/mysql/bin 也可以起到上邊的效果
PS:這個時候。就可以進入資料庫建立表之類的東西了!
圖檔僅為連接配接的測試:
<a target="_blank" href="http://blog.51cto.com/attachment/201304/231918121.png"></a>
<b>三、編譯安裝php-5.4.13</b>
<b> </b><b>1</b><b>、解決依賴關系:</b>
請配置好yum源(可以是本地系統CD光牒)後執行如下指令:
[root@localhost ~]# yum -y groupinstall "X Software Development"
如果想讓編譯的php支援mcrypt擴充,此處還需要下載下傳如下兩個rpm包并安裝之:
libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
mhash-0.9.2-6.el5.i386
mhash-devel-0.9.2-6.el5.i386
<a target="_blank" href="http://blog.51cto.com/attachment/201304/232016492.png"></a>
<b>2、編譯安裝php-5.4.13</b>
将下載下傳好的安裝包放到linux的src中(過程同上)
[root@localhost src]# tar xf php-5.4.13.tar.bz2
[root@localhost php-5.4.13]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
//說明:
--prefix=/usr/local/php:php安裝路徑
--with-mysql=/usr/local/mysql:mysql安裝路徑
--with-openssl:支援openssl功能
--with-mysqli=/usr/local/mysql/bin/mysql_config:mysql與apache通路的另一種接口,安裝在二進制目錄下
--enable-mbstring:多位元組string
--with-freetype-dir:安裝的字型庫頭檔案
--with-jpeg-dir:jpeg類型的庫
--with-png-dir:png類型的庫
--with-zlib:網際網路上通用壓縮庫,先壓縮再傳送,減少帶寬
--with-libxml-dir=/usr:xml庫檔案的路徑
--enable-xml:支援xml功能
--enable-sockets:php支援套接字功能 --with-apxs2=/usr/local/apache/bin/apxs:基于apxs實作讓php編譯成apache子產品
--with-mcrypt:支援額外的加密庫
--with-config-file-path=/etc:php配置檔案放置路徑
--with-config-file-scan-dir=/etc/php.d :php配置檔案的分段檔案放置路徑
--with-bz2 :壓縮庫
--enable-maintainer-zts:當apache使用worker或event這兩個MPM,編譯時使用該選項
[root@localhost php-5.4.13]# make
[root@localhost php-5.4.13]# make test
[root@localhost php-5.4.13]# make install
為php提供配置檔案:
[root@localhost php-5.4.13]# cp php.ini-production /etc/php.ini
//php包中提供了配置檔案,把配置檔案重命名為/etc/php.ini,php的配置檔案字尾名是以.ini結尾
<b>3</b><b>、 </b><b>編輯apache</b><b>配置檔案httpd.conf</b><b>,以apache</b><b>支援php</b>
[root@localhost php-5.4.8]# vim /etc/httpd/httpd.conf
1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
//能夠讓APACHE處理PHP結尾的檔案
2、定位至DirectoryIndex index.html
修改為:
DirectoryIndex index.php index.html
//能讓目錄索引處理php結尾的頁面檔案。在配置檔案中可以根據自己安裝内容啟動相對子產品。比如:SSL子產品等。
[root@localhost php-5.4.13]#cd /usr/local/apache/htdocs/ //進入apache頁面目錄下,把預設頁面修改為php頁面檔案
[root@localhost php-5.4.13]#mv index.html index.php
[root@localhost php-5.4.13]#vim index.php
<html><body><h1>It works! doubao’s test page</h1></body></html>
<?php
phpinfo();
?>
:wq
//儲存退出
[root@localhost htdocs]# service httpd restart //重新開機
//發起php頁面測試
//生成的測試頁面内容對我們還是會有幫助,可以留意一下裡面的内容
<a target="_blank" href="http://blog.51cto.com/attachment/201304/232118990.png"></a>
<b>4、 php</b><b>和mysql結合,在index.php頁面檔案中修改一下内容</b>
<html><body><h1>It works! my test page</h1></body></html>
$conn=mysql_connect('localhost','root','');
if ($conn)
echo "<h2>Success...</h2>";
else
echo "<h2>Failure...</h2>";
//儲存退出然後
[root@localhost htdocs]# service httpd restart //重新開機網絡服務
<b> </b>
<a target="_blank" href="http://blog.51cto.com/attachment/201304/232210451.png"></a>
到這裡,一個linux+apache+mysql+php的LAMP已經搭建好了。
<b>四、搭建DISCUZ</b><b>論壇</b>
1、事先将準備好的DISCUZ壓縮包放入linux中,做前提準備工作
[root@localhost ~]# vim /etc/httpd/httpd.conf #指定網頁存放目錄
#DocumentRoot "/usr/local/apache/htdocs"
DocumentRoot "/www/a.org"
#<Directory "/usr/local/apache/htdocs">
<Directory "/www/a.org">
[root@localhost discuz]# cd /usr/local/src/discuz/
[root@localhost discuz]# unzip Discuz_X2.5_SC_GBK.zip #解壓軟體包
[root@localhost discuz]# mv ./upload/* /www/a.org/ #将解壓後的檔案放到網頁目錄中
[root@localhost discuz]# mysqladmin -uroot -p password 'redhat' #為資料庫添加密碼
登入資料庫為root使用者添加遠端權限
mysql> grant all privileges on *.* to root@'%' identified by 'redhat';
Query OK, 0 rows affected (0.30 sec)
2、安裝DISCUZ論壇
打開IE輸入虛拟機1位址:172.16.111.1進行DISCUZ向導安裝,
<a target="_blank" href="http://blog.51cto.com/attachment/201304/232234561.png"></a>
然後第二部的時候為他們增加讀寫權限:
<a target="_blank" href="http://blog.51cto.com/attachment/201304/232249234.png"></a>
[root@localhost discuz]# cd /www/a.org/
[root@localhost a.org]# mkdir ./config/config_global.php
[root@localhost a.org]# mkdir ./config/config_ucenter.php
[root@localhost a.org]# chmod o+rw ./config/*
[root@localhost a.org]# chmod o+rw ./data
[root@localhost a.org]# chmod o+rw ./data/cache
[root@localhost a.org]# chmod o+rw ./data/avatar
[root@localhost a.org]# chmod o+rw ./data/plugindata
[root@localhost a.org]# chmod o+rw ./data/download
[root@localhost a.org]# chmod o+rw ./data/addonmd5
[root@localhost a.org]# chmod o+rw ./data/template
[root@localhost a.org]# chmod o+rw ./data/threadcache
[root@localhost a.org]# chmod o+rw ./data/attachment
[root@localhost a.org]# chmod o+rw ./data/attachment/album
[root@localhost a.org]# chmod o+rw ./data/attachment/forum
[root@localhost a.org]# chmod o+rw ./data/attachment/group
[root@localhost a.org]# chmod o+rw ./data/log
[root@localhost a.org]# chmod o+rw ./uc_client/data/cache
[root@localhost a.org]# chmod o+rw ./uc_server/data
[root@localhost a.org]# chmod o+rw ./uc_server/data/cache
[root@localhost a.org]# chmod o+rw ./uc_server/data/avatar
[root@localhost a.org]# chmod o+rw ./uc_server/data/backup
[root@localhost a.org]# chmod o+rw ./uc_server/data/logs
[root@localhost a.org]# chmod o+rw ./uc_server/data/tmp
[root@localhost a.org]# chmod o+rw ./uc_server/data/view
然後繼續進行下一步安裝
<a target="_blank" href="http://blog.51cto.com/attachment/201304/232315724.png"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201304/232328720.png"></a>
這時。第一步已經Ok,然後來做第二步。
為虛拟機2搭建LAP服務
(參照上邊的步驟一)
<b>二、編譯安裝php-5.4.13</b>
(參照上邊的步驟二)
這裡需要注意的是,在編譯安裝php5.4.13時,由于沒有安裝MySQL,這裡需要更改.config為:
./configure --prefix=/usr/local/php --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
搭建好以後打開浏覽器測試下,網頁是否能夠正常開啟!
<a target="_blank" href="http://blog.51cto.com/attachment/201304/232409665.png"></a>
安裝NFS服務,共享檔案
首先回到虛拟機1
[root@localhost config]# service portmap status
portmap (pid 2958) is running...
//檢視下此服務是否在運作中,因為NFS服務要在這個服務的基礎上才能開啟
[root@localhost config]# service nfs start //開始NFS服務
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
PS:這個時候可以# rpcinfo -p localhost 檢視所有rpc程序所監聽的端口
[root@localhost config]# vim /etc/exports
/www/a.org 172.16.0.0/16(rw,no_root_squash)
###no_root_squash: 不将root使用者映射為來賓賬戶為了讓虛拟機2可以讀寫
:wq
[root@localhost config]# exportfs –ra
//切記!!!要重新導出!!!
然後回到虛拟機2:
[root@localhost htdocs]# mount -t nfs 172.16.111.1:/www/a.org /usr/local/apache/htdocs/
###用戶端使用mount指令挂載
當然這裡也可以将其設為開機自動挂在:
[root@localhost htdocs]# vim /etc/fstab
172.16.111.1:/www/a.org /usr/local/apache/htdocs nfs defaults,_rnetdev 0 0
#######_rnetdev:設定開機自動挂載時,能挂載就挂載,不能挂載就算了
測試:
這裡不再做具體示範。提示:輸入172.16.111.1或者172.16.111.2。在兩個網頁上各注冊一個新的賬号來進行發帖操作,看看發帖之後對方是否能夠即時看到文章,是否為同步。
本文轉自 陳延宗 51CTO部落格,原文連結:http://blog.51cto.com/407711169/1188711,如需轉載請自行聯系原作者