如何輕鬆搭建基於NFS的雙LAMP伺服器的個人論壇
輕鬆構建基於NFS的雙LAMP伺服器
一、準備工作
1、事先準備好安裝編譯時所需的軟體,兩臺虛擬機器。軟體如下:apr、apr-util、pcre-devel、httpd-2.4.4、mysql-5.5.28、php-5.4.13、X Software Development、libmcrypt、libmcrypt-devel、mhash-devel、mhash、xcache。
2、虛擬機器的編譯環境要一致Development Libraries、Development Tools都需要安裝。主伺服器的地址為172.16.12.22,輔助伺服器的地址為172.16.12.23
二、編譯安裝apache
1、解決依賴關係
httpd-2.4.4需要較新版本的apr和apr-util,因此需要事先對其進行升級。升級方式有兩種,一種是通過原始碼編譯安裝,一種是直接升級rpm包。這裡選擇使用編譯原始碼的方式進行。
(1) 編譯安裝apr
- #tarxfapr-1.4.6.tar.bz2
- #cdapr-1.4.6
- #./configure--prefix=/usr/local/apr
- #make&&makeinstall
(2) 編譯安裝apr-util
- #tarxfapr-util-1.5.2.tar.bz2
- #cdapr-util-1.5.2
- #./configure--prefix=/usr/local/apr-util--with-apr=/usr/local/apr
- #make&&makeinstall
(3) httpd-2.4.4編譯過程也要依賴於pcre-devel軟體包,需要事先安裝。此軟體包系統光碟自帶,因此,找到並安裝即可。
2、編譯安裝httpd-2.4.4
- #tarxfhttpd-2.4.4.tar.bz2
- #cdhttpd-2.4.4
- #./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
- #make&&makeinstall
注:請確保你的SELinux是關閉的,因為httpd服務受到SELinux的管控,這裡會有影響。
3、修改httpd的主配置檔案,設定其Pid檔案的路徑
編輯/etc/httpd/httpd.conf,新增如下行即可:
PidFile "/var/run/httpd.pid"
4、提供SysV服務指令碼/etc/rc.d/init.d/httpd,內容如下:
- #!/bin/bash
- #
- #httpdStartupscriptfortheApacheHTTPServer
- #
- #chkconfig:-8515
- #description:ApacheisaWorldWideWebserver.Itisusedtoserve\
- #HTMLfilesandCGI.
- #processname:httpd
- #config:/etc/httpd/conf/httpd.conf
- #config:/etc/sysconfig/httpd
- #pidfile:/var/run/httpd.pid
- #Sourcefunctionlibrary.
- ./etc/rc.d/init.d/functions
- if[-f/etc/sysconfig/httpd];then
- ./etc/sysconfig/httpd
- fi
- #StarthttpdintheClocalebydefault.
- HTTPD_LANG=${HTTPD_LANG-"C"}
- #Thiswillpreventinitlogfromswallowingupapass-phrasepromptif
- #mod_sslneedsapass-phrasefromtheuser.
- INITLOG_ARGS=""
- #SetHTTPD=/usr/sbin/httpd.workerin/etc/sysconfig/httpdtouseaserver
- #withthethread-based"worker"MPM;BEWARNEDthatsomemodulesmaynot
- #workcorrectlywithathread-basedMPM;notablyPHPwillrefusetostart.
- #Pathtotheapachectlscript,serverbinary,andshort-formformessages.
- 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_LANGdaemon--pidfile=${pidfile}$httpd$OPTIONS
- RETVAL=$?
- echo
- [$RETVAL=0]&&touch${lockfile}
- return$RETVAL
- }
- stop(){
- echo-n$"Stopping$prog:"
- killproc-p${pidfile}-d10$httpd
- RETVAL=$?
- echo
- [$RETVAL=0]&&rm-f${lockfile}${pidfile}
- }
- reload(){
- echo-n$"Reloading$prog:"
- if!LANG=$HTTPD_LANG$httpd$OPTIONS-t>&/dev/null;then
- RETVAL=$?
- echo$"notreloadingduetoconfigurationsyntaxerror"
- failure$"notreloading$httpdduetoconfigurationsyntaxerror"
- else
- killproc-p${pidfile}$httpd-HUP
- RETVAL=$?
- fi
- echo
- }
- #Seehowwewerecalled.
- case"$1"in
- start)
- start
- ;;
- stop)
- stop
- ;;
- status)
- status-p${pidfile}$httpd
- RETVAL=$?
- ;;
- restart)
- stop
- start
- ;;
- condrestart)
- if[-f${pidfile}];then
- stop
- start
- fi
- ;;
- reload)
- reload
- ;;
- graceful|help|configtest|fullstatus)
- $apachectl[email protected]
- RETVAL=$?
- ;;
- *)
- echo$"Usage:$prog{start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
- exit1
- esac
- exit$RETVAL
- 而後為此指令碼賦予執行許可權:
- #chmod+x/etc/rc.d/init.d/httpd
- 加入服務列表:
- #chkconfig--addhttpd
- #chkconfig--level35httpdon
- #servicehttpdrestart
- 將httpd服務命令新增到環境變數中去:
- #vim/etc/profile.d/httpd.sh
- exportPATH=$PATH:/usr/local/apache/bin
接下來就可以啟動服務進行測試了。
三、安裝mysql-5.6.10
1、準備資料存放的檔案系統
新建一個邏輯卷,並將其掛載至特定目錄即可。
這裡我們設定其邏輯卷的掛載目錄為/mydata,而後需要建立/mydata/data目錄做為mysql資料的存放目錄。
- #fdisk/dev/sda#建立一個20G的分割槽
- #partprobe/dev/sda#重新整理重讀
- #pvcreate/dev/sda6#建立PV
- #vgcreatemyvg/dev/sda6#建立VG
- #lvcreate-nmydata-L5Gmyvg#建立LV
- #mke2fs-j/dev/myvg/mydata#格式化為ext3
- #mkdir/mydata-pv#建立掛載點
- #vim/etc/fstab#修改為開機掛載
- #mount-a#掛載至掛載點
- #mkdir/mydata/data#建立一個數據儲存目錄
- #chown-Rmysql.mysql/mydata/data/#修改儲存目錄的屬主屬組
- #chmodo-rx/mydata/data/#修改其他使用者的讀寫許可權
2、新建使用者以安全方式執行程序:
- #groupadd-r-g306mysql
- #useradd-g306-r-u306mysql
- #chown-Rmysql.mysql/usr/local/mysql/*#修改安裝檔案的屬主屬組
- #chown-Rmysql:mysql/mydata/data
3、安裝並初始化mysql-5.5.28
- #tarxfmysql-5.5.28-linux2.6-i686.tar.gz-C/usr/local
- #cd/usr/local/
- #ln-svmysql-5.5.28-linux2.6-i686mysql
- #cdmysql
- #lessINSTALL-BINARY#可以用來檢視軟體自帶的安裝說明
- #chown-Rmysql:mysql.
- #scripts/mysql_install_db--user=mysql--datadir=/mydata/data
- #chown-Rroot.
4、為mysql提供主配置檔案:
- #cd/usr/local/mysql
- #cpsupport-files/my-large.cnf/etc/my.cnf
並修改此檔案中thread_concurrency的值為你的CPU個數乘以2,比如這裡使用如下行:
thread_concurrency = 4
另外還需要新增如下行指定mysql資料檔案的存放位置:
datadir = /mydata/data
5、為mysql提供sysv服務指令碼:
- #cd/usr/local/mysql
- #cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld
- #chmod+x/etc/rc.d/init.d/mysqld
新增至服務列表:
- #chkconfig--addmysqld
- #chkconfigmysqldon
而後就可以啟動服務測試使用了。
為了使用mysql的安裝符合系統使用規範,並將其開發元件匯出給系統使用,這裡還需要進行如下步驟:
6、輸出mysql的man手冊至man命令的查詢路徑:
編輯/etc/man.config,新增如下行即可:
MANPATH /usr/local/mysql/man
7、輸出mysql的標頭檔案至系統標頭檔案路徑/usr/include:
這可以通過簡單的建立連結實現:
- #ln-sv/usr/local/mysql/include/usr/include/mysql
8、輸出mysql的庫檔案給系統庫查詢路徑:
- #echo'/usr/local/mysql/lib'>/etc/ld.so.conf.d/mysql.conf
而後讓系統重新載入系統庫:
# ldconfig
9、修改PATH環境變數,讓系統可以直接使用mysql的相關命令。
# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
四、編譯安裝php-5.4.13
1、解決依賴關係:
因為編譯過程中缺少加密程式,現在新增四個加密軟體包:
libmcrypt-2.5.7-5.el5.i386.rpm,libmcrypt-devel-2.5.7-5.el5.i386.rpm
mhash-devel-0.9.2-6.el5.i386.rpm,mhash-0.9.2-6.el5.i386.rpm。
請配置好X Software Development編譯環境
2、編譯安裝php-5.4.13
- #tarxfphp-5.4.13.tar.bz2
- #cdphp-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
# make
# make test && make install
為php提供配置檔案:
# cp php.ini-production /etc/php.ini
3、 編輯apache配置檔案httpd.conf,以apache支援php
- #vim/etc/httpd/httpd.conf
- 1、新增如下二行
- AddTypeapplication/x-httpd-php.php
- AddTypeapplication/x-httpd-php-source.phps
- 2、定位至DirectoryIndexindex.html
- 修改為:
- DirectoryIndexindex.phpindex.html
而後重新啟動httpd,或讓其重新載入配置檔案即可測試php是否已經可以正常使用。
- #servicehttpdrestart
- #cd/usr/local/apache/htdocs/#切換到httpd的網頁存放目錄
- #mvindex.htmlindex.php
- #vimindex.php
- <html><body><h1>IHAVEADREAM,THISISWORKDAYS!</h1></body></html>
- <?php
- $conn=mysql_connect('localhost','root','');
- if($conn)
- echo"Chenggong...";
- else
- echo"Shibai...";
- ?>
試指令碼,用來測試連線資料庫是否成功!
五、安裝xcache,為php加速:
1、安裝
- #tarxfxcache-3.0.1.tar.gz
- #cdxcache-3.0.1
- #/usr/local/php/bin/phpize#載入擴充套件項
- #./configure--enable-xcache--with-php-config=/usr/local/php/bin/php-config
- #make&&makeinstall
安裝結束時,會出現類似如下行:
- Installingsharedextensions:/usr/local/php/lib/php/extensions/no-debug-zts-20100525/
2、編輯php.ini,整合php和xcache:
首先將xcache提供的樣例配置匯入php.ini
- #mkdir/etc/php.d
- #cpxcache.ini/etc/php.d
說明:xcache.ini檔案在xcache的原始碼目錄中。
接下來編輯/etc/php.d/xcache.ini,找到zend_extension開頭的行,修改為如下行:
- zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
注意:如果php.ini檔案中有多條zend_extension指令行,要確保此新增的行排在第一位,這裡修改所用到的就是在安裝步驟中產生的字串。
測試安裝是否成功
- #vim/usr/local/apache/htdocs/index.php#檢視網頁狀態是否安裝xcache
六、安裝NFS服務,共享檔案
1、在主伺服器上做:
- #serviceportmapstatus#首先要確保portmap是開啟狀態
- #servicenfsstart#啟動nfs服務
- #rpcinfo-plocalhost#檢視所有rpc程序所監聽的埠
- #vim/etc/exports#將/var/www目錄設定為共享
- /var/www172.16.0.0/16(rw,no_root_squash)
- /usr/local/mysql172.16.0.0/16(rw,no_root_squash)
2、在輔伺服器上做
- #mount-tnfs172.16.12.22:/var/www/usr/local/apache/htdocs/#將網路共享掛載
- #mkdir/usr/local/mysql#建立目錄
- #mount-tnfs172.16.12.22:/usr/local/mysql/usr/local/mysql
- #vim/etc/fstab#新增其為開機掛載
- 172.16.12.22:/var/www/usr/local/apache/htdocs/nfsdefaults,_rnetdev00
七、安裝輔助伺服器
1、安裝apache伺服器
在第一步的時候已經說過了,這裡就不在複述。
2、安裝php模組和xcache加速
這一步在第三步驟中講述過,大家可以檢視一下
八、安裝Discuz論壇
1、在主伺服器上操作
- #vim/etc/httpd/httpd.conf#指定網頁存放目錄
- DocumentRoot"/var/www"
- <Directory"/var/www">
- #unzipDiscuz_X2.5_SC_GBK.zip#解壓軟體包
- #cp./upload/*/var/www/-a#將解壓後的檔案放到網頁目錄中
- #mysqladmin-uroot-ppassword'redhat'#為資料庫新增密碼
登入資料庫為root使用者新增遠端許可權:
- mysql>grantallprivilegeson*.*to[email protected]'%'identifiedby'redhat';
在安裝頁面填寫資料庫密碼
將資料庫的連線方式由localhost修改為172.16.12.22
給論壇檔案新增許可權
- #chmodo+rw./config
- #chmodo+rw./data
- #chmodo+rw./data/cache
- #chmodo+rw./data/avatar
- #chmodo+rw./data/plugindata
- #chmodo+rw./data/download
- #chmodo+rw./data/addonmd5
- #chmodo+rw./data/template
- #chmodo+rw./data/threadcache
- #chmodo+rw./data/p_w_upload
- #chmodo+rw./data/p_w_upload/album
- #chmodo+rw./data/p_w_upload/forum
- #chmodo+rw./data/p_w_upload/group
- #chmodo+rw./data/log
- #chmodo+rw./uc_client/data/cache
- #chmodo+rw./uc_server/data
- #chmodo+rw./uc_server/data/cache
- #chmodo+rw./uc_server/data/avatar
- #chmodo+rw./uc_server/data/backup
- #chmodo+rw./uc_server/data/logs
- #chmodo+rw./uc_server/data/tmp
- #chmodo+rw./uc_server/data/view
之後選擇下一步安裝就可以了:最終我們看一下效果圖:
如此簡易的基於NFS共享的LAMP論壇就搭建完成了,如果朋友們還想針對論壇實現iptables管理控制製作出DMZ的非軍事化區域的話,可以先自行摸索,我們會在之後的部落格中給出參考!
PS:寫的比較簡陋,如果有什麼BUG請留言,大家一起學習進步!
轉載於:https://blog.51cto.com/yhwhzhang/1183900