1. 程式人生 > 實用技巧 >如何輕鬆搭建基於NFS的雙LAMP伺服器的個人論壇

如何輕鬆搭建基於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

  1. #tarxfapr-1.4.6.tar.bz2
  2. #cdapr-1.4.6
  3. #./configure--prefix=/usr/local/apr
  4. #make&&makeinstall

(2) 編譯安裝apr-util

  1. #tarxfapr-util-1.5.2.tar.bz2
  2. #cdapr-util-1.5.2
  3. #./configure--prefix=/usr/local/apr-util--with-apr=/usr/local/apr
  4. #make&&makeinstall

(3) httpd-2.4.4編譯過程也要依賴於pcre-devel軟體包,需要事先安裝。此軟體包系統光碟自帶,因此,找到並安裝即可。

2、編譯安裝httpd-2.4.4

  1. #tarxfhttpd-2.4.4.tar.bz2
  2. #cdhttpd-2.4.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
  4. #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,內容如下:

  1. #!/bin/bash
  2. #
  3. #httpdStartupscriptfortheApacheHTTPServer
  4. #
  5. #chkconfig:-8515
  6. #description:ApacheisaWorldWideWebserver.Itisusedtoserve\
  7. #HTMLfilesandCGI.
  8. #processname:httpd
  9. #config:/etc/httpd/conf/httpd.conf
  10. #config:/etc/sysconfig/httpd
  11. #pidfile:/var/run/httpd.pid
  12. #Sourcefunctionlibrary.
  13. ./etc/rc.d/init.d/functions
  14. if[-f/etc/sysconfig/httpd];then
  15. ./etc/sysconfig/httpd
  16. fi
  17. #StarthttpdintheClocalebydefault.
  18. HTTPD_LANG=${HTTPD_LANG-"C"}
  19. #Thiswillpreventinitlogfromswallowingupapass-phrasepromptif
  20. #mod_sslneedsapass-phrasefromtheuser.
  21. INITLOG_ARGS=""
  22. #SetHTTPD=/usr/sbin/httpd.workerin/etc/sysconfig/httpdtouseaserver
  23. #withthethread-based"worker"MPM;BEWARNEDthatsomemodulesmaynot
  24. #workcorrectlywithathread-basedMPM;notablyPHPwillrefusetostart.
  25. #Pathtotheapachectlscript,serverbinary,andshort-formformessages.
  26. apachectl=/usr/local/apache/bin/apachectl
  27. httpd=${HTTPD-/usr/local/apache/bin/httpd}
  28. prog=httpd
  29. pidfile=${PIDFILE-/var/run/httpd.pid}
  30. lockfile=${LOCKFILE-/var/lock/subsys/httpd}
  31. RETVAL=0
  32. start(){
  33. echo-n$"Starting$prog:"
  34. LANG=$HTTPD_LANGdaemon--pidfile=${pidfile}$httpd$OPTIONS
  35. RETVAL=$?
  36. echo
  37. [$RETVAL=0]&&touch${lockfile}
  38. return$RETVAL
  39. }
  40. stop(){
  41. echo-n$"Stopping$prog:"
  42. killproc-p${pidfile}-d10$httpd
  43. RETVAL=$?
  44. echo
  45. [$RETVAL=0]&&rm-f${lockfile}${pidfile}
  46. }
  47. reload(){
  48. echo-n$"Reloading$prog:"
  49. if!LANG=$HTTPD_LANG$httpd$OPTIONS-t>&/dev/null;then
  50. RETVAL=$?
  51. echo$"notreloadingduetoconfigurationsyntaxerror"
  52. failure$"notreloading$httpdduetoconfigurationsyntaxerror"
  53. else
  54. killproc-p${pidfile}$httpd-HUP
  55. RETVAL=$?
  56. fi
  57. echo
  58. }
  59. #Seehowwewerecalled.
  60. case"$1"in
  61. start)
  62. start
  63. ;;
  64. stop)
  65. stop
  66. ;;
  67. status)
  68. status-p${pidfile}$httpd
  69. RETVAL=$?
  70. ;;
  71. restart)
  72. stop
  73. start
  74. ;;
  75. condrestart)
  76. if[-f${pidfile}];then
  77. stop
  78. start
  79. fi
  80. ;;
  81. reload)
  82. reload
  83. ;;
  84. graceful|help|configtest|fullstatus)
  85. $apachectl[email protected]
  86. RETVAL=$?
  87. ;;
  88. *)
  89. echo$"Usage:$prog{start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
  90. exit1
  91. esac
  92. exit$RETVAL

  1. 而後為此指令碼賦予執行許可權:
  2. #chmod+x/etc/rc.d/init.d/httpd
  3. 加入服務列表:
  4. #chkconfig--addhttpd
  5. #chkconfig--level35httpdon
  6. #servicehttpdrestart
  7. 將httpd服務命令新增到環境變數中去:
  8. #vim/etc/profile.d/httpd.sh
  9. exportPATH=$PATH:/usr/local/apache/bin

接下來就可以啟動服務進行測試了。

三、安裝mysql-5.6.10

1、準備資料存放的檔案系統

新建一個邏輯卷,並將其掛載至特定目錄即可。

這裡我們設定其邏輯卷的掛載目錄為/mydata,而後需要建立/mydata/data目錄做為mysql資料的存放目錄。

  1. #fdisk/dev/sda#建立一個20G的分割槽
  2. #partprobe/dev/sda#重新整理重讀
  3. #pvcreate/dev/sda6#建立PV
  4. #vgcreatemyvg/dev/sda6#建立VG
  5. #lvcreate-nmydata-L5Gmyvg#建立LV
  6. #mke2fs-j/dev/myvg/mydata#格式化為ext3
  7. #mkdir/mydata-pv#建立掛載點
  8. #vim/etc/fstab#修改為開機掛載
  9. #mount-a#掛載至掛載點
  10. #mkdir/mydata/data#建立一個數據儲存目錄
  11. #chown-Rmysql.mysql/mydata/data/#修改儲存目錄的屬主屬組
  12. #chmodo-rx/mydata/data/#修改其他使用者的讀寫許可權

2、新建使用者以安全方式執行程序:

  1. #groupadd-r-g306mysql
  2. #useradd-g306-r-u306mysql
  3. #chown-Rmysql.mysql/usr/local/mysql/*#修改安裝檔案的屬主屬組
  4. #chown-Rmysql:mysql/mydata/data

3、安裝並初始化mysql-5.5.28

  1. #tarxfmysql-5.5.28-linux2.6-i686.tar.gz-C/usr/local
  2. #cd/usr/local/
  3. #ln-svmysql-5.5.28-linux2.6-i686mysql
  4. #cdmysql
  5. #lessINSTALL-BINARY#可以用來檢視軟體自帶的安裝說明
  6. #chown-Rmysql:mysql.
  7. #scripts/mysql_install_db--user=mysql--datadir=/mydata/data
  8. #chown-Rroot.

4、為mysql提供主配置檔案:

  1. #cd/usr/local/mysql
  2. #cpsupport-files/my-large.cnf/etc/my.cnf

並修改此檔案中thread_concurrency的值為你的CPU個數乘以2,比如這裡使用如下行:

thread_concurrency = 4

另外還需要新增如下行指定mysql資料檔案的存放位置:

datadir = /mydata/data

5、為mysql提供sysv服務指令碼:

  1. #cd/usr/local/mysql
  2. #cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld
  3. #chmod+x/etc/rc.d/init.d/mysqld

新增至服務列表:

  1. #chkconfig--addmysqld
  2. #chkconfigmysqldon

而後就可以啟動服務測試使用了。

為了使用mysql的安裝符合系統使用規範,並將其開發元件匯出給系統使用,這裡還需要進行如下步驟:

6、輸出mysql的man手冊至man命令的查詢路徑:

編輯/etc/man.config,新增如下行即可:

MANPATH /usr/local/mysql/man

7、輸出mysql的標頭檔案至系統標頭檔案路徑/usr/include:

這可以通過簡單的建立連結實現:

  1. #ln-sv/usr/local/mysql/include/usr/include/mysql

8、輸出mysql的庫檔案給系統庫查詢路徑:

  1. #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

  1. #tarxfphp-5.4.13.tar.bz2
  2. #cdphp-5.4.13
  3. #./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

  1. #vim/etc/httpd/httpd.conf
  2. 1、新增如下二行
  3. AddTypeapplication/x-httpd-php.php
  4. AddTypeapplication/x-httpd-php-source.phps
  5. 2、定位至DirectoryIndexindex.html
  6. 修改為:
  7. DirectoryIndexindex.phpindex.html

而後重新啟動httpd,或讓其重新載入配置檔案即可測試php是否已經可以正常使用。

  1. #servicehttpdrestart
  2. #cd/usr/local/apache/htdocs/#切換到httpd的網頁存放目錄
  3. #mvindex.htmlindex.php
  4. #vimindex.php
  5. <html><body><h1>IHAVEADREAM,THISISWORKDAYS!</h1></body></html>
  6. <?php
  7. $conn=mysql_connect('localhost','root','');
  8. if($conn)
  9. echo"Chenggong...";
  10. else
  11. echo"Shibai...";
  12. ?>

試指令碼,用來測試連線資料庫是否成功!

五、安裝xcache,為php加速:

1、安裝

  1. #tarxfxcache-3.0.1.tar.gz
  2. #cdxcache-3.0.1
  3. #/usr/local/php/bin/phpize#載入擴充套件項
  4. #./configure--enable-xcache--with-php-config=/usr/local/php/bin/php-config
  5. #make&&makeinstall

安裝結束時,會出現類似如下行:

  1. Installingsharedextensions:/usr/local/php/lib/php/extensions/no-debug-zts-20100525/

2、編輯php.ini,整合php和xcache:

首先將xcache提供的樣例配置匯入php.ini

  1. #mkdir/etc/php.d
  2. #cpxcache.ini/etc/php.d

說明:xcache.ini檔案在xcache的原始碼目錄中。

接下來編輯/etc/php.d/xcache.ini,找到zend_extension開頭的行,修改為如下行:

  1. zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

注意:如果php.ini檔案中有多條zend_extension指令行,要確保此新增的行排在第一位,這裡修改所用到的就是在安裝步驟中產生的字串。

測試安裝是否成功

  1. #vim/usr/local/apache/htdocs/index.php#檢視網頁狀態是否安裝xcache

六、安裝NFS服務,共享檔案

1、在主伺服器上做:

  1. #serviceportmapstatus#首先要確保portmap是開啟狀態
  2. #servicenfsstart#啟動nfs服務
  3. #rpcinfo-plocalhost#檢視所有rpc程序所監聽的埠
  4. #vim/etc/exports#將/var/www目錄設定為共享
  5. /var/www172.16.0.0/16(rw,no_root_squash)
  6. /usr/local/mysql172.16.0.0/16(rw,no_root_squash)

2、在輔伺服器上做

  1. #mount-tnfs172.16.12.22:/var/www/usr/local/apache/htdocs/#將網路共享掛載
  2. #mkdir/usr/local/mysql#建立目錄
  3. #mount-tnfs172.16.12.22:/usr/local/mysql/usr/local/mysql
  4. #vim/etc/fstab#新增其為開機掛載
  5. 172.16.12.22:/var/www/usr/local/apache/htdocs/nfsdefaults,_rnetdev00

七、安裝輔助伺服器

1、安裝apache伺服器

在第一步的時候已經說過了,這裡就不在複述。

2、安裝php模組和xcache加速

這一步在第三步驟中講述過,大家可以檢視一下

八、安裝Discuz論壇

1、在主伺服器上操作

  1. #vim/etc/httpd/httpd.conf#指定網頁存放目錄
  2. DocumentRoot"/var/www"
  3. <Directory"/var/www">
  4. #unzipDiscuz_X2.5_SC_GBK.zip#解壓軟體包
  5. #cp./upload/*/var/www/-a#將解壓後的檔案放到網頁目錄中
  6. #mysqladmin-uroot-ppassword'redhat'#為資料庫新增密碼

登入資料庫為root使用者新增遠端許可權:

  1. mysql>grantallprivilegeson*.*to[email protected]'%'identifiedby'redhat';

在安裝頁面填寫資料庫密碼

將資料庫的連線方式由localhost修改為172.16.12.22

給論壇檔案新增許可權

  1. #chmodo+rw./config
  2. #chmodo+rw./data
  3. #chmodo+rw./data/cache
  4. #chmodo+rw./data/avatar
  5. #chmodo+rw./data/plugindata
  6. #chmodo+rw./data/download
  7. #chmodo+rw./data/addonmd5
  8. #chmodo+rw./data/template
  9. #chmodo+rw./data/threadcache
  10. #chmodo+rw./data/p_w_upload
  11. #chmodo+rw./data/p_w_upload/album
  12. #chmodo+rw./data/p_w_upload/forum
  13. #chmodo+rw./data/p_w_upload/group
  14. #chmodo+rw./data/log
  15. #chmodo+rw./uc_client/data/cache
  16. #chmodo+rw./uc_server/data
  17. #chmodo+rw./uc_server/data/cache
  18. #chmodo+rw./uc_server/data/avatar
  19. #chmodo+rw./uc_server/data/backup
  20. #chmodo+rw./uc_server/data/logs
  21. #chmodo+rw./uc_server/data/tmp
  22. #chmodo+rw./uc_server/data/view

之後選擇下一步安裝就可以了:最終我們看一下效果圖:

如此簡易的基於NFS共享的LAMP論壇就搭建完成了,如果朋友們還想針對論壇實現iptables管理控制製作出DMZ的非軍事化區域的話,可以先自行摸索,我們會在之後的部落格中給出參考!

PS:寫的比較簡陋,如果有什麼BUG請留言,大家一起學習進步!

轉載於:https://blog.51cto.com/yhwhzhang/1183900