LAMP+DNS+nfs+Samba实现discuz论坛
一、测试环境
操作系统为:CentOS 6.6,yum源使用光盘镜像配置
DNS服务器:192.168.1.10;A记录www.bengbengtu.com分别指向后端的2台web服务器的ip地址
Web1服务器:192.168.1.11;安装-httpd2.4.16,php-5.6.13,发布的discuz论坛是共享samba的discuz目录
Web2服务器:192.168.1.12;配置同web1服务器
Mysql服务器:192.168.1.13;安装mariadb-5.5.43的通用二进制包,datadir使用nfs共享的mysql_data
目录
nfs+samba服务器:192.168.1.14;nfs负责为mysql提供datadir,samba负责为web1和web2提供discuz论坛
配置顺序:DNS服务器--->nfs+samba服务器---> mysql服务器--->web服务器
注意:为确保不会影响服务器的访问,请将iptables服务关闭(了解防火墙规则的同学可忽略~)
使用的软件安装包
二、DNS服务器部署过程
2.1、准备工作
[[email protected] ~]# hostname dns //改主机名 [[email protected] ~]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=dns //使主机名永久有效 [[email protected] ~]# getenforce Enforcing [[email protected] ~]# setenforce 0 [[email protected] ~]# vim /etc/sysconfig/selinux //关闭selinux SELINUX=permissive
2.2、安装bind并配置
[[email protected] named]# yum install -y bind bind-utils //安装dns [[email protected] ~]# vim /etc/named.conf //修改dns配置文件 [[email protected] ~]# cd /var/named/ [[email protected] named]#vim bengbengtu.com.zone //建立dns的正向区域解析文件 [[email protected] named]# cp bengbengtu.com.zone 192.168.1.in-addr.arpa.zone [[email protected] named]#vim 192.168.1.in-addr.arpa.zone //建立dns的反向区域解析文件 [[email protected] named]# chown root.named bengbengtu.com.zone 192.168.1.in-addr.arpa.zone //改属主属组
/etc/named.conf中相关设置
options { listen-on port 53 { 192.168.1.10; }; //监听地址和端口 directory "/var/named"; //dns数据目录 allow-query { 192.168.1.0/24; }; //允许什么ip地址查询 recursion yes; //是否允许递归 }; zone "bengbengtu.com" { //定义正向区域 type master; file "bengbengtu.com.zone"; }; zone "1.168.192.in-addr.arpa" { //定义反向区域 type master; file "192.168.1.in-addr.arpa.zone"; //定义解析文件 };
bengbengtu.com.zone---正向区域解析文件
$TTL 1D //域名解析记录在DNS服务器上缓存时间 @ IN SOA @ admin.bengbengtu.com. ( 2015092501 //版本号 1H //刷新时间,同步时使用 5M //重试时间 3D //过期时间,定义解析缓存时间 1D ) //否定答案统一回应时间 IN NS ns1.bengbengtu.com. //定义ns记录,名称服务器 ns1 IN A 192.168.1.10 //名称服务器的A记录 www IN A 192.168.1.11 //同一主机名指定不同的A记录 www IN A 192.168.1.12 web IN CNAME www //web的别名设置为www,及客户端访问web同www
192.168.1.in-addr.arpa.zone---反向区域解析文件
$TTL 1D @ IN SOA 1.168.192.in-addr.arpa. admin.bengbengtu.com. ( 2015092501 //版本号 1H //刷新时间,同步时使用 5M //重试时间 3D //过期时间,定义解析缓存时间 1D ) //否定答案统一回应时间 IN NS ns1.bengbengtu.com. 10 IN PTR ns1 //Pointer Record,指针记录,ip解析成名称 11 IN PTR www 12 IN PTR www
2.3、检查bind语法并启动
[[email protected] named]# named-checkzone bengbengtu.com bengbengtu.com.zone zone bengbengtu.com/IN: loaded serial 2015092501 OK [[email protected] named]# named-checkzone 192.168.1 192.168.1.in-addr.arpa.zone zone 192.168.1/IN: loaded serial 2015092501 OK [[email protected] named]# chkconfig named on
三、nfs+samba服务器
3.1、介绍
(1)nfs--网络文件系统
FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
(2)samba--Server Messages Block,信息服务块
SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
3.2、准备工作,安装nfs和samba
准备2块磁盘,/dev/sdb给nfs使用,/dev/sdc给samba使用
[[email protected] ~]# hostname nfs_samba [[email protected] ~]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=nfs_samba [[email protected]_samba ~]# vim /etc/sysconfig/selinux SELINUX=permissive [[email protected]_samba ~]# setenforce 0 [[email protected]_samba ~]# yum install nfs-utils rpcbind samba //安装nfs,samba相关软件包 [[email protected]_samba ~]# yum install lvm2 -y //安装lvm2
3.3、nfs设置 -- 使用lvm,以方便mysql的数据目录扩展
[[email protected]_samba ~]# fdisk /dev/sdb //给/dev/sdb分区 [[email protected]_samba ~]# partx -a /dev/sdb //让内核重读 [[email protected]_samba ~]# pvcreate /dev/sdb1 //创建物理卷 [[email protected]_samba ~]# vgcreate vg_mysql /dev/sdb1 //创建卷组,并命名为vg_mysql Volume group "vg_mysql" successfully created [[email protected]_samba ~]# lvcreate -L 30G -n lv_mysql vg_mysql //创建逻辑卷,并命名为lv_mysql Logical volume "lv_mysql" created
3.4、samba设置 -- 使用lvm,以方便共享目录扩展
[[email protected]_samba ~]# fdisk /dev/sdc //给/dev/sdc分区 [[email protected]_samba ~]# partx -a /dev/sdc //让内核重读 [[email protected]_samba ~]# pvcreate /dev/sdc1 //创建物理卷 Physical volume "/dev/sdc1" successfully created [[email protected]_samba ~]# vgcreate vg_dz /dev/sdc1 //创建卷组,并命名为vg_dz Volume group "vg_dz" successfully created [[email protected]_samba ~]# lvcreate -L 10G -n lv_dz vg_dz //创建逻辑卷,并命名为lv_dz Logical volume "lv_dz" created
3.5、将创建的逻辑分区格式化,并挂载至nfs和samba的共享目录
[[email protected]_samba ~]# mkfs.ext4 /dev/vg_mysql/lv_mysql //格式化lv_mysql [[email protected]_samba ~]# blkid /dev/vg_mysql/lv_mysql //查看lv_mysql的UUID /dev/vg_mysql/lv_mysql: UUID="c085f81a-af72-4688-b9f0-08a59fc83ac7" TYPE="ext4" [[email protected]_samba ~]# mkdir /mysql_data //建立nfs要使用的目录 [[email protected]_samba ~]# mkfs.ext4 /dev/vg_dz/lv_dz //格式化lv_dz [[email protected]_samba ~]# blkid /dev/vg_dz/lv_dz //查看lv_dz的UUID /dev/vg_dz/lv_dz: UUID="854d5997-e2b6-48fb-b0d4-2e6d98e1055c" TYPE="ext4" [[email protected]_samba ~]# mkdir /discuz //建立samba要共享的目录 [[email protected]_samba ~]# vim /etc/fstab //挂载
3.6、配置nfs,将mysql_data目录作为mysql的datadir使用
[[email protected]_samba ~]# vim /etc/exports //设置nfs的共享资源 /mysql_data 192.168.1.13(sync,rw,no_root_squash) [[email protected]_samba ~]# service rpcbind start [[email protected]_samba ~]# service nfs start [[email protected]_samba ~]# showmount -e 192.168.1.14 //查看nfs服务器的所有共享资源 Export list for 192.168.1.14: /mysql_data 192.168.1.13
3.7、配置samba,将discuz论坛的相关文件放到discuz目录下
[[email protected]_samba ~]# mv upload/* /discuz/ //将discuz解压后的upload目录下所有内容复制到samba的共享目录中 [[email protected]_samba ~]# vim /etc/samba/smb.conf //编辑samba的配置文件修改如下内容 security = share //安全设置为share [discuz] comment = discuz path = /discuz public = yes readonly = no browseable = yes writable = yes guest ok = yes //使用来宾 [[email protected]_samba ~]# chkconfig nmb on [[email protected]_samba ~]# chkconfig smb on [[email protected]_samba ~]# service smb start Starting SMB services: [ OK ] [[email protected]_samba ~]# service nmb start Starting NMB services: [ OK ] [[email protected]_samba ~]# chmod -R 777 /discuz/ //修改discuz目录权限 [[email protected]_samba discuz]# cp config/config_global_default.php config/config_global.php [[email protected]_samba discuz]# mv config/config_ucenter_default.php config/config_ucenter.php
四、mysql服务器
4.1、准备工作
[[email protected] ~]# hostname mysql [[email protected] ~]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=mysql [[email protected] ~]# vim /etc/sysconfig/selinux SELINUX=permissive [[email protected] ~]# setenforce 0 [[email protected] ~]# yum install -y nfs-utils rpcbind //安装nfs相关软件包 [[email protected] ~]# chkconfig nfs on [[email protected] ~]# chkconfig rpcbind on [[email protected] ~]# service rpcbind start [[email protected] ~]# service nfs start //启动 [[email protected] ~]# showmount -e 192.168.1.14 Export list for 192.168.1.14: /mysql_data 192.168.1.13 [[email protected] ~]# mkdir -p /mydata [[email protected] ~]# mount -t nfs 192.168.1.14:/mysql_data /mydata //测试 [[email protected] ~]# vim /etc/rc.local mount -t nfs 192.168.1.14:/mysql_data /mydata
4.2、安装配置mysql
[[email protected] ~]# groupadd -r mysql [[email protected] ~]# useradd -r -g mysql -d /mydata/ -s /sbin/nologin mysql [[email protected] ~]# tar xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/ [[email protected] ~]# cd /usr/local/ [[email protected] local]# ln -sv mariadb-5.5.43-linux-x86_64 mysql `mysql' -> `mariadb-5.5.43-linux-x86_64' [[email protected] local]# cd mysql/ [[email protected] mysql]# chown root.mysql ./* 配置mysql [[email protected] mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/ //初始化 [[email protected] mysql]# cp support-files/my-large.cnf /etc/my.cnf //提供配置文件 cp: overwrite `/etc/my.cnf'? y [[email protected] mysql]# vim /etc/my.cnf thread_concurrency = 4 datadir=/mydata innodb_file_per_table=on skip_name_resolve=on [[email protected] mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld //提供mysqld服务脚本 [[email protected] mysql]# chmod +x /etc/rc.d/init.d/mysqld [[email protected] mysql]# chkconfig --add mysqld [[email protected] mysql]# chkconfig mysqld on 导出mysql的二进制程序目录 [[email protected] mysql]# vim /etc/profile.d/mysql.sh export PATH=$PATH:/usr/local/mysql/bin [[email protected] mysql]# . /etc/profile.d/mysql.sh 导出头文件 [[email protected] ~]# ln -sv /usr/local/mysql/include /usr/local/include/mysql 导出库文件 [[email protected] ~]# vim /etc/ld.so.conf.d/mysql-5.5.conf /usr/local/mysql/lib/ 导出man手册 [[email protected] ~]# vim /etc/man.config MANPATH /usr/local/mysql/man 授权root用户在'192.168.1.%'访问mysql数据库; MariaDB [(none)]> grant all on *.* to 'root'@'192.168.1.%' identified by '123456'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.02 sec)
4.3、测试出现的问题:mysql设置了开机启动,但是不能自动运行,因为将mysql挂载datadir的命令放在了rc.local中执行,而rc.sysinit会先执行,因此就出现了mysql挂载不上datadir,启动不了的情况出现,解决办法
五、web1服务器
5.1、准备工作
[[email protected] ~]# hostname web1 [[email protected] ~]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=web1 [[email protected] ~]# getenforce Enforcing [[email protected] ~]# setenforce 0 [[email protected] ~]# vim /etc/sysconfig/selinux SELINUX=permissive
5.2、安装httpd-2.4.16;需先安装新版的apr和apr-util
apr [[email protected] ~]# tar xf apr-1.5.2.tar.bz2 [[email protected] ~]# cd apr-1.5.2 [[email protected] apr-1.5.2]# ./configure --prefix=/usr/local/apr [[email protected] apr-1.5.2]# make && make install apr-util [[email protected] ~]# tar xf apr-util-1.5.4.tar.bz2 [[email protected] ~]# cd apr-util-1.5.4 [[email protected] apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ [[email protected] apr-util-1.5.4]# make && make install httpd -2.4.16 [[email protected] ~]# yum install pcre-devel [[email protected] ~]# cd httpd-2.4.16 [[email protected] httpd-2.4.16]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre --with-ssl --with-z --with-mpm=event [[email protected] httpd-2.4.16]# make && make install [[email protected] ~]# vim /etc/httpd24/httpd.conf ServerName 192.168.1.11:80 [[email protected] ~]# vim /etc/init.d/httpd24 //提供apache服务脚本 [[email protected] ~]# chmod +x /etc/init.d/httpd24 [[email protected] ~]# echo "web1.bengbengtu.com" > /usr/local/apache/htdocs/index.html //测试 [[email protected] ~]# chkconfig --add httpd24 [[email protected] ~]# chkconfig httpd24 on [[email protected] ~]# service httpd24 start Starting httpd: [ OK ]
5.3、安装php-5.6.13,以php-fpm方式结合apache工作
[[email protected] ~]# yum groupinstall -y "Development tools" "Server Platform Development" [[email protected] ~]# yum localinstall libmcrypt-2.5.7-1.2.el6.rf.x86_64.rpm -y [[email protected] ~]# yum localinstall libmcrypt-devel-2.5.7-1.2.el6.rf.x86_64.rpm -y [[email protected] ~]# yum -y install bzip2-devel libxml2-devel [[email protected] ~]# yum install xz -y [[email protected] ~]# xz -d php-5.6.13.tar.xz [[email protected] ~]# tar xf php-5.6.13.tar [[email protected] ~]# cd php-5.6.13 [[email protected] php-5.6.13]# mkdir /etc/php{,.d} [[email protected] php-5.6.13]# ./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 --enable-fpm --with-mcrypt --with-config-file-path=/etc/php --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd [[email protected] php-5.6.13]# make -j 4 [[email protected] php-5.6.13]# make install 为php-fpm提供配置文件: # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 编辑php-fpm的配置文件: # vim /usr/local/php/etc/php-fpm.conf 配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行): listen = 192.168.1.11:9000 pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 5 pid = /usr/local/php/var/run/php-fpm.pid [[email protected] php-5.6.13]# cp php.ini-production /etc/php/php.ini [[email protected] php-5.6.13]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm //提供php-fpm服务脚本 接下来就可以启动php-fpm了: # service php-fpm start 配置httpd-2.4 1、启用httpd的相关模块 在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载 # vim /etc/httpd24/httpd.conf LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 2、添加如下二行 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 3、定位至DirectoryIndex index.html 修改为: DirectoryIndex index.php index.html 4、配置支持使用fcgi ProxyRequests Off //关闭正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.11:9000/usr/local/apache/htdocs/$1 //把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://192.168.1.11:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。
5.4、安装xcache为php加速
[[email protected] ~]# tar xf xcache-3.2.0.tar.gz [[email protected] ~]# cd xcache-3.2.0 [[email protected] xcache-3.2.0]# /usr/local/php/bin/phpize Configuring for: PHP Api Version: 20131106 Zend Module Api No: 20131226 Zend Extension Api No: 220131226 [[email protected] xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config [[email protected] xcache-3.2.0]#make && make install [[email protected]]# cp xcache.ini /etc/php.d/ [[email protected] xcache-3.2.0]# vim /etc/php.d/xcache.ini
5.5、测试php,mysql,xcache是否正常工作
5.6、安装discuz
将discuz目录关联至httpd的url中
samba共享目录discuz至/usr/local/apache/htdocs/dz
[[email protected] ~]# mkdir /usr/local/apache/htdocs/dz [[email protected] ~]# yum install cifs-utils [[email protected] ~]# mount -t cifs //192.168.1.14/discuz /usr/local/apache/htdocs/dz -o guest#挂载discuz目录
安装discuz过程如下
discuz论坛测试完成!!
六、web2的安装过程同web1,接下来测试web1和web2是否能够正常解析www.bengbengtu.com,有1个服务器出现问题,另一个服务器还可以正常工作!
1、停掉web1服务器(192.168.1.11)的httpd服务,截图
2、启动web1服务器的httpd服务,截图
至此,LAMP+nfs+Samba实现discuz论坛的功能已实现!!
转载于:https://blog.51cto.com/bengbengtu/1698540