环境说明: CentOS 6.5最小化安装,安装相应的组件: [root@http ~]# yum groupinstall -y"Development tools" [root@mysql ~]# yum groupinstall -y"Server Platform Development" 准备三台主机: httpa: 192.168.1.217 搭建web服务器 安装php httpdb:192.168.1.218 搭建web服务器 安装php mysql:192.168.1.1.219 搭建Mysql、NFS服务器 主机C搭建NFS服务器共享/shared目录,主机A和B安装web(httpd)服务并挂载主机C共享的NFS共享目录作为其DocumentRoot,实现通过在浏览器中输入主机A和主机B的IP地址能够访问到相同的页面。 一、在192.168.1.219主机上搭建NFS服务器 1.安装NFS服务: [root@mysql ~]# yum -y install nfs-utils rpcbind nfs-utils :包括基本的NFS命令与监控程序 portmap :redhat6中用这个rpcbind! 2.建立共享目录,用户并授予权限: [root@mysql ~]# mkdir /shared [root@mysql ~]# ll -d /shared/ drwxr-xr-x. 2 root root 4096 Jul 13 22:19/shared/ [root@mysql ~]# [root@mysql ~]# groupadd nfsuser [root@mysql ~]# useradd -g nfsuser nfsuser [root@mysql ~]# id nfsuser uid=500(nfsuser) gid=500(nfsuser)groups=500(nfsuser) [root@mysql ~]# [root@mysql ~]# vim /etc/exports /shared 192.168.1.0/24(rw,all_squash,anonuid=500,anongid=500) "/etc/exports" 1L, 70Cwritten [root@mysql ~]# 说明: all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody); anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx); anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx); [root@mysql ~]# setfacl -m u:nfsuser:rwx /shared/ [root@mysql ~]# 3.启动NFS服务: [root@mysql ~]# chkconfig rpcbind on [root@mysql ~]# chkconfig nfs on [root@mysql ~]# service rpcbind start Starting rpcbind: [ OK ] [root@mysql ~]# service nfs start Starting NFS services: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] [root@mysql ~]# [root@mysql ~]# showmount -e localhost Export list for localhost: /shared 192.168.1.0/24 [root@mysql ~]# 二、在192.168.1.219主机上搭建MySQL服务器 1、创建mysql用户和mysql组 要想初始化mysql,需要有mysql用户和组。 [root@mysql ~]# groupadd -r -g 306 mysql [root@mysql ~]# useradd -g 306 -r -u 306 mysql [root@mysql ~]# id mysql uid=306(mysql) gid=306(mysql)groups=306(mysql) [root@mysql ~]# 2、创建mysql数据存放目录 这里练习就在根目录下创建/mydata/data目录: [root@mysql ~]# mkdir -pv /mydata/data mkdir: created directory `/mydata' mkdir: created directory `/mydata/data' [root@mysql ~]# ll -d /mydata/data/ drwxr-xr-x. 2 root root 4096 Jul 13 22:40/mydata/data/ [root@mysql ~]# mysql数据目录,需要把属主属组更改为mysql,权限更改为0-rwx: [root@mysql ~]# cd /mydata/ [root@mysql mydata]# ll total 4
drwxr-xr-x. 2 root root 4096 Jul 13 22:40data [root@mysql mydata]# chown -R mysql:mysql data/ [root@mysql mydata]# chmod o-rwx data/ [root@mysql mydata]# ll total 4 drwxr-x---. 2 mysql mysql 4096 Jul 13 22:40data [root@mysql mydata]# 3、解压并安装MySQL 5.6.24,使用的通用二进制格式的MySQL (1).通用二进制包是编译好的,直接解压就可以用,注意:mysql要求解压的包需在/usr/local目录下,并且目录名字必须是mysql。 [root@mysql bao]# ll total 304736 -rw-r--r--. 1 root root 312043744 Jul 1322:48 mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz [root@mysql bao]# tar -xfmysql-5.6.24-linux-glibc2.5-x86_64.tar.gz -C /usr/local/ [root@mysql bao]# cd /usr/local/ [root@mysql local]# ln -sv mysql-5.6.24-linux-glibc2.5-x86_64/mysql `mysql' ->`mysql-5.6.24-linux-glibc2.5-x86_64/' [root@mysql local]# ll mysql lrwxrwxrwx. 1 root root 35 Jul 13 22:50mysql -> mysql-5.6.24-linux-glibc2.5-x86_64/ [root@mysql local]# (2). 更改mysql目录中的文件的属主、属组为mysql用户和mysql组: [root@mysql mysql]# pwd /usr/local/mysql [root@mysql mysql]# chown -R mysql:mysql * [root@mysql mysql]# ll total 172 drwxr-xr-x. 2 mysql mysql 4096 Jul 13 22:49bin -rw-r--r--. 1 mysql mysql 17987 Mar 26 00:34COPYING drwxr-xr-x. 3 mysql mysql 4096 Jul 13 22:49data drwxr-xr-x. 2 mysql mysql 4096 Jul 13 22:49docs drwxr-xr-x. 3 mysql mysql 4096 Jul 13 22:49include -rw-r--r--. 1 mysql mysql 102986 Mar 26 00:35 INSTALL-BINARY drwxr-xr-x. 3 mysql mysql 4096 Jul 13 22:49lib drwxr-xr-x. 4 mysql mysql 4096 Jul 13 22:49man drwxr-xr-x. 10 mysql mysql 4096 Jul 13 22:49 mysql-test -rw-r--r--. 1 mysql mysql 2496 Mar 26 00:34README drwxr-xr-x. 2 mysql mysql 4096 Jul 13 22:49scripts drwxr-xr-x. 28 mysql mysql 4096 Jul 13 22:49 share drwxr-xr-x. 4 mysql mysql 4096 Jul 13 22:49sql-bench drwxr-xr-x. 2 mysql mysql 4096 Jul 13 22:49support-files [root@mysql mysql]# 4、初始化mysql数据库: 执行scripts目录下的脚本,该文件作用:mysql需要初始化,这个步骤就是完成初始化的,我们需要手动完成。 [root@mysql mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ Installing MySQL systemtables..../bin/mysqld: error while loading shared libraries: libaio.so.1:cannot open shared object file: No such file or directory [root@mysql mysql]# [root@mysql mysql]# yum install -y libaio [root@mysql mysql]# scripts/mysql_install_db --user=mysql--datadir=/mydata/data/ 为了安全,需要把mysql目录下文件属主更改回root用户: [root@mysql mysql]# chown -R root /usr/local/mysql/* 5、修改及配置MySQL服务脚本及配置文件 (1) 拷贝MySQL服务脚本: [root@mysql ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld [root@mysql ~]# chmod +x /etc/init.d/mysqld [root@mysql ~]# chkconfig --add mysqld [root@mysql ~]# chkconfig mysqld on [root@mysql ~]# (2)修改mysql配置文件datadir数据目录位置: [root@mysql ~]# vim /etc/my.cnf datadir=/mydata/data "/etc/my.cnf" 10L, 249Cwritten [root@mysql ~]# (3)启动mysql服务: [root@mysql ~]# service mysqld start Starting MySQL. SUCCESS! [root@mysql ~]# (4)mysql启动之后,会生成socket位置mysql.sock文件,修改其位置生成位置: [root@mysql ~]# ll -d /var/lib/mysql/mysql.sock srwxrwxrwx. 1 mysql mysql 0 Jul 13 22:59/var/lib/mysql/mysql.sock [root@mysql ~]# vim /etc/my.cnf socket=/tmp/mysql.sock "/etc/my.cnf" 10L, 239Cwritten [root@mysql ~]# 6、为mysql添加PATH环境变量 [root@make mysql]# vi /etc/profile.d/mysqld.sh export PATH=$PATH:/usr/local/mysql/bin "/etc/profile.d/mysqld.sh" [New]1L, 39C written [root@make mysql]# . /etc/profile.d/mysqld.sh [root@make mysql]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache/bin:/usr/local/mysql/bin [root@make mysql]# 7、为mysql添加man帮助及输出头文件和库文件 [root@make mysql]# vi /etc/man.config 49 MANPATH /usr/local/mysql/man "/etc/man.config" 154L, 4999Cwritten [root@make mysql]# [root@make mysql]# ln -sv /usr/local/mysql/include//usr/include/mysql `/usr/include/mysql' ->`/usr/local/mysql/include/' [root@make mysql]# [root@make mysql]# vi /etc/ld.so.conf.d/mysql.conf /usr/local/mysql/lib "/etc/ld.so.conf.d/mysql.conf"[New] 1L, 21C written [root@make mysql]# ldconfig -v 8、为mysql添加密码: [root@make ~]# mysqladmin -u root password '123456' Warning: Using a password on the commandline interface can be insecure. [root@make ~]# 说明: mysql-5.6会提示命令行使用密码不安全的。 至此,mysql安装完毕 三、在192.168.1.217和192.168.1.218主机上安装httpd和PHP: [root@httpa bao]# ll total 20452 -rw-r--r--. 1 root root 826885 Jul 13 23:06 apr-1.5.2.tar.bz2 -rw-r--r--. 1 root root 694427 Jul 13 23:07 apr-util-1.5.4.tar.bz2 -rw-r--r--. 1 root root 5054838 Jul 13 23:07 httpd-2.4.12.tar.bz2 -rw-r--r--. 1 root root 634589 Jul 13 23:07 libmcrypt-2.5.6.tar.gz -rw-r--r--. 1 root root 13724681 Jul 1323:07 php-5.6.8.tar.bz2 [root@httpa bao]# 1、在安装httpd之前需要先安装apr、apr-util以及pcre-devel等相关包。在编译安装httpd之前需要Development Tools开发工具集。具体步骤如下: (1)安装apr: [root@httpa bao]# tar xf apr-1.5.2.tar.bz2 [root@httpa bao]# cd apr-1.5.2 [root@httpa apr-1.5.2]# ./configure--prefix=/usr/local/apr [root@httpa apr-1.5.2]# make [root@httpa apr-1.5.2]# make install (2)安装apr-util: [root@httpa bao]# tar xf apr-util-1.5.4.tar.bz2 [root@httpa bao]# cd apr-util-1.5.4 [root@httpa apr-util-1.5.4]# ./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@httpa apr-util-1.5.4]# make [root@httpa apr-util-1.5.4]# make install (3)安装pcre-devel: [root@httpa ~]# yum install -y pcre-devel (4)安装httpd: [root@httpa bao]# mv apr-1.5.2 apr [root@httpa bao]# mv apr-util-1.5.4 apr-util [root@httpa bao]# tar xf httpd-2.4.12.tar.bz2 [root@httpa bao]# cp -r apr apr-util/root/bao/httpd-2.4.12/srclib/ [root@httpa httpd-2.4.12]# ./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-modules=most--enable-mpms-shared=all --with-mpm=event --with-included-apr [root@httpa httpd-2.4.12]# make [root@httpa httpd-2.4.12]# make install 说明: --prefix=/usr/local/apache :安装指定路径。 --sysconfdir=/etc/httpd :指定配置文件安装路径。 --enable-so :支持动态共享模块,如果没有此功能,php无法与apache一起工作,必须安。 --enable-ssl :启用ssl功能,不安装无法启用https。 --enable-rewrite :支持url重写。 --enable-cgi :支持cgi。 2、启动服务进行简单测试 [root@httpa ~]# /usr/local/apache/bin/apachectl start [root@httpa ~]# setenforce 0 [root@httpa ~]# service iptables stop iptables: Setting chains to policy ACCEPT:filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] [root@httpa ~]# [root@httpa ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 :::80 :::* LISTEN 51267/httpd [root@httpa ~]# 网页192.168.217显示It works! 3、为了更好的管理和使用httpd服务,可为其提供PATH环境变量和SysV风格的脚本。 (1) 提供PATH环境变量: [root@httpa ~]# vim /etc/profile.d/httpd.sh export PATH=$PATH:/usr/local/apache/bin
"/etc/profile.d/httpd.sh" [New]1L, 40C written [root@httpa ~]# . /etc/profile.d/httpd.sh [root@httpa ~]# (2) 提供SysV风格的脚本: [root@httpa ~]# vim /etc/init.d/httpd #!/bin/bash # # chkconfig: - 85 15 # description: Apache is a World Wide Webserver. It is used to serve \ . /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 swallowingup a pass-phrase prompt if # mod_ssl needs a pass-phrase from theuser. 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 mays not # work correctly with a thread-based MPM;notably PHP will refuse to start. # Path to the apachectl script, serverbinary, 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 sysntax 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|htlp|configtest|fullstatus) $apachectl $@ RETVAL=$? ;; *) echo "Usage: $prog {start|stop|restart|reload|status|help}" exit 1 ;; esac exit $RETVAL "/etc/rc.d/init.d/httpd" [New]85L, 2084C written [root@httpa ~]# chmod +x /etc/init.d/httpd [root@httpa ~]# chkconfig --add httpd [root@httpa ~]# chkconfig httpd on [root@httpa ~]# 4、更换pid进程文件存放目录: 每个进程启动后都会有个pid文件,编译安装httpd的pid文件在logs目录里面,系统进程一般pid文件都放在/var/run目录下,如果想更换pid进程文件存放目录,需要在主配置文件中加入PidFile "/var/run/httpd.pid"项,注意:编译安装默认没有该项,需要手工加入: [root@httpa ~]# vim /etc/httpd/httpd.conf 34 pidfile "/var/run/httpd.pid" [root@httpa ~]# netstat -lntp Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 :::80 :::* LISTEN 51563/httpd [root@httpa ~]# kill 51563 [root@httpa ~]# service httpd start [root@httpa ~]# ll -d /var/run/httpd.pid -rw-r--r--. 1 root root 6 Jul 13 23:43/var/run/httpd.pid [root@httpa ~]# 5、为httpd添加man帮助及输出头文件: (1) 为httpd添加man帮助: [root@http ~]# yum install -y man pages (最小化安装系统如果没有man手册需要安装) [root@http ~]# vim /etc/man.config 48 MANPATH /usr/local/apache/man [root@http ~]# man httpd (2) 输出头文件: [root@http ~]# ln -sv /usr/local/apache/include//usr/include/httpd `/usr/include/httpd' ->`/usr/local/apache/include/' [root@http ~]# 至此,httpd服务安装成功。 四、安装PHP 1、安装依赖包,解压并编译安装php-5.6.8: [root@httpa ~]# yum install libxml2-devel -y [root@httpa ~]# yum install bzip2-devel -y [root@httpa bao]# tar xf libmcrypt-2.5.6.tar.gz [root@httpa bao]# cd libmcrypt-2.5.6 [root@httpa libmcrypt-2.5.6]# ./configure [root@httpa libmcrypt-2.5.6]# make &&make install [root@httpa bao]# tar xf php-5.6.8.tar.bz2 [root@httpa bao]# cd php-5.6.8 [root@httpa php-5.6.8]# ./configure --prefix=/usr/local/php--with-mysql=mysqlnd --with-openssl --with-mysqli=mysqlnd --enable-mbstring--with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib--with-libxml-dir=/usr --enable-xml --enable-sockets --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d--with-bz2 --enable-maintainer-zts --with-apxs2=/usr/local/apache/bin/apxs-with-pdo-mysql=mysqlnd -with-freetype-dir [root@httpa php-5.6.8]# make [root@httpa php-5.6.8]# make install 2、给php提供配置文件: 在php安装程序中,有两个文件叫php.ini-development和php.ini-production: php.ini-development :开发用的配置文件。 php.ini-production :生产环境用的配置文件。 [root@httpa ~]# cp /root/bao/php-5.6.8/php.ini-production/etc/php.ini [root@httpa ~]# ll -d /etc/php.ini -rw-r--r--. 1 root root 72369 Jul 14 00:03/etc/php.ini [root@httpa ~]# 3、配置httpd,使其能够支持php (1) 首先能够让apache能够处理php结尾的页面文件,添加php类型: [root@httpa ~]# vim /etc/httpd/httpd.conf 381 AddType application/x-httpd-php .php 382 AddType application/x-httpd-php-source .phps (2) 支持php网页: 251 <IfModule dir_module> 252 DirectoryIndex index.php index.html 253 </IfModule> 4、重启httpd服务,测试PHP网页: [root@httpa ~]# vim /usr/local/apache/htdocs/index.php <?php phpinfo(); ?> "/usr/local/apache/htdocs/index.php"[New] 4L, 21C written [root@httpa ~]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] [root@httpa ~]# 浏览器测试是否出现PHP网页! 在192.168.1.218主机上安装apache和php,和192.168.1.217安装一样! 五、配置安装Discuz并验证 1.分别在192.168.1.217和192.168.1.218两台主机上挂载nfs共享目录: [root@httpa ~]# mount -t nfs 192.168.1.219:/shared /usr/local/apache/htdocs/ mount: wrong fs type, bad option, badsuperblock on 192.168.1.219:/shared, missing codepage or helper program, or other error (for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program) In some cases useful info is found in syslog - try dmesg | tail or so [root@httpa ~]# 需要安装nfs-utils: [root@httpa ~]# yum install -y nfs-utils
[root@httpa ~]# mount -t nfs 192.168.1.219:/shared/usr/local/apache/htdocs/ [root@httpa ~]# mount /dev/mapper/vg_httpa-lv_root on / type ext4(rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts(rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs(rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc typebinfmt_misc (rw) 192.168.1.219:/shared on/usr/local/apache/htdocs type nfs(rw,vers=4,addr=192.168.1.219,clientaddr=192.168.1.217) [root@httpa ~]# 2.在192.168.1.219主机上登陆mysql,建立Discunz数据库: mysql> create database duz; Query OK, 1 row affected (0.00 sec) mysql> 授权两台web服务器可以连接数据库: mysql> use mysql; Reading table information for completion oftable and column names You can turn off this feature to get aquicker startup with -A Database changed mysql> grant all privileges on *.* to'root'@'192.168.1.217' identified by '123456'; Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on *.* to'root'@'192.168.1.218' identified by '123456'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> 3.在192.168.1.219主机上解压Discunz到nfs共享目录/shared中: [root@mysql bao]# ll total 316940 -rw-r--r--. 1 root root 12490656 Jul 14 00:52Discuz_X3.2_SC_UTF8.zip [root@mysql bao]# unzip Discuz_X3.2_SC_UTF8.zip [root@mysql bao]# mkdir /shared/bbs [root@mysql bao]# cp -r upload/* /shared/bbs/ [root@mysql bao]# cd /shared/bbs/ [root@mysql bbs]# chmod -R 777 * 4.浏览器192.168.1.217/bbs安装: 数据库服务器:192.168.1.219 此时:192.168.1.217/bbs和192.168.1.218/bbs网页是一样的!
|