LAMP(扩展)解决单台服务器上限

首先说下试验需求

目前有单台的LAMP,但是网站需求量增大单台已经无法满足需求了,所以我们需要在增加一台服务器来提高网站需求量:


试验拓扑图如下:


注:应为没有公网解析,所以就将DNS服务器做在了新增机器上,这里使用的是两台RHEL5.8的虚拟机,本机IP是192.168.80.1

实施步骤:
配置yum,安装好编译环境,selinux关闭


1、配置DNS解析:
1)首先卸载本机的DNS,这里安装bind97的

  
  
  
  
  1. # yum -y remove bind-utils bind-libs  
  2.  
  3. # yum -y install bind97 bind97-utils bind97-libs  
  4. # vim /etc/named.conf  
  5. ……  
  6. options {  
  7.         listen-on port 53 { any; };  
  8.         directory       "/var/named";  
  9.         dump-file       "/var/named/data/cache_dump.db";  
  10.         statistics-file "/var/named/data/named_stats.txt";  
  11.         memstatistics-file "/var/named/data/named_mem_stats.txt";  
  12.         allow-query     { any; };  
  13.         recursion yes;  
  14. };  
  15. ……  
  16.  
  17. # vim /etc/named.rfc1912.zones   
  18. zone "peace.com" IN {  
  19.         type master;  
  20.         file "peace.com.zone";  
  21. };  
  22. zone "168.192.in-addr.arpa" IN {  
  23.         type master;  
  24.         file "192.168.zone";  
  25. };  
  26.  
  27. # vim /var/named/peace.com.zone  
  28. $TTL 600  
  29. $ORIGIN peace.com.  
  30. @       IN SOA  ns.peace.com.   admin.peace.com. (  
  31.                                         2012071501  
  32.                                         1H  
  33.                                         10M  
  34.                                         7D  
  35.                                         3H )  
  36.         IN      NS      ns  
  37. ns      IN      A       192.168.80.139  
  38. ns      IN      A       192.168.80.140  
  39. www     IN      A       192.168.80.139  
  40. www     IN      A       192.168.80.140  
  41.  
  42. # vim /var/named/192.168.zone  
  43. $TTL 600  
  44. @       IN SOA  ns.peace.com.   admin.peace.com. (  
  45.                                         2012071501  
  46.                                         1H  
  47.                                         10M  
  48.                                         7D  
  49.                                         3H )  
  50.         IN      NS      ns.peace.com.  
  51. 80.139  IN      PTR     ns.peace.com.  
  52. 80.140  IN      PTR     ns.peace.com.  
  53. 80.139  IN      PTR     www.peace.com.  
  54. 80.140  IN      PTR     www.peace.com. 

2)修改权限

  
  
  
  
  1. # cd /var/named/  
  2. # chown .named peace.com.zone 192.168.zone   
  3. # chmod 644 peace.com.zone 192.168.zone 

3)启动服务,指定DNS服务器

  
  
  
  
  1. # service named restart  
  2. # vim /etc/resolv.conf  
  3. nameserver 192.168.80.140  
  4.  

4)通过ping 查看是否有dns轮询:

2、192.168.80.139服务器架构
LAMP的编译就不介绍了,这里直接开始安装论坛

1)先设置mysql的密码

# mysqladmin -u root password 'redhat'

2)修改http配置文件,这里使用的虚拟主机的方式
 

  
  
  
  
  1. # vim /etc/httpd/httpd.conf,修改如下内容  
  2. # DocumentRoot "/usr/local/apache/htdocs"  
  3. Include /etc/httpd/extra/httpd-vhosts.conf  
  4.  
  5. # vim /etc/httpd/extra/httpd-vhosts.conf   
  6. <VirtualHost *:80> 
  7.     DocumentRoot "/web/discuz"  
  8.     ServerName www.peace.com  
  9.     ErrorLog "logs/www.peace.com-error_log"  
  10.     CustomLog "logs/www.peace.com-access_log" common  
  11.         <Directory "/web/discuz"> 
  12.                 Options none  
  13.                 AllowOverride none  
  14.                 Require all granted  
  15.         </Directory> 
  16. </VirtualHost> 
  17.  
  18. # vim /etc/php.ini  
  19. short_open_tag = On 

3)论坛架设

  
  
  
  
  1. # mkdir /web/discuz -p  
  2. # unzip Discuz_7.2_FULL_SC_UTF8.zip -d /web/discuz/  
  3.  
  4. # cd /web/discuz/upload/  
  5. # chown -R daemon config.inc.php attachments/ forumdata/ uc_client/data/cache/ 

重启服务,浏览器输入http://192.168.80.139/upload/install按步骤安装即可
# service httpd restart

论坛已经架构好了

3、192.168.80.140服务器架构
1)配置apache
(1)安装环境,编译安装

  
  
  
  
  1. # yum -y install pcre-devel  
  2.  
  3. # tar xf apr-1.4.6.tar.bz2   
  4. # cd apr-1.4.6  
  5. # ./configure --prefix=/usr/local/apr  
  6. #  make && make install  
  7.  
  8. # tar xf apr-util-1.4.1.tar.bz2   
  9. # cd apr-util-1.4.1  
  10. # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr  
  11. # make &&  make install  
  12.  
  13. # tar xf httpd-2.4.2.tar.bz2   
  14. # cd httpd-2.4.2  
  15. # ./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  
  16. # make && make install 


(2)修改配置文件添加如下内容
# vim /etc/httpd/httpd.conf
ServerRoot "/usr/local/apache"
Pidfile "/var/run/httpd.pid


(3)添加启动脚本

  
  
  
  
  1. #!/bin/bash  
  2. #  
  3. # httpd        Startup script for the Apache HTTP Server  
  4. #  
  5. # chkconfig: - 85 15  
  6. # description: Apache is a World Wide Web server.  It is used to serve \  
  7. #        HTML files and CGI.  
  8. # processname: httpd  
  9. # config: /etc/httpd/conf/httpd.conf  
  10. # config: /etc/sysconfig/httpd  
  11. # pidfile: /var/run/httpd.pid  
  12.  
  13. # Source function library.  
  14. . /etc/rc.d/init.d/functions  
  15.  
  16. if [ -f /etc/sysconfig/httpd ]; then  
  17.         . /etc/sysconfig/httpd  
  18. fi  
  19.  
  20. # Start httpd in the C locale by default.  
  21. HTTPD_LANG=${HTTPD_LANG-"C"}  
  22.  
  23. # This will prevent initlog from swallowing up a pass-phrase prompt if  
  24. # mod_ssl needs a pass-phrase from the user.  
  25. INITLOG_ARGS="" 
  26.  
  27. # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server  
  28. # with the thread-based "worker" MPM; BE WARNED that some modules may not  
  29. # work correctly with a thread-based MPM; notably PHP will refuse to start.  
  30.  
  31. # Path to the apachectl script, server binary, and short-form for messages.  
  32. apachectl=/usr/local/apache/bin/apachectl  
  33. httpd=${HTTPD-/usr/local/apache/bin/httpd}  
  34. prog=httpd 
  35. pidfile=${PIDFILE-/var/run/httpd.pid}  
  36. lockfile=${LOCKFILE-/var/lock/subsys/httpd}  
  37. RETVAL=0 
  38.  
  39. start() {  
  40.         echo -n $"Starting $prog: "  
  41.         LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS  
  42.         RETVAL=$?  
  43.         echo  
  44.         [ $RETVAL = 0 ] && touch ${lockfile}  
  45.         return $RETVAL  
  46. }  
  47.  
  48. stop() {  
  49.  echo -n $"Stopping $prog: "  
  50.  killproc -p ${pidfile} -d 10 $httpd  
  51.  RETVAL=$?  
  52.  echo  
  53.  [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}  
  54. }  
  55. reload() {  
  56.     echo -n $"Reloading $prog: "  
  57.     if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then  
  58.         RETVAL=$?  
  59.         echo $"not reloading due to configuration syntax error"  
  60.         failure $"not reloading $httpd due to configuration syntax error"  
  61.     else  
  62.         killproc -p ${pidfile} $httpd -HUP  
  63.         RETVAL=$?  
  64.     fi  
  65.     echo  
  66. }  
  67.  
  68. # See how we were called.  
  69. case "$1" in  
  70.   start)  
  71.  start  
  72.  ;;  
  73.   stop)  
  74.  stop  
  75.  ;;  
  76.   status)  
  77.         status -p ${pidfile} $httpd  
  78.  RETVAL=$?  
  79.  ;;  
  80.   restart)  
  81.  stop  
  82.  start  
  83.  ;;  
  84.   condrestart)  
  85.  if [ -f ${pidfile} ] ; then  
  86.   stop  
  87.   start  
  88.  fi  
  89.  ;;  
  90.   reload)  
  91.         reload  
  92.  ;;  
  93.   graceful|help|configtest|fullstatus)  
  94.  $apachectl $@  
  95.  RETVAL=$?  
  96.  ;;  
  97.   *)  
  98.  echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"  
  99.  exit 1  
  100. esac  
  101.  
  102. exit $RETVAL 

(4)添加权限,启动服务
# chmod +x /etc/rc.d/init.d/httpd
# chkconfig --add httpd
# service httpd restart

2)安装mysql,注意的是这里装好以后不需启动,因为php编译需要mysql,所以这里的mysql只是为了安装php的

  
  
  
  
  1. # groupadd -r mysql  
  2. # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql  
  3. # mkdir -p /mydata/data  
  4. # chown -R mysql.mysql /mydata/data/  
  5.  
  6. # tar xf mysql-5.5.24-linux2.6-i686.tar.gz -C /usr/local/  
  7. # cd /usr/local/  
  8. # ln -s mysql-5.5.24-linux2.6-i686/ mysql  
  9. # cd mysql  
  10. # chown -R mysql.mysql .  
  11. # scripts/mysql_install_db --user=mysql --datadir=/mydata/data  
  12. # chown -R root .  
  13. # cp support-files/my-large.cnf /etc/my.cnf  
  14.  
  15. # vim /etc/my.cnf  
  16. thread_concurrency = 2 
  17. datadir = /mydata/data  
  18.  
  19. # vim /etc/ld.so.conf,添加如下内容  
  20. /usr/local/mysql/bin  
  21. # ldconfig 


3)安装php-5.4.4
(1)安装依赖关系库
# yum -y groupinstall "X Software Development"
让编译的php支持mcrypt扩展,安装以下软件包,这里本机已经安装了,但是版本较低,所以升级安装
libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
# rpm -Uvh libmcrypt-*

(2)编译安装

  
  
  
  
  1. # tar xf php-5.4.4.tar.bz2  
  2. # cd php-5.4.4  
  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  --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  
  4. # make && make install 

(3)复制php配置文件
# cp php.ini-production /etc/php.ini

(4)修改http配置文件,使其支持php

  
  
  
  
  1. # vim /etc/httpd/httpd.conf  
  2. ……  
  3.    AddType application/x-httpd-php     .php  
  4.    AddType application/x-httpd-php-source      .phps  
  5. ……  
  6. <IfModule dir_module> 
  7.     DirectoryIndex index.php index.html  
  8. </IfModule> 
  9. ……  
  10. # service httpd restart  
  11. 添加测试页面  
  12. # cat /usr/local/apache/htdocs/index.php   
  13. <?php 
  14. phpinfo();  
  15. ?> 
  16.  

 

(5)测试访问查看apache和php整合是否成功:

4、139和140两台整合
1)192.168.80.139配置:
(1)将网站目录通过nfs共享出来

  
  
  
  
  1. # vim /etc/exports  
  2. /web/discuz     192.168.80.0/24(rw,no_root_squash)  
  3. # service nfs restart  

(2)配置mysql数据库,允许从其他机器登录

  
  
  
  
  1. mysql> GRANT ALL ON discuz.* TO root@'%.%.%.%' IDENTIFIED BY 'redhat';  
  2. mysql> FLUSH PRIVILEGES; 

2)192.168.80.140配置:
(1)测试与mysql连接是否成功:

  
  
  
  
  1. # cat /usr/local/apache/htdocs/index.php   
  2. <?php 
  3. $link=mysql_connect('192.168.80.139','root','redhat');  
  4. if ($link)  
  5.  echo "Sucess!!";  
  6. else  
  7.  echo "Failuser!!";  
  8. mysql_close();  
  9. ?> 

访问ok

(2)把网页文件挂载过来

  
  
  
  
  1. # mkdir /web/discuz -p  
  2. # mount -t nfs 192.168.80.139:/web/discuz /web/discuz/  

(3)修改http配置文件

  
  
  
  
  1. # vim /etc/httpd/httpd.conf  
  2. # DocumentRoot "/usr/local/apache/htdocs"  
  3. Include /etc/httpd/extra/httpd-vhosts.conf  
  4.  
  5. # vim /etc/httpd/extra/httpd-vhosts.conf   
  6. <VirtualHost *:80> 
  7.     DocumentRoot "/web/discuz"  
  8.     ServerName www.peace.com  
  9.     ErrorLog "logs/www.peace.com-error_log"  
  10.     CustomLog "logs/www.peace.com-access_log" common  
  11.         <Directory "/web/discuz"> 
  12.                 Options none  
  13.                 AllowOverride none  
  14.                 Require all granted  
  15.         </Directory> 
  16. </VirtualHost> 
  17.  
  18. # vim /etc/php.ini  
  19. short_open_tag = On 
  20. # service httpd restart  
  21.  

访问下已经有论坛了

(4)修改网页配置文件,指定Mysql数据库

  
  
  
  
  1. # vim /web/discuz/upload/config.inc.php  
  2. $dbhost = '192.168.80.139';   
  3. define('UC_DBHOST', '192.168.80.139');  
  4. define('UC_IP', '192.168.80.139');  

3)验证
访问
http://192.168.80.140/upload/和http://192.168.80.139/upload/都没有问题,之后使用域名验证


在两台上面都执行:
# tailf /usr/local/apache/logs/www.peace.com-access_log,动态监控日志,通过不同浏览器访问发现都有日志记录

 

   

   

 

你可能感兴趣的:(LAMP扩展,LAMP分离)