轻松构建基于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
- # tar xf apr-1.4.6.tar.bz2
- # cd apr-1.4.6
- # ./configure --prefix=/usr/local/apr
- # make && make install
(2) 编译安装apr-util
- # tar xf apr-util-1.5.2.tar.bz2
- # cd apr-util-1.5.2
- # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
- # make && make install
(3) httpd-2.4.4编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带,因此,找到并安装即可。
2、编译安装httpd-2.4.4
- # tar xf httpd-2.4.4.tar.bz2
- # cd httpd-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 && make install
注:请确保你的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
- #
- # 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
- RETVAL=$?
- echo $"not reloading due to configuration syntax error"
- failure $"not reloading $httpd due to configuration syntax error"
- else
- killproc -p ${pidfile} $httpd -HUP
- RETVAL=$?
- fi
- echo
- }
- # See how we were called.
- 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}"
- exit 1
- esac
- exit $RETVAL
- 而后为此脚本赋予执行权限:
- # chmod +x /etc/rc.d/init.d/httpd
- 加入服务列表:
- # chkconfig --add httpd
- # chkconfig --level 35 httpd on
- # service httpd restart
- 将httpd服务命令添加到环境变量中去:
- # vim /etc/profile.d/httpd.sh
- export PATH=$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
- # vgcreate myvg /dev/sda6 #创建VG
- # lvcreate -n mydata -L 5G myvg #创建LV
- # mke2fs -j /dev/myvg/mydata #格式化为ext3
- # mkdir /mydata -pv #创建挂载点
- # vim /etc/fstab #修改为开机挂载
- # mount -a #挂载至挂载点
- # mkdir /mydata/data #创建一个数据存储目录
- # chown -R mysql.mysql /mydata/data/ #修改存储目录的属主属组
- # chmod o-rx /mydata/data/ #修改其他用户的读写权限
2、新建用户以安全方式运行进程:
- # groupadd -r -g 306 mysql
- # useradd -g 306 -r -u 306 mysql
- # chown -R mysql.mysql /usr/local/mysql/* #修改安装文件的属主属组
- # chown -R mysql:mysql /mydata/data
3、安装并初始化mysql-5.5.28
- # tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local
- # cd /usr/local/
- # ln -sv mysql-5.5.28-linux2.6-i686 mysql
- # cd mysql
- # less INSTALL-BINARY #可以用来查看软件自带的安装说明
- # chown -R mysql:mysql .
- # scripts/mysql_install_db --user=mysql --datadir=/mydata/data
- # chown -R root .
4、为mysql提供主配置文件:
- # cd /usr/local/mysql
- # cp support-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
- # cp support-files/mysql.server /etc/rc.d/init.d/mysqld
- # chmod +x /etc/rc.d/init.d/mysqld
添加至服务列表:
- # chkconfig --add mysqld
- # chkconfig mysqld on
而后就可以启动服务测试使用了。
为了使用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
- # tar xf php-5.4.13.tar.bz2
- # cd 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
# 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、添加如下二行
- AddType application/x-httpd-php .php
- AddType application/x-httpd-php-source .phps
- 2、定位至DirectoryIndex index.html
- 修改为:
- DirectoryIndex index.php index.html
而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。
- # service httpd restart
- # cd /usr/local/apache/htdocs/ #切换到httpd的网页存放目录
- # mv index.html index.php
- # vim index.php
- <html><body><h1>I HAVE A DREAM,THIS IS WORK DAYS !</h1></body></html>
- <?php
- $conn=mysql_connect('localhost','root','');
- if ($conn)
- echo "Chenggong...";
- else
- echo "Shibai...";
- ?>
试脚本,用来测试连接数据库是否成功!
五、安装xcache,为php加速:
1、安装
- # tar xf xcache-3.0.1.tar.gz
- # cd xcache-3.0.1
- # /usr/local/php/bin/phpize #加载扩展项
- # ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
- # make && make install
安装结束时,会出现类似如下行:
- Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
2、编辑php.ini,整合php和xcache:
首先将xcache提供的样例配置导入php.ini
- # mkdir /etc/php.d
- # cp xcache.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、在主服务器上做:
- # service portmap status #首先要确保portmap是开启状态
- # service nfs start #启动nfs服务
- # rpcinfo -p localhost #查看所有rpc进程所监听的端口
- # vim /etc/exports #将/var/www目录设置为共享
- /var/www 172.16.0.0/16(rw,no_root_squash)
- /usr/local/mysql 172.16.0.0/16(rw,no_root_squash)
2、在辅服务器上做
- # mount -t nfs 172.16.12.22:/var/www /usr/local/apache/htdocs/ #将网络共享挂载
- # mkdir /usr/local/mysql #创建目录
- # mount -t nfs 172.16.12.22:/usr/local/mysql /usr/local/mysql
- # vim /etc/fstab #添加其为开机挂载
- 172.16.12.22:/var/www /usr/local/apache/htdocs/ nfs defaults,_rnetdev 0 0
七、安装辅助服务器
1、安装apache服务器
在第一步的时候已经说过了,这里就不在复述。
2、安装php模块和xcache加速
这一步在第三步骤中讲述过,大家可以查看一下
八、安装Discuz论坛
1、在主服务器上操作
- # vim /etc/httpd/httpd.conf #指定网页存放目录
- DocumentRoot "/var/www"
- <Directory "/var/www">
- # unzip Discuz_X2.5_SC_GBK.zip #解压软件包
- # cp ./upload/* /var/www/ -a #将解压后的文件放到网页目录中
- # mysqladmin -uroot -p password 'redhat' #为数据库添加密码
登录数据库为root用户添加远程权限:
- mysql> grant all privileges on *.* to root@'%' identified by 'redhat';
在安装页面填写数据库密码
将数据库的连接方式由localhost修改为172.16.12.22
给论坛文件添加权限
- # chmod o+rw ./config
- # chmod o+rw ./data
- # chmod o+rw ./data/cache
- # chmod o+rw ./data/avatar
- # chmod o+rw ./data/plugindata
- # chmod o+rw ./data/download
- # chmod o+rw ./data/addonmd5
- # chmod o+rw ./data/template
- # chmod o+rw ./data/threadcache
- # chmod o+rw ./data/attachment
- # chmod o+rw ./data/attachment/album
- # chmod o+rw ./data/attachment/forum
- # chmod o+rw ./data/attachment/group
- # chmod o+rw ./data/log
- # chmod o+rw ./uc_client/data/cache
- # chmod o+rw ./uc_server/data
- # chmod o+rw ./uc_server/data/cache
- # chmod o+rw ./uc_server/data/avatar
- # chmod o+rw ./uc_server/data/backup
- # chmod o+rw ./uc_server/data/logs
- # chmod o+rw ./uc_server/data/tmp
- # chmod o+rw ./uc_server/data/view
之后选择下一步安装就可以了:最终我们看一下效果图:
如此简易的基于NFS共享的LAMP论坛就搭建完成了,如果朋友们还想针对论坛实现iptables管理控制制作出DMZ的非军事化区域的话,可以先自行摸索,我们会在之后的博客中给出参考!
PS:写的比较简陋,如果有什么BUG请留言,大家一起学习进步!