基于NFS-LAMP架构、共用1个Discuz,MySQL的双WEB Server

首先我们来阐述下观点:

如图:当用户访问虚拟机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前提:因为要用到yum安装,所以请事先确保好yum的配置是否已经妥当。可参照http://407711169.blog.51cto.com/6616996/1179601中前几步介绍的步骤。以及事先准备好相应的软件包,:httpd-2.4.3.tar + mysql-5.5.28 + php-5.4.8 apr-util-1.4.1.tar,apr-1.4.6.tar。另外需要查看selinux是否开启。同样可参照上边博客中的方法来实现关闭selinux


    [root@localhost~]#getenforce Enforcing [root@localhost~]#setenforce0 [root@localhost~]#getenforce Permissive //当然。这里也需要到vim/etc/selinux/config将其中的SELINUX=enforcing替换为SELINUX=permissive

编译配置主服务器(虚拟机1)的LAMP:一、编译安装apache注意:事先把httpd-2.4.3.tar,apr-util-1.4.1.tar,apr-1.4.6.tar这三个包放到/usr/local/src/目录中,方法具体不在介绍xshell与window界面拖拽。另外需要注意的是,要将虚拟机里linux的时间做同步。–hwclock -s1、解决依赖关系(1) 编译安装apr


    [root@localhostsrc]#ls apr-1.4.6.tar.bz2apr-util-1.4.1.tar.bz2httpd-2.4.3.tar.bz2 [root@localhostsrc]#tarxfapr-1.4.6.tar.bz2 [root@localhostsrc]#cdapr-1.4.6 [root@localhostapr-1.4.6]#./configure–prefix=/usr/local/apr//prefix指定路径 [root@localhostapr-1.4.6]#make&&makeinstall//这里稍微简略了下步骤 //这个时候,apr已经安装好了。然后去安装apr-util

(2) 编译安装apr-util


    [root@localhostapr-1.4.6]#cd.. [root@localhostsrc]#tarxfapr-util-1.4.1.tar.bz2 [root@localhostsrc]#cdapr-util-1.4.1 [root@localhostapr-util-1.4.1]#./configure–prefix=/usr/local/apr-util–with-apr=/usr/local/apr//-with-apr告诉其apr的路径 [root@localhostapr-util-1.4.1]#make [root@localhostapr-util-1.4.1]#makeinstall

(3) httpd-2.4.3编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带,因此,找到并安装即可。


    [root@localhostapr-util-1.4.1]#cd.. [root@localhostsrc]#yuminstallpcre-devel

2、编译安装httpd-2.4.3


    [root@localhostsrc]#tarxfhttpd-2.4.3.tar.bz2 [root@localhostsrc]#cdhttpd-2.4.3 [root@localhosthttpd-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@localhosthttpd-2.4.3]#make [root@localhosthttpd-2.4.3]#makeinstall

3、修改httpd的主配置文件,设置其Pid文件的路径


    [root@localhostsrc]#vim/etc/httpd/httpd.conf //添加如下内容 PidFile"/var/run/httpd.pid"

4、提供SysV服务脚本/etc/rc.d/init.d/httpd,内容如下:


    [root@localhostsrc]#cd/etc/rc.d/init.d/ [root@localhostinit.d]#vimhttpd //添加如下内容 #!/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=httpdpidfile=${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$@ RETVAL=$? ;; *) echo$"Usage:$prog{start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" exit1 esac exit$RETVAL

    //而后为此脚本赋予执行权限: [root@localhostinit.d]#chmod+xhttpd [root@localhostinit.d]#chkconfig–level35httpdon//设定运行级别 [root@localhostinit.d]#chkconfig–listhttpd httpd0:off1:off2:off3:on4:off5:on6:off //下面的步骤可忽略,这里只是可以设置为bash可以直接执行 [root@localhostinit.d]#vim/etv/profile.d/httpd.sh //添加 #/bin/bash exportPATH=$PATH:/usr/local/apache/bin [root@localhostinit.d]#exportPATH=$PATH:/usr/local/apache/bin

这个时候就可以验证下httpd服务了。然后打开浏览器,输入172.16.111.1就可以查看工作网页了。其网页文件在/usr/local/apache/htdocs/中的index.html中,可以修改其中的内容对网页内容进行修改。

二、安装mysql-5.5.28前提:这里使用mysql-5.5.28-linux2.6-tar,提前下载放入linux中1、准备数据存放的文件系统新建一个逻辑卷,这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。


    [root@localhostinit.d]#fdisk/dev/sda //其中过程省略。。 [root@localhostinit.d]#partprobe/dev/sda //创建逻辑卷 [root@localhostinit.d]#pvcreate/dev/sda5 Writingphysicalvolumedatatodisk"/dev/sda5" Physicalvolume"/dev/sda5"successfullycreated [root@localhostinit.d]#vgcreatemyvg/dev/sda5 Volumegroup"myvg"successfullycreated [root@localhostinit.d]#lvcreate-nmydata-L5Gmyvg Logicalvolume"mydata"created [root@localhostinit.d]#lvs LVVGAttrLSizeOriginSnap%MoveLogCopy%Convert mydatamyvg-wi-a-5.00G lvtextvgtext-wi-a-1.00G homevol0-wi-ao4.88G rootvol0-wi-ao29.28G [root@localhostinit.d]#mke2fs-j/dev/myvg/mydata //设置开机挂载 [root@localhost~]#mkdir/mydata [root@localhost~]#vim/etc/fstab //添加如下内容 /dev/myvg/mydata/mydataext3defaults00 [root@localhost~]#mount–a//重新挂载 [root@localhost~]#mkdir/mydata/data//作为数据的挂载目录

2、新建用户以安全方式运行进程:


    //创建用户 [root@localhost~]#groupadd-rmysql [root@localhost~]#useradd-gmysql-r-s/sbin/nologin-M-d/mydata/datamysql [root@localhost~]#chown-Rmysql:mysql/mydata/data

3、安装并初始化mysql-5.5.28


    [root@localhost~]#cd/usr/local/src/ [root@localhostsrc]#tarxfmysql-5.5.28-linux2.6-i686.tar.gz [root@localhostsrc]#cd.. [root@localhostlocal]#pwd /usr/local [root@localhostlocal]#ln-sv/usr/local/src/mysql-5.5.28-linux2.6-i686mysql createsymboliclink`mysql'to`/usr/local/src/mysql-5.5.28-linux2.6-i686' [root@localhostlocal]#cdmysql [root@localhostmysql]#chown-Rmysql:mysql. [root@localhostmysql]#scripts/mysql_install_db–user=mysql–datadir=/mydata/data InstallingMySQLsystemtables… [root@localhostmysql]#

4、为mysql提供主配置文件:


    [root@localhostmysql]#cpsupport-files/my-large.cnf/etc/my.cnf [root@localhostmysql]#vim/etc/my.cnf //并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行: thread_concurrency=2 //另外还需要添加如下行指定mysql数据文件的存放位置: datadir=/mydata/data//添加此行指定mysql数据文件的存放位置

5、为mysql提供sysv服务脚本:


    [root@localhostmysql]#pwd /usr/local/mysql [root@localhostmysql]#cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld [root@localhostmysql]#chmod+x/etc/rc.d/init.d/mysqld //添加至服务列表: [root@localhostmysql]#chkconfig–addmysqld [root@localhostmysql]#chkconfigmysqldon 而后就可以启动服务测试使用了。

为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:6、输出mysql的man手册至man命令的查找路径:


    [root@localhostmysql]#vim/etc/man.config #####################mysql############# MANPATH/usr/local/mysql/man

7、输出mysql的头文件至系统头文件路径/usr/include:


    这可以通过简单的创建链接实现: [root@localhostmysql]#ln-sv/usr/local/mysql/include/usr/include/mysql createsymboliclink`/usr/include/mysql'to`/usr/local/mysql/include'

8、输出mysql的库文件给系统库查找路径:


    [root@localhostld.so.conf.d]#echo'/usr/local/mysql/lib'>/etc/ld.so.conf.d/mysql.conf

9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。


    [root@localhostld.so.conf.d]#vim/etc/profile//需要重读或重启或重新登录 PATH=$PATH:/usr/local/mysql/bin //另外exportPATH=$PATH:/usr/local/mysql/bin也可以起到上边的效果 PS:这个时候。就可以进入数据库创建表之类的东西了!

图片仅为连接的测试:

三、编译安装php-5.4.131、解决依赖关系:


    请配置好yum源(可以是本地系统光盘)后执行如下命令: [root@localhost~]#yum-ygroupinstall"XSoftwareDevelopment" 如果想让编译的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

2、编译安装php-5.4.13


    将下载好的安装包放到linux的src中(过程同上) [root@localhostsrc]#tarxfphp-5.4.13.tar.bz2 [root@localhostphp-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@localhostphp-5.4.13]#make [root@localhostphp-5.4.13]#maketest [root@localhostphp-5.4.13]#makeinstall 为php提供配置文件: [root@localhostphp-5.4.13]#cpphp.ini-production/etc/php.ini //php包中提供了配置文件,把配置文件重命名为/etc/php.ini,php的配置文件后缀名是以.ini结尾

3、编辑apache配置文件httpd.conf,以apache支持php


    [root@localhostphp-5.4.8]#vim/etc/httpd/httpd.conf 1、添加如下二行 AddTypeapplication/x-httpd-php.php AddTypeapplication/x-httpd-php-source.phps //能够让APACHE处理PHP结尾的文件 2、定位至DirectoryIndexindex.html 修改为: DirectoryIndexindex.phpindex.html //能让目录索引处理php结尾的页面文件。在配置文件中可以根据自己安装内容启动相对模块。比如:SSL模块等。 [root@localhostphp-5.4.13]#cd/usr/local/apache/htdocs///进入apache页面目录下,把默认页面修改为php页面文件 [root@localhostphp-5.4.13]#mvindex.htmlindex.php [root@localhostphp-5.4.13]#vimindex.php <html><body><h1>Itworks!doubao’stestpage</h1></body></html> <?php phpinfo(); ?>:wq //保存退出 [root@localhosthtdocs]#servicehttpdrestart//重启 //发起php页面测试 //生成的测试页面内容对我们还是会有帮助,可以留意一下里面的内容

4、 php和mysql结合,在index.php页面文件中修改一下内容


    <html><body><h1>Itworks!mytestpage</h1></body></html> <?php $conn=mysql_connect('localhost','root',''); if($conn) echo"<h2>Success…</h2>"; else echo"<h2>Failure…</h2>"; phpinfo(); ?>//保存退出然后 [root@localhosthtdocs]#servicehttpdrestart//重启网络服务

到这里,一个linux+apache+mysql+php的LAMP已经搭建好了。四、搭建DISCUZ论坛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@localhostdiscuz]#cd/usr/local/src/discuz/ [root@localhostdiscuz]#unzipDiscuz_X2.5_SC_GBK.zip#解压软件包 [root@localhostdiscuz]#mv./upload/*/www/a.org/#将解压后的文件放到网页目录中 [root@localhostdiscuz]#mysqladmin-uroot-ppassword'redhat'#为数据库添加密码 登录数据库为root用户添加远程权限 mysql>grantallprivilegeson*.*toroot@'%'identifiedby'redhat'; QueryOK,0rowsaffected(0.30sec)

2、安装DISCUZ论坛打开IE输入虚拟机1地址:172.16.111.1进行DISCUZ向导安装,

然后第二部的时候为他们增加读写权限:


    [root@localhostdiscuz]#cd/www/a.org/ [root@localhosta.org]#mkdir./config/config_global.php [root@localhosta.org]#mkdir./config/config_ucenter.php [root@localhosta.org]#chmodo+rw./config/* [root@localhosta.org]#chmodo+rw./data [root@localhosta.org]#chmodo+rw./data/cache [root@localhosta.org]#chmodo+rw./data/avatar [root@localhosta.org]#chmodo+rw./data/plugindata [root@localhosta.org]#chmodo+rw./data/download [root@localhosta.org]#chmodo+rw./data/addonmd5 [root@localhosta.org]#chmodo+rw./data/template [root@localhosta.org]#chmodo+rw./data/threadcache [root@localhosta.org]#chmodo+rw./data/attachment [root@localhosta.org]#chmodo+rw./data/attachment/album [root@localhosta.org]#chmodo+rw./data/attachment/forum [root@localhosta.org]#chmodo+rw./data/attachment/group [root@localhosta.org]#chmodo+rw./data/log [root@localhosta.org]#chmodo+rw./uc_client/data/cache [root@localhosta.org]#chmodo+rw./uc_server/data [root@localhosta.org]#chmodo+rw./uc_server/data/cache [root@localhosta.org]#chmodo+rw./uc_server/data/avatar [root@localhosta.org]#chmodo+rw./uc_server/data/backup [root@localhosta.org]#chmodo+rw./uc_server/data/logs [root@localhosta.org]#chmodo+rw./uc_server/data/tmp [root@localhosta.org]#chmodo+rw./uc_server/data/view

然后继续进行下一步安装

这时。第一步已经Ok,然后来做第二步。

为虚拟机2搭建LAP服务一、编译安装apache(参照上边的步骤一)二、编译安装php-5.4.13(参照上边的步骤二)这里需要注意的是,在编译安装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

搭建好以后打开浏览器测试下,网页是否能够正常开启!

安装NFS服务,共享文件首先回到虚拟机1


    [root@localhostconfig]#serviceportmapstatus portmap(pid2958)isrunning… //查看下此服务是否在运行中,因为NFS服务要在这个服务的基础上才能开启 [root@localhostconfig]#servicenfsstart//开始NFS服务 StartingNFSservices:[OK] StartingNFSquotas:[OK] StartingNFSdaemon:[OK] StartingNFSmountd:[OK] PS:这个时候可以#rpcinfo-plocalhost查看所有rpc进程所监听的端口 [root@localhostconfig]#vim/etc/exports /www/a.org172.16.0.0/16(rw,no_root_squash) ###no_root_squash:不将root用户映射为来宾账户为了让虚拟机2可以读写 :wq [root@localhostconfig]#exportfs–ra //切记!!!要重新导出!!!

然后回到虚拟机2:


    [root@localhosthtdocs]#mount-tnfs172.16.111.1:/www/a.org/usr/local/apache/htdocs/ ###客户端使用mount命令挂载 当然这里也可以将其设为开机自动挂在: [root@localhosthtdocs]#vim/etc/fstab 172.16.111.1:/www/a.org/usr/local/apache/htdocsnfsdefaults,_rnetdev00 #######_rnetdev:设置开机自动挂载时,能挂载就挂载,不能挂载就算了

测试:这里不再做具体演示。提示:输入172.16.111.1或者172.16.111.2。在两个网页上各注册一个新的账号来进行发帖操作,看看发帖之后对方是否能够即时看到帖子,是否为同步。

PS:这是本人参考本人好友的博文后自己重新编写的过程。本人重新做了3次,基本排除了过程中遇到的细微的错误,也尽量减免了很多不必要的步骤,请大家放心试验。如果本文再重新出现了其他的错误欢迎留言讨论。我好友的博文地址我也给贴出来吧:http://yhwhzhang.blog.51cto.com/3821405/1183900。

本文出自 “豆包的博客” 博客,请务必保留此出处http://407711169.blog.51cto.com/6616996/1188711

而消极的人则在每个机会都看到某种忧患。

基于NFS-LAMP架构、共用1个Discuz,MySQL的双WEB Server

相关文章:

你感兴趣的文章:

标签云: